我具有完整的sudo特权,因此我尝试了以下操作:
sudo su -c "Your command right here" -s /bin/sh otheruser
然后我必须输入密码,但是我不确定该脚本现在是否真正在该用户下运行。
如何确认该脚本确实在该用户下运行现在是那个用户吗?
#1 楼
您可以使用su
或sudo
来做到这一点,而无需两者。 sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"'
相关
man sudo
的一部分: -H The -H (HOME) option requests that the security policy set
the HOME environment variable to the home directory of the
target user (root by default) as specified by the password
database. Depending on the policy, this may be the default
behavior.
-u user The -u (user) option causes sudo to run the specified
command as a user other than root. To specify a uid
instead of a user name, use #uid. When running commands as
a uid, many shells require that the '#' be escaped with a
backslash ('\'). Security policies may restrict uids to
those listed in the password database. The sudoers policy
allows uids that are not in the password database as long
as the targetpw option is not set. Other security policies
may not support this.
su
如果您是root用户,则只能在不提供密码的情况下切换用户。请参阅Caleb的答案您可以修改
/etc/pam.d/su
文件,以允许su
无需密码。看到这个答案。 如果将身份验证文件修改为以下内容,则属于
somegroup
组的任何用户都可以在没有密码的情况下将su
更改为otheruser
。 auth sufficient pam_rootok.so
auth [success=ignore default=1] pam_succeed_if.so user = otheruser
auth sufficient pam_succeed_if.so use_uid user ingroup somegroup
然后从终端
rubo77@local$ su otheruser -c 'echo "hello from $USER"'
hello from otheruser
#2 楼
如果您想使用su而不是sudo,我相信您可以使用类似这样的东西:su - <username> -c "<commands>"
-
将模拟登录指定的用户-c
告知您要运行命令评论
我需要在开头添加sudo,否则它会要求我输入密码。
– IanVaughan
15年7月20日在12:42
没有sudo,这绝对无法工作。使用sudo可以正常工作,例如:sudo su-www-data -c“ touch / tmp / test”成功将文件创建为www-data
–rubo77
16-09-24在8:41
要使用“ su”,您需要root密码,“ sudo”的目的是避免这种情况。如果您具有上述使用“ su”的root密码,则应该可以正常工作。
–塞缪尔·阿斯伦(SamuelÅslund)
17年6月30日在7:51
“不幸的是,我无法使用rvm通过这种方法安装ruby”:当我使用此命令时,结果路径是裸露的(例如/ bin:/ usr / bin),所以我的命令(类似于rvm)是找不到。
– PLG
20 Nov 11在18:25
#3 楼
上面的答案对我来说确实很有用,但是回答实际问题...
我如何确认该脚本现在确实在该用户下运行?-
使用:
ps -ef | grep <command-name>
输出应包括您的脚本和执行该脚本的实际用户。
BSD上的人类系统,例如MAC可以通过以下方式找到类似的信息:
ps aux | grep <command-name>
评论
Linux用户可以使用ps aux。
–迪恩·豪威尔(Dean Howell)
18/09/20在20:08
@DeanHowell;是的,但是MAC用户不能使用“ ps -ef”,并且“ ps aux”是BSD选项,仅当具有兼容性功能时才可用,而“ ps -ef”是标准的Unix / POSIX选项。
–塞缪尔·阿斯伦(SamuelÅslund)
18/09/22在10:26
#4 楼
我遇到了同样的问题。只需键入命令
screen -dmS testscreen
,这将在您的非sudo用户帐户上创建一个分离的屏幕,然后您可以对其进行登录并通过screen -ls
检查此屏幕是否存在。#5 楼
确保使用命令sudo su
切换到root用户,然后使用命令su user -s <command>
例如:
su www-data -s bin/magento cache:clean
#6 楼
您可以使用sudo
执行此操作。首先,您需要修改/etc/sudoers
文件以添加一条规则,该规则允许hudson
用户成为该脚本的另一个用户。假设您有一个需要运行user1
的/usr/local/bin/my_script.sh
帐户。运行
visudo
修改sudoers
文件。然后,使用以下
sudo
命令从hudson运行脚本。非常重要您使用
visudo
修改sudoers
文件,以便在将文件放置到位之前检查文件是否有错误。另外,建议您快速阅读man sudoers
,以便在将其添加到配置之前清楚地了解上述内容。评论
您应该显示将插入到sudoers文件中的实际行。
–WinEunuuchs2Unix
20/11/11在18:51
评论
您能不能也加上su来做这件事?
–rubo77
2014年10月6日12:33
这要求我输入密码:-(
– IanVaughan
15年7月20日在12:39
@IanVaughan,使用默认配置(sudo),除非您以超级用户身份运行,否则系统会要求您输入密码。您可以将sudo配置为“允许用户A以用户B身份运行cmd C,而无需输入密码”。请参阅help.ubuntu.com/community/Sudoers
– Geirha
15年7月21日在12:54
以超级用户身份运行时,提示输入密码。有什么建议?
–内特
15年11月28日在0:26
@NamGVU请记住,顺序很重要。如果您的sudoers的规则更进一步,为您的用户或您所属的组设置了其他权限,则该规则将覆盖您的NOPASSWD规则。
– Geirha
19 Mar 28 '19在7:12