nologin/false
中指定了/etc/passwd
shell。我将以root用户身份运行脚本,并且应该以其他用户身份运行。
运行:
~# su -c "/bin/touch /tmp/test" testuser
可以工作,但是我需要测试用户的有效外壳程序。
我知道我可以使用
passwd -d testuser
禁用密码并保留shell到/bin/bash
的这种方式可以确保一点安全,但是我需要nologin/false
的外壳。基本上我需要的是
crontab
在将作业设置为以特定用户身份运行时所执行的操作,无论该用户具有nologin/false
shell。ps我发现此线程以nologin用户的身份执行命令,但我不知道如何
concatenate
命令su -s /bin/sh $user
到我需要运行的脚本。#1 楼
您可以使用-s开关来运行特定的shellsu -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
评论
如何将参数传递给sudo -u apache whoami?
– CMCDragonkai
15年5月18日在10:11
@CMCDragonkai命令后的任何参数都将被传递。您可以将其视为“ sudo [-u apache] [whoami
–Handyman5
2015年5月19日下午6:27
我认为使用sudo -u可能不是以nologin用户身份运行命令的好主意,因为它在实际调用命令的环境中公开了SUDO_USER。也许我只是想得太多。
–喵
16年4月30日在15:36
#3 楼
通过提供脚本作为要执行到/ bin / sh的参数:su -s "/bin/sh /your/script/location" username
#4 楼
刚刚意识到:su -s“ / bin / bash” -c“ / bin / touch / tmp / testuser” testuser
也许还有更好的方法吗? br />
#5 楼
实际上,最好的方法是通过runuser参阅手册页以获取详细信息
该工具用于处理开发人员在其运行时所说的情况
每当服务运行作为root并想使用shell更改UID,它应该使用runuser。发现这个烦人
评论
请不要发布仅链接的答案,以防止链接腐烂。而是,将链接中最相关的信息添加到您的答案中,或者将链接发布为评论而不是答案。有关更多信息,请参阅此serverfault.com/help/how-to-answer帮助中心文章。
– Federico Galli
18年2月16日在10:01
@FedericoGalli已经添加了最相关的信息,无需复制和粘贴用法,手册页提供了足够的信息
– Y00
18年2月20日在8:27
#6 楼
使用sudo -u指定用户。还可以使用-i标志来设置目标用户的环境变量。sudo -i -u user command
评论
这使该帐户当前不可用。
– knocte
17年4月19日在9:43
#7 楼
将su命令与shell -s和-c命令一起使用。如下所示 su exec -l -c '/bin/bash /etc/update_conf.sh' -s /bin/bash
评论
这正是最高评分答案的解决方案。
–杰拉德·施耐德(Gerald Schneider)
19-09-17在6:55
评论
如果su是root:root -rwsr-x ---怎么办?
–Patryk
2015年3月10日,0:24
如果用户没有密码怎么办?
– CMCDragonkai
15年5月18日在10:12
@Wesley发现您需要root用户才能为无密码用户运行该命令。
– CMCDragonkai
15年8月16日在10:53
@lain,如果假定用户没有外壳,则与命令相关的进程不应是bash进程的子进程。因此,您还应该使用exec将shell替换为脚本。而且,如果您希望使脚本成为init的子代,则只需使用&,例如su -s / bin / bash -c'exec / path / to / your / script&'test
–法肯多·维克多(Facundo Victor)
16-4-27在12:59
由于我花了最后20分钟的时间来研究如何使用runuser获得相同的结果,因此我想指出su -s SHELL参数使runuser命令变得非常无用了:)感谢Jan!
– Jirka
16年7月21日在18:06