自动化“sudo su - user”命令

sam*_*sam 6 linux sudo su

我想自动化

sudo su - user 
Run Code Online (Sandbox Code Playgroud)

从一个脚本。然后它应该要求输入密码。

Tor*_*ian 9

我会试着猜猜你问的是什么。

如果您想在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)

会完成事情,但会像任何人一样授予做任何事情的权限。


Mik*_*kel 1

最简单的方法是让用户根本不需要输入密码。

您可以通过运行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中的所有详细信息。