Neden PostgreSQL için kullanıcıya bir kabuk veriliyor?


11

cat /etc/passwd |grep postgre

postgres:x:115:127:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

apt-cache show postgresql

Package: postgresql
Priority: optional
Section: database
Installed-Size: 65
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian PostgreSQL Maintainers <pkg-postgresql-public@lists.alioth.debian.org>
Architecture: all
Source: postgresql-common (136)
Version: 9.1+136
Depends: postgresql-9.1
Filename: pool/main/p/postgresql-common/postgresql_9.1+136_all.deb
Size: 5468
MD5sum: 34f5a1373ad5cd0b6f5aa3e7af06c9e7
SHA1: 6f271758bd51c23614b12fd63fb711ecfa43e9e5
SHA256: e8921a22b560e81f57a2a00001e31ba1036f67a8e7f151bf8f977b4919fc559a

Bunu değiştirebilir miyim /bin/bashile /bin/false?


1
@Jorge Castro benim sorum, neden PostgreSQL kullanıcı için bir kabuk var, neden PostgreSQL için bir kullanıcı var .. değil çünkü MySQL gibi diğer kullanıcıların gerekli olmadığını gördüm.
Gülümseme.

Yanıtlar:


4

Bir kabuk var çünkü PostgreSQL'i komut satırından PostgreSQL kullanıcısı olarak kullanıyoruz.


O zaman, MySQL'i MySQL kullanıcı olarak kullanmadık değil mi? Sanırım bu kullanıcı dahili sistem için kullanılmış olabilir, Bu /bin/bashbenim PostgreSQL düzgün çalışmasını sağlamak için kaldırmak gerekir anlamına gelir .. Yine de teşekkürler!
Gülümseme.

2

Postgres, güvenlik nedeniyle özel bir işletim sistemi kullanıcı hesabı altında çalışır. Bu hesap, yükleyici çalıştığında makinenizde oluşturulur ve komut satırında geçersiz kılınmadıkça "postgres" olarak adlandırılır.

Linux ve Mac OS X gibi Unix benzeri işletim sistemlerinde, hesap parola olmadan ayarlanır ve kullanıcıların genellikle bir daha endişe duymaları gerekmez. Kaynak .

Ayrıca passwd dosyasını manuel olarak düzenlemek iyi bir uygulama değildir. Komutu kullanmalısınız:

sudo passwd postgres

2
Teşekkürler ama neden PostgreSQL için bir kullanıcı için bir "bash kabuk" olduğunu bilmek istiyorum, ben birinin postgresql oturum açmış neden ve sonra bir şekilde ben bir hizmet kullanıcısı için mantıklı olmayan bir bash kabuk var öğrendim hiç giriş yapmadım. (Apache2, mysql gibi başka bir hizmet için diğer kullanıcıyı görüyorum, kullanıcıları için bash kabuğu gerektirmediler)
Smile.Hunter

2

Bir sunucu yöneticisi sudobunun hangi ortam ve ve umask ile sonuçlandığı konusunda kullanır ve dikkatli olmazsa, veritabanı üzerinde çalışmak istenmeyen yerlerde veya istenmeyen izinlerde dosyalar oluşturabilir.

Kullanıcıya bir kabuk atamak, yöneticilerin postgres olarak oturum açmasını ve bu kullanıcıların kabuğu üzerinde çalışmasını sağlar. Belirli sudoolmayan sunucu hata mesajlarının kaynağı olarak anlamak çok fazla baş ağrısıydı.

Buna ihtiyacınız yoksa ve postgres ikili dosyalarını asla bu kadar hataya açık bir şekilde çağırmayacağınızdan eminseniz, kabuğu güvenli bir şekilde kaldırabilirsiniz:

usermod --shell /bin/false postgres

Kök olabilmek için geçerli kabukları olmayan kullanıcılar da dahil olmak üzere yine de herkes olabileceğinizi unutmayın:

su --shell /bin/bash postgres

Yetkili kaynak:

Bazen belirli kullanıcı yönetimi veya düzeltmeleri yapabilmek için bu kullanıcı olarak oturum açmak istersiniz. Örneğin, pg_resetxlog komutunu çalıştırmanız gerekirse, su veya sudo çağrılarınızın doğru olduğundan ve veritabanı dizininin izinlerini garip bir şekilde bozmadığınızdan emin değilseniz, muhtemelen postgres olarak oturum açmak istersiniz. - Peter Eisentraut, PostgreSQL geliştirme


Bu cevap kabul edilen cevaptan daha iyidir. Belirli bir kullanıcı olarak komutları çalıştırabilmek için bir oturum açma kabuğuna gerek yoktur (bu sudo için yapacaktır). Birçok Ubuntu alt sistemi, giriş kabuğu olarak / bin / false veya / usr / sbin / nologin'e sahiptir ve bir sisteme uzaktan erişmenin yeni yollarını açmazken iyi çalışırlar.
arielf
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.