為什麼我不能su postgres
?
- 我想知道為什麼當我提供root的密碼時,下面的命令會報告失敗?
$ su postgres Password: su: Authentication failure
su
詢問 root 的密碼,而不是 of 的密碼是否正確postgres
?如果是密碼的話
postgres
,我在安裝postgreSQL的時候,沒有設置登錄名連接postgresql伺服器,也沒有postgres
在我的Ubuntu上顯式創建使用者,那麼它的密碼是多少呢?在
/etc/passwd
postgres:x:124:133:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
在
/etc/shadow
:postgres:*:17478:0:99999:7:::
- 如果我確實不能
su postgres
,那麼一般來說,可以su
切換到哪些目標使用者?他們也是其 id setuid() 可以作為參數的使用者,這是否正確?
從 APUE,我了解到沒有有效登錄 shell 命令的登錄名不能用於登錄。他們也可以被
su
教育嗎?但是postgres
有一個有效的登錄 shell 命令/bin/bash
,為什麼我不能su postgres
呢?謝謝。
查看第二個欄位
/etc/shadow
:postgres:*:17478:0:99999:7:::
通常它會有加密的密碼,但這裡它只有一個星號。這意味著該帳戶已被鎖定 - 它不接受任何密碼。這是任何新帳戶在為其分配密碼之前所具有的狀態。
要轉換到目前鎖定的使用者帳戶,您需要一個不要求目標帳戶密碼的轉換方法。因為
su
,這意味著您必須首先完全成為 root。可以配置
sudo
為允許您訪問該postgres
帳戶,即使它被鎖定以進行密碼驗證。該/etc/sudoers
行將是這樣的:Tim ALL=(postgres) ALL
sudo
相當於的命令行su postgres
是sudo -u postgres -s
. 注意:在此方法中,您原始帳戶中的某些環境設置可能仍以 user 身份在您的會話中使用postgres
。您可能想要也可能不想要:如果您有兩個或多個數據庫管理員,他們的 shell/環境都對帳戶有不同的個人偏好,那麼它實際上很有sudo
用postgres
。如果您希望環境與使用者
postgres
直接登錄時的環境完全相同,您也可以使用sudo -u postgres -i
(相當於su - postgres
)。但是如果你想
su postgres
工作,你只需要為使用者設置一個密碼postgres
。這可以通過passwd postgres
以 root 身份執行來實現。