如何以具有 /usr/sbin/nologin 作为 Shell 的用户身份运行命令?

如何以具有 /usr/sbin/nologin 作为 Shell 的用户身份运行命令?

nologin/false我需要做的就是以具有中指示的 shell 的特定用户的身份运行特定脚本/etc/passwd

我将以 root 身份运行该脚本,而这应该以另一个用户身份运行。运行:

~# su -c "/bin/touch /tmp/test" testuser

可以,但我需要一个有效的 shell 供 testuser 使用。我知道我可以使用 禁用密码,passwd -d testuser然后保留 shell,/bin/bash这样会安全一点,但我需要有nologin/falseshell。

基本上我需要的是crontab当我们将作业设置为以特定用户身份运行时会发生什么,无论该作业是否具有nologin/falseshell。

附言:我发现了这个帖子以 nologin 用户身份执行命令,但我不知道如何将concatenate命令发送su -s /bin/sh $user到我需要运行的脚本。

答案1

您可以使用 -s 开关来 su 运行特定的 shell

su -s /bin/bash -c '/path/to/your/script' testuser

(如果是无密码用户,则添加sudo到上述内容中。)testuser

答案2

sudo -u如果你已经安装了它,你可以这样做:

# whoami
root
# sudo -u apache whoami
apache
# getent passwd apache
apache:x:48:48:Apache:/var/www:/sbin/nologin

答案3

通过将脚本作为参数提供给 /bin/sh 来执行:

su -s "/bin/sh /your/script/location" username

答案4

实际上,最好的方法是通过运行用户

有关详细信息,请参阅手册页

正如开发人员在他的博客中所说,这个工具就是用来处理这种情况的

每当服务以 root 身份运行并想要使用 shell 更改 UID 时,它都应该使用 runuser。

http://danwalsh.livejournal.com/55588.html

我已经在很多宫殿里发布了这个答案,如果你觉得这很烦人,请原谅我

相关内容