代码之家  ›  专栏  ›  技术社区  ›  rob

如何从根cronjob以不同的用户身份运行命令?

  •  21
  • rob  · 技术社区  · 17 年前

    我似乎被困在nfs限制和cron限制之间。

    所以我让根cron(在rhel5上)运行一个shell脚本,其中需要通过nfs装载来rsync一些文件。NFS挂载的文件是由Apache用户拥有的模式700,所以只有Apache用户可以运行RSyc命令——以root身份运行会产生权限错误(NFS是一种罕见的情况,很明显,根用户不是全部强大的?)

    当我只想手动运行RSyc时,我可以使用“Sudo-u Apache RSyc……”,但是SUDO在Con中没有工作-它说“SUDO:对不起,您必须有一个TTY来运行SUDO”。

    我不想将整个脚本作为apache运行(即从apache的crontab运行),因为脚本的其他部分确实需要根目录——只需要一个命令作为apache运行。我真的不想更改文件的模式,因为这将涉及到对其他应用程序的重大更改。

    一定有办法从cron那里完成“sudo-u apache”??

    谢谢! 抢劫

    5 回复  |  直到 14 年前
        1
  •  17
  •   Kitty    15 年前

    su--shell=/bin/bash--session command=“/path/to/command-argument=something”用户名&

    为我工作(centos)

        2
  •  7
  •   Jukka Matilainen    17 年前

    使用 su 而不是 sudo :

    su -c "rsync ..." apache
    
        3
  •  3
  •   Community Mohan Dere    9 年前

    默认情况下在RHEL上, sudo 不允许用于没有终端(TTY)的进程。就这样定了 /etc/sudoers .

    你可以少用TTY 苏多 对于具有以下说明的特定用户:

    https://serverfault.com/questions/111064/sudoers-how-to-disable-requiretty-per-user

        4
  •  1
  •   Robert Foreman    16 年前

    将其放在/etc/crontab中,并在用户字段中指定apache而不是root

        5
  •  1
  •   Jaap Stewie    14 年前

    如果您想永久地让自己成为apache的一员:

    chsh apache
    

    这允许您为用户更改shell