Sudo su - postgres ve sudo -u postgres arasındaki fark nedir?


35

PostgreSQL kullanıcıları varsayılan olarak unix soketlerinde kimlik doğrulaması yapar, burada unix kullanıcısı PostgreSQL kullanıcısı ile aynı olmalıdır. Böylece insanlar sıklıkla kullanır suveya süper kullanıcı sudoolurlar postgres.

İnsanları sıklıkla aşağıdaki gibi yapılar kullanarak görüyorum:

sudo su - postgres

ziyade

sudo -u postgres -i

ve nedenini merak ediyorum. Benzer şekilde, gördüm:

sudo su - postgres -c psql

yerine

sudo -u postgres psql

Lider olmadan sen olmadan eski platformda olsaydı sürümleri bazı mantıklıdır . Fakat neden prehisorik UNIX ya da Linux'tan daha azına kullanıyorsunuz ?sudosusudosudo su


Yanıtlar:


39

Unutmak sudo su

Kullanmanın bir faydası yok sudo su, insanların kullanmaya alıştıkları anakronistik bir alışkanlık su. sudoLinux dağıtımı bir root şifresi ayarlamayı bırakıp sudoroot hesabına erişmenin tek yolunu yaptığında insanlar önden oynamaya başladılar . Alışkanlıklarını değiştirmek yerine, sadece kullandılar sudo su. ( sudoersKonfigürasyon kutuları kullanarak alışkanlığımı değiştirmeye zorlayan zamana kadar onlardan biriydim).

kullanım sudo -u

Bir giriş kabuğu için, sudo -u postgres -itercih edilir sudo su - postgres. Kullanıcının kök erişimi olması /etc/sudoersgerekmez, yalnızca kullanıcı olma hakkına ihtiyaçları vardır postgres. Ayrıca daha iyi erişim kontrolleri uygulamanıza izin verir.

Komut yürütme için

sudo -u postgres psql -c "SELECT 1"

alternatiften daha üstündür:

sudo su - postgres -c "psql -c \"SELECT 1\""

Bunun için tırnaklardan ve diğer kabuk meta karakterlerinden ve ayrıca root gerektirmeyen diğer güvenlik avantajlarından iki kez kaçmak zorunda kalmazsınız. Muhtemelen yanlışlıkla yazmaya başlayacaksınız:

sudo su - postgres -c psql -c "SELECT 1"

bazen düzgün çalışmaz.

Son olarak, ortam değişkenlerini sudoörneğin;

sudo PATH=/usr/pgsql-9.3/bin:$PATH -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/testcluster

üzerinden su. (Burada, doğru yürütülebilir dosyayı bulmak için PATHayar gereklidir ).initdbpostgres

Yani. suKomutun var olduğunu unut . Artık ona ihtiyacın yok. Alışkanlığı ortadan kaldırmak için, hatayı yazdırır bir şeye diğer ad. (Bazı init ve paket kurulum komut dosyaları hala kullanır, subu yüzden yine de kaldıramazsınız).

Ayrıca bakınız:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.