忘れる sudo su
使用sudo suすることに利点はありません。これは、人々が使用することに慣れていた時代からの時代錯誤的な習慣suです。sudoLinuxディストリビューションがルートパスワードの設定を停止しsudo、ルートアカウントにアクセスする唯一の方法を作ったときに、人々は正面から取り組み始めました。彼らは習慣を変えるのではなく、単にを使用しましたsudo su。(私は比較的最近まで、sudoers設定でボックスを使用して習慣を変更することを余儀なくされていました)。
つかいます sudo -u
ログインシェルの場合sudo -u postgres -iは、をお勧めしsudo su - postgresます。ユーザーがルートアクセス権を持っている必要はなく、ユーザー/etc/sudoersになる権利のみが必要postgresです。また、より良いアクセス制御を実施できます。
コマンド実行用
sudo -u postgres psql -c "SELECT 1"
代替案よりも優れています:
sudo su - postgres -c "psql -c \"SELECT 1\""
引用符や他のシェルメタキャラクターを二重エスケープする必要がなく、ルートを必要としない他のセキュリティ上の利点もありません。たぶんあなたは誤って文章を書くでしょう:
sudo su - postgres -c psql -c "SELECT 1"
時々、これは適切に動作しません。
最後に、を介して環境変数を設定する方が簡単ですsudo。例えば
sudo PATH=/usr/pgsql-9.3/bin:$PATH -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/testcluster
よりもsu。(ここでは、正しい実行可能ファイルを見つけるPATHことinitdbができるように設定が必要ですpostgres)。
そう。suコマンドが存在することを忘れてください。もう必要ありません。習慣を打破するには、エラーを出力するものにエイリアスを付けます。(一部のinitおよびパッケージセットアップスクリプトはまだ使用するsuため、削除することはできません)。
こちらもご覧ください: