當前位置: 首頁>>技術問答>>正文


作為另一個沒有密碼的用戶運行一個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/zh-tw/article/222.html,未經允許,請勿轉載。