以nologin shell的用户身份运行脚本

我所要做的就是运行一个特定的脚本,作为一个在/ 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