Sudo

無法以“useradd”創建的另一個沒有密碼的使用者身份執行程序

  • June 6, 2017

我創建了一個使用者,僅代表該使用者執行某個程序:

sudo useradd -r -s /bin/false -d /var/lib/my_app123 my_user123

現在為了代表“my_user123”執行該程序,我這樣做:

su - my_user123

1)它問我一個密碼。什麼密碼?“my_user123”沒有密碼。如何解決這個問題?

2)或者將“/var/lib/my_app123/some_process”作為“my_user123”執行的正確方法是什麼?

sudo 本身工作正常。

您可以指定正確的系統外殼:

su - youruser -s /bin/bash -c "yourcommand"

或者使用 sudo 執行命令,即使你的使用者沒有有效的 shell,它也會起作用,就像你的情況一樣。

或者您無法使用 su 登錄,因為您將 /bin/false 指定為您的使用者的 shell。這就是系統要求輸入密碼的原因。

sudo並且su是完全不同的程序。這就是su工作原理:如果您不是 root,它會詢問目標 ( substitute) 使用者的密碼。您尚未設置密碼的情況不會改變這一點;用於passwd為使用者添加密碼。如果您需要在不知道或不提供該使用者密碼的情況下以其他使用者身份執行命令,則應使用sudo, 代替。

從安全的角度來看,設置和使用 sudo而不是su. 系統將sudo提示您輸入您自己的密碼 - 或者根本沒有密碼,如果以這種方式配置 - 而不是目標使用者(您嘗試使用的使用者帳戶)的密碼。這樣您就不必在使用者之間共享密碼,並且如果您需要阻止具有 root 訪問權限的使用者(或訪問任何其他帳戶,就此而言),您不必更改 root 密碼,這是一個給其他人帶來不便;您只需要撤銷該使用者的 sudo 訪問權限。

sudo等價物su - usersudo -u user -s。如果您希望在不使用自己的密碼的情況下執行此操作,則需要visudo將此行添加到您的sudoers文件中:

yourusername    ALL=(anotheruser) NOPASSWD: /bin/bash

這允許以沒有密碼的使用者yourusername身份執行。/bin/bash``anotheruser

引用自:https://serverfault.com/questions/854137