Otentikasi rekan pengguna PostgreSQL pada soket unix secara default, di mana pengguna unix harus sama dengan pengguna PostgreSQL. Jadi orang sering menggunakan su
atau sudo
untuk menjadipostgres
superuser.
Saya sering melihat orang menggunakan konstruk seperti:
sudo su - postgres
daripada
sudo -u postgres -i
dan saya bertanya-tanya mengapa. Demikian pula, saya telah melihat:
sudo su - postgres -c psql
dari pada
sudo -u postgres psql
Tanpa terkemuka sudo
yang su
versi akan membuat beberapa akal jika Anda berada di platform lama tanpa sudo
. Tetapi mengapa pada UNIX atau Linux yang kurang prehisoric akan Anda gunakan sudo su
?
postgresql
shell
sudo
su
Craig Ringer
sumber
sumber
Jawaban:
Lupa
sudo su
Tidak ada manfaatnya menggunakan
sudo su
, ini merupakan kebiasaan anakronistis sejak orang terbiasa menggunakannyasu
. Orang-orang mulai memasangsudo
di depan ketika distro Linux berhenti mengatur kata sandi root dan membuatsudo
satu-satunya cara untuk mengakses akun root. Alih-alih mengubah kebiasaan mereka, mereka hanya menggunakansudo su
. (Saya adalah salah satu dari mereka sampai relatif baru ketika menggunakan kotak dengansudoers
konfigurasi memaksa saya untuk mengubah kebiasaan saya).Menggunakan
sudo -u
Untuk shell login,
sudo -u postgres -i
lebih disukaisudo su - postgres
. Tidak mengharuskan pengguna memiliki akses root/etc/sudoers
, mereka hanya perlu hak untuk menjadi penggunapostgres
. Ini juga memungkinkan Anda menerapkan kontrol akses yang lebih baik.Untuk eksekusi perintah
lebih unggul dari alternatif:
di mana Anda tidak perlu meloloskan diri dari tanda kutip dan karakter meta shell lainnya serta keuntungan keamanan lainnya karena tidak memerlukan root. Anda mungkin tidak sengaja akan menulis:
terkadang, yang tidak akan berfungsi dengan baik.
Akhirnya, lebih mudah untuk mengatur variabel lingkungan melalui
sudo
, misdari via
su
. (Di sini,PATH
pengaturan diperlukan agarinitdb
dapat menemukanpostgres
eksekusi yang benar ).Begitu. Lupakan
su
perintah yang ada. Anda tidak membutuhkannya lagi. Untuk menghentikan kebiasaan itu, tambahkan kebiasaan itu ke sesuatu yang akan mencetak kesalahan. (Namun beberapa skrip pengaturan init dan paket masih digunakansu
sehingga Anda tidak dapat menghapusnya).Lihat juga:
sumber