Users

為什麼我不能su postgres

  • October 3, 2018
  1. 我想知道為什麼當我提供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:::
  1. 如果我確實不能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 postgressudo -u postgres -s. 注意:在此方法中,您原始帳戶中的某些環境設置可能仍以 user 身份在您的會話中使用postgres。您可能想要也可能不想要:如果您有兩個或多個數據庫管理員,他們的 shell/環境都對帳戶有不同的個人偏好,那麼它實際上很有sudopostgres

如果您希望環境與使用者postgres直接登錄時的環境完全相同,您也可以使用sudo -u postgres -i(相當於su - postgres)。

但是如果你想su postgres工作,你只需要為使用者設置一個密碼postgres。這可以通過passwd postgres以 root 身份執行來實現。

引用自:https://unix.stackexchange.com/questions/441683