当前位置: 首页>>技术问答>>正文


作为另一个没有密码的用户运行一个shell脚本

, , ,

问题描述

我想从主ubuntu shell运行一个脚本作为不具有密码的其他用户。

我有完整的sudo权限,所以我尝试了这一点:

sudo su -c "Your command right here" -s /bin/sh otheruser

然后我必须输入密码,但我不确定该脚本现在是否真正在该用户下运行。

我如何确认该脚本现在真的在该用户下运行?

最佳解决思路

您可以使用susudo来做到这一点,不需要两者。

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.

如果您是root用户,su只能在不提供密码的情况下切换用户。看到迦勒的回答

您可以修改/etc/pam.d/su文件以允许su不带密码。看到这个answer

如果您将auth文件修改为以下版本,则属于组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

次佳解决思路

如果你想使用su而不是sudo,我相信你可以使用这样的东西:

su - <username> -c "<commands>"
  • -将模拟指定用户的登录

  • -c告诉它你想运行一个命令

PS。不幸的是,我不能使用rvm来安装ruby,但这可能没有关系。

第三种解决思路

上面的答案对我来说真的很有用,但要回答真正的问题……

How can I affirm that the script is really running under that user now?-

使用:

ps -ef | grep <command-name>

输出应该包含您的脚本和执行它的实际用户。 BSD-like系统上的人员,例如MAC可以找到类似的信息:

ps aux | grep <command-name>

第四种思路

我有同样的问题。只需输入命令screen -dmS testscreen,这将在您的non-sudo用户帐户上创建一个分离的屏幕,然后您可以记录它并检查screen -ls是否有此屏幕。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/222.html,未经允许,请勿转载。