我想自动化
sudo su - user
Run Code Online (Sandbox Code Playgroud)
从一个脚本。然后它应该要求输入密码。
我会试着猜猜你问的是什么。
如果您想在sudo su - user没有密码的情况下使用,您应该(如果您有权限)对您的 sudoers 文件执行以下操作:
<youuser> ALL = NOPASSWD: /bin/su - <otheruser>
Run Code Online (Sandbox Code Playgroud)
在哪里:
<yourusername> 你的用户名是 :D (saumun89, 即)<otheruser> 是您要更改为的用户然后放入脚本:
sudo /bin/su - <otheruser>
Run Code Online (Sandbox Code Playgroud)
这样做,不会让后续命令被运行<otheruser>,它会产生一个新的外壳。如果您想以其他用户身份从脚本中运行另一个命令,您应该使用以下内容:
sudo -u <otheruser> <command>
Run Code Online (Sandbox Code Playgroud)
在 sudoers 文件中:
<yourusername> ALL = (<otheruser>) NOPASSWD: <command>
Run Code Online (Sandbox Code Playgroud)
显然,更通用的行如:
<yourusername> ALL = (ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
会完成事情,但会像任何人一样授予做任何事情的权限。
最简单的方法是让用户根本不需要输入密码。
您可以通过运行visudo,然后更改如下所示的行来做到这一点:
someuser ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
到
someuser ALL=(ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
但是,如果仅针对一个脚本,则将无密码访问限制为仅该脚本并删除 会更安全(ALL),因此他们只能以 root 身份运行它,而不能以任何用户身份运行,例如
Cmnd_Alias THESCRIPT = /usr/local/bin/scriptname
someuser ALL=NOPASSWD: THESCRIPT
Run Code Online (Sandbox Code Playgroud)
运行以查看sudoers 手册页man 5 sudoers中的所有详细信息。