ルートパスワードを提供するときに、次のコマンドが失敗を報告する理由がわかります。
$ su postgres Password: su: Authentication failure
これが正しいか
su
ルートパスワードを尋ねる、いいえ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を介して有効なログインシェルコマンドなしでログインすると、ログインできないことがわかりました。彼ら
su
も編集できますか?しかし、postgres
有効なログインシェルコマンドがありますが、/bin/bash
なぜそれができないのですかsu postgres
?
ありがとうございます。
答え1
2番目のフィールドを見る/etc/shadow
:
postgres:*:17478:0:99999:7:::
通常、パスワードは暗号化されていますが、ここにはアスタリスクのみがあります。これはアカウントがロックされていることを意味し、パスワードは許可されません。これはパスワードが割り当てられる前の新しいアカウントの状態です。
現在ロックされているユーザーアカウントに切り替えるには、ターゲットアカウントのパスワードを必要としない移行方法が必要です。の場合、su
これは最初に完全なルートになる必要があることを意味します。
パスワード認証によりアカウントがロックされている場合でも、アカウントにsudo
アクセスできるように設定できます。postgres
行/etc/sudoers
は次のとおりです。
Tim ALL=(postgres) ALL
sudo
そのコマンドラインsu postgres
はですsudo -u postgres -s
。注:この方法では、元のアカウントの一部の環境設定をユーザーセッションで引き続き使用できますpostgres
。これを望むかもしれないし、望ましくないかもしれません。シェル/環境の両方がsudo
このアカウントを使用していて、個人設定が異なる2人以上のデータベース管理者がいる場合は、実際に便利ですpostgres
。
postgres
ユーザーが直接ログインした場合と同じ環境を望む場合sudo -u postgres -i
(と同じsu - postgres
)を使用することもできます。
ただし、操作するにはsu postgres
ユーザーのパスワードを設定するだけですpostgres
。これはpasswd postgres
rootとして実行することで達成できます。
答え2
postgresユーザーにパスワードを提供しないでください。これで、誰かがそのユーザーとしてログインして必要なすべての操作を実行できるようになり、これはセキュリティ上の欠陥と見なされます。代わりに、このユーザーに sudo 権限を付与し、次の構造を使用する必要があります。
sudo -u postgres psql ...