运行特定的命令
我有一个bash
脚本,我与sudo
运行:sudo NewScript
运行特定的命令
剧本里面,我有一个git
命令,我不希望与运行sudo
。目前,由于整个脚本运行在sudo
这个命令也运行在sudo
,这就是我想要压制的。
这样的事情是可能的吗?或者我需要运行脚本而不是sudo
并且为git
命令以外的脚本中的每个命令添加sudo
?
一种使用方法是使用su
切换到普通用户权限,并动态运行它,而不是实际更改访问权限。
在脚本中使用正常的$USER
权限运行git
命令。
su - "$USER" -c "git_command1; git_command2;"
的-c
标志传递命令到外壳,根据man su
页,
-c,--command =命令 通行证命令与-c选项的壳。
同上。我总是这样做,很好。 –
注意sudo
运行程序的不同用户,不一定为root
; root
只是默认值。因此,您的目标可能不是运行您的具体git
命令,而不是sudo
,而是以不同于其他用户的身份运行它。
如果你想你的git命令通过硬编码的用户the_user
运行,只是把
sudo -u the_user <your git command>
在你的脚本(这不会提示你输入密码时,脚本以root身份运行) 。
如果不知道用户预先而是希望git
命令由谁称为sudo newScript
使用
sudo -u $SUDO_USER <your git command>
,而不是(感谢@thatotherguy该提示)运行。
您可以使用'$ SUDO_USER'代替包装。 'sudo'将它设置为调用用户。 –
@thatotherguy谢谢,我将这些信息添加到答案中。 – Dreamer
当您使用'sudo'运行脚本时,脚本基本上运行得如同它由root用户运行一样。因此,我能想到的唯一解决方案就是使用特定用户的权限运行git命令,例如:'sudo -S [username] [git command]' – Dunno
如果后一种方法,如果'sudo'需要密码,那么您将被提示输入所有这些命令的密码。 – Inian