Comment puis-je exécuter une commande en tant qu'utilisateur différent à partir de la racine de la tâche cron?
Me semble être coincé entre un NFS limitation et un Cron limitation.
Donc j'ai de la racine cron (sur RHEL5) l'exécution d'un script shell qui, entre autres choses, les besoins de rsync certains fichiers sur un montage NFS. Et les fichiers sur le montage NFS sont la propriété de l'utilisateur apache avec le mode de 700, de sorte que seul l'utilisateur apache pouvez exécuter la commande rsync -- exécute en tant que root donne une erreur d'autorisation (NFS être un cas rare, apparemment, où l'utilisateur root n'est pas tout-puissant?)
Quand je veux juste faire la rsync en main, je peux utiliser "sudo -u apache rsync ..." Mais pas de sudo workie dans cron-il est dit "sudo: désolé, vous devez disposer d'un terminal lancer la commande sudo".
Je ne veux pas exécuter le script en entier comme apache (c'est à dire à partir de apache crontab) parce que les autres parties du script ne nécessite racine, c'est juste que l'on commande qui doit fonctionner comme apache. Et je préfère vraiment ne pas changer le mode sur les fichiers, comme qui impliquent des changements significatifs à d'autres applications.
Il doit bien y avoir un moyen pour accomplir "sudo -u apache", à partir de cron??
merci!
rob
- Pourraient être mieux servis par le déplacement de ce de SuperUser.com.
- C'est une vieille question, mais toujours trouvé assez haute à la recherche de rangs, et aucune des réponses de l'adresse de pourquoi les permissions root n'a pas d'application pour le montage NFS. Pour quelqu'un d'autre trébuchant sur ce, la raison en est root_squash. Ce blog a pas mal de raisons pour lesquelles cette option est nécessaire et généralement définie par défaut. fullyautolinux.blogspot.com/2015/11/...
Vous devez vous connecter pour publier un commentaire.
su --shell=/bin/bash --session-command="/chemin/vers/commande -argument=quelque chose" nom d'utilisateur &
Fonctionne pour moi (CentOS)
export TERM=xterm;
avant ma commande à l'intérieur de la--session-command
variable. Donc, j'ai fini avecsu --shell=/bin/bash --session-command="export TERM=xterm; /path/to/command -argument=something" username &
su
commande ne prend pas en charge la--session-command
option.su --shell=/bin/bash --session-command="/path/to/command -argument=something" username
Utilisation
su
au lieu desudo
:-s
switch (par exemple-s /bin/sh
)? Au moins sur Ubuntu ce qui semble pour vous aider, si l'utilisateur en question n'est pas valide shell dans /etc/passwd.Par défaut sur RHEL,
sudo
n'est pas autorisé pour les processus sans un terminal (tty). Définie dans/etc/sudoers
.Vous pouvez autoriser l'ats-moins
sudo
pour un utilisateur en particulier avec ces instructions:https://serverfault.com/questions/111064/sudoers-how-to-disable-requiretty-per-user
le placer dans /etc/crontab et spécifier apache au lieu de root dans le champ utilisateur
Si vous souhaitez activer en permanence vous à la tripoter de partout comme apache:
cela vous permet de changer le shell de l'utilisateur