GNU/Linux >> Belajar Linux >  >> Linux

Mengapa pengguna mysql memiliki bash shell di /etc/passwd?

Jika Anda menginstal MySQL di Linux, maka akun pengguna baru bernama ‘mysql ' akan dibuat untuk menjalankan mysqld melayani. Tetapi mengapa pengguna mysql memiliki bash shell di /etc/passwd ? Umumnya, layanan dijalankan sebagai pengguna nologin, di mana shell akan diatur ke /bin/false atau /bin/nologin di /etc/passwd mengajukan. Artinya, akun tersebut memenuhi syarat untuk menjalankan layanan, tetapi tidak memiliki akses shell. Saya sangat percaya (koreksi saya, jika pemahaman saya salah di bagian komentar) pengaturan ini akan meningkatkan keamanan. Apakah akses shell yang diberikan kepada pengguna mysql disengaja (atau memiliki tujuan nyata)? Mari kita cari tahu.

Menurut laporan bug yang dikirimkan di Redhat, skrip pra-instal mysql tampaknya membuat pengguna menggunakan useradd perintah dan telah menggunakan '-s ' opsi disetel ke /bin/bash .

/usr/sbin/useradd -M -o -r -d /var/lib/mysql -s /bin/bash \
 -c "MySQL Server" -u 27 mysql > /dev/null 2>&1 || :

Masalah ini dilaporkan oleh Mike Rubel@Redhat , siapa bilang mysql pengguna harus nologin pengguna secara default.

Namun sepertinya pihak Tom Lane (mungkin salah satu developer MySQL) menolak menerima laporan bug tersebut. Dia mengatakan mysql akun dibuat tanpa kata sandi dan pada akhirnya akan membatasi akses masuk.

Mike menjawab – perilakunya masih tidak biasa, karena mysqld yang rentan akan memungkinkan penyerang memasang kunci SSH ke /var/lib/mysql/.ssh/authorized_keys (direktori home mysql), untuk mengizinkan akses shell jarak jauh (yang membuat akun tanpa kata sandi berarti kurang).

Meskipun ada banyak dukungan untuk Mike, Tom terus membenarkan alasan mysql akun yang memiliki akses shell. Katanya, ada utilitas seperti mysqlhotcopy , mysqluc membutuhkan akses shell. Administrator MySQL juga mungkin ingin beralih ke mysql pengguna untuk melakukan operasi pencadangan.

Menolak akses shell ke pengguna MySQL akan memengaruhi layanan?

Yah, saya setuju beberapa perintah mungkin memerlukan akses shell. Tetapi perintah cadangan MySQL paling populer mysqldump tidak memerlukan shell sebagai pengguna mysql  bukan? Administrator MySQL tidak perlu beralih ke mysql akun pengguna untuk menjalankan cadangan, sebagai gantinya mysqldump dapat dijalankan sebagai pengguna mana pun dengan memberikan nama pengguna, kata sandi &basis data mysql yang valid. Saya menjalankan cadangan situs web saya melalui cron yang menggunakan mysqldump . Saya tidak beralih ke mysql pengguna untuk melakukan itu.

Menurut Tom, jika itu satu-satunya alasan mengapa mysql pengguna memiliki akses shell, maka saya sangat menentangnya.

Jadi saya mengubah mysql shell pengguna ke /bin/false di /etc/passwd . Saya tidak melihat masalah apa pun sampai sekarang (semoga tidak di masa depan). Jika saya melihat ada masalah, saya akan kembali ke artikel ini &memperbaruinya.

Penafian:

Saya bukan pengembang MySQL atau ahli dalam menggunakannya. Tapi saya hanya mengerti pengguna mysql tidak memerlukan akses shell. Saya mungkin salah, tetapi mysql as nologin berfungsi tanpa masalah di server saya.

Apakah Anda mengizinkan pengguna mysql untuk memiliki akses shell? Saya menghargai pemikiran Anda.

Informasi:

Anda mungkin ingin mengetahui perbedaan antara /bin/false &/sbin/nologin.


Linux
  1. CentOS / RHEL :Cara Memulihkan dari file /etc/passwd yang dihapus

  2. Cara menonaktifkan penyelesaian otomatis (penyelesaian tab) di bash shell

  3. Kapan saya harus menggunakan #!/bin/bash dan kapan #!/bin/sh?

  1. /etc/passwd menampilkan pengguna dalam grup, tetapi /etc/group tidak

  2. Mengapa direktori /home, /usr, /var, dll. Semuanya memiliki nomor inode yang sama (2)?

  3. #!/bin/sh vs #!/bin/bash untuk portabilitas maksimum

  1. Bagaimana /etc/motd Diperbarui?

  2. Bagaimana memulihkan dari entri root yang dihapus di file /etc/shadow dan/atau /etc/passwd di CentOS / RHEL 6

  3. Apa perbedaan antara /bin/false dan /sbin/nologin sebagai shell pengguna nologin?