我所要做的就是运行一个特定的脚本,作为一个在/ etc / passwd中指定了nologin / false shell的特殊用户。
我将以root用户身份运行脚本,并以另一个用户身份运行。 运行:〜#su -c“/ bin / touch / tmp / test”testuser可以工作,但是我需要一个有效的testuser shell。 我知道我可以使用passwd -d testuser来禁用密码,并将shell保持为/ bin / bash这样可以保护一点点,但是我需要使用nologin / false shell。
基本上我所需要的是crontab当我们将作业设置为以特定用户身份运行时所做的事情,而不pipe这个人是否有nologin / false shell。
PS我发现这个线程作为一个nologin用户执行一个命令,但我不知道如何“连接”命令su -s / bin / sh $用户到我需要运行的脚本
谢谢
您可以使用-s开关来运行特定的shell
su -s /bin/bash -c '/path/to/your/script' testuser
(如果testuser
是无密码的用户,则追加sudo
到上面。)
你可以用sudo -u
来完成,如果你已经安装的话:
# whoami root # sudo -u apache whoami apache # getent passwd apache apache:x:48:48:Apache:/var/www:/sbin/nologin
通过提供脚本作为执行到/ bin / sh的参数:
su -s "/bin/sh /your/script/location" username
刚刚意识到:
su -s“/ bin / bash”-c“/ bin / touch / tmp / testuser”testuser
也许有更好的办法?
使用sudo -u指定用户。 同样使用-i标志来设置目标用户的环境variables。
sudo -i -u user command