nologin/false
我需要做的就是以具有中指示的 shell 的特定用户的身份运行特定脚本/etc/passwd
。
我将以 root 身份运行该脚本,而这应该以另一个用户身份运行。运行:
~# su -c "/bin/touch /tmp/test" testuser
可以,但我需要一个有效的 shell 供 testuser 使用。我知道我可以使用 禁用密码,passwd -d testuser
然后保留 shell,/bin/bash
这样会安全一点,但我需要有nologin/false
shell。
基本上我需要的是crontab
当我们将作业设置为以特定用户身份运行时会发生什么,无论该作业是否具有nologin/false
shell。
附言:我发现了这个帖子以 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
我已经在很多宫殿里发布了这个答案,如果你觉得这很烦人,请原谅我