Dalam /etc/passwd
file saya , saya dapat melihat bahwa www-data
pengguna yang digunakan oleh Apache, serta semua jenis pengguna sistem, memiliki salah satu /usr/sbin/nologin
atau /bin/false
sebagai shell login mereka. Sebagai contoh, berikut adalah pilihan garis:
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin games:x:5:60:games:/usr/games:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin syslog:x:101:104::/home/syslog:/bin/false whoopsie:x:109:116::/nonexistent:/bin/false mark:x:1000:1000:mark,,,:/home/mark:/bin/bash
Akibatnya, jika saya mencoba untuk menukar dengan salah satu pengguna ini (yang kadang-kadang saya ingin lakukan untuk memeriksa pemahaman saya tentang izin mereka, dan yang mungkin ada setidaknya alasan masuk akal setengah jalan untuk), saya gagal:
mark@lunchbox:~$ sudo su www-data
This account is currently not available.
mark@lunchbox:~$ sudo su syslog
mark@lunchbox:~$
Tentu saja, ini bukan masalah, karena saya masih bisa meluncurkan shell untuk mereka melalui metode seperti ini:
mark@lunchbox:~$ sudo -u www-data /bin/bash
www-data@lunchbox:~$
Tapi itu hanya membuat saya bertanya-tanya apa tujuan dilayani dengan menolak pengguna ini sebuah shell login. Melihat-lihat penjelasan di internet, banyak orang mengklaim bahwa ini ada hubungannya dengan keamanan, dan semua orang tampaknya setuju bahwa itu adalah ide yang buruk untuk mengubah kulit login dari para pengguna ini. Berikut kumpulan kutipan:
Mengatur shell pengguna Apache ke sesuatu yang non-interaktif umumnya merupakan praktik keamanan yang baik (benar-benar semua pengguna layanan yang tidak harus login secara interaktif harus mengatur shell mereka ke sesuatu yang non-interaktif).
- https://serverfault.com/a/559315/147556
shell untuk pengguna www-data diatur ke / usr / sbin / nologin, dan itu diatur untuk alasan yang sangat bagus.
- https://askubuntu.com/a/486661/119754
[akun sistem] dapat menjadi lubang keamanan , terutama jika shell diaktifkan:
Buruk
bin:x:1:1:bin:/bin:/bin/sh
Baik
bin:x:1:1:bin:/bin:/sbin/nologin
- https://unix.stackexchange.com/a/78996/29001
Demi keamanan, saya membuat akun pengguna tanpa shell login untuk menjalankan server Tomcat:
# groupadd tomcat # useradd -g tomcat -s /usr/sbin/nologin -m -d /home/tomcat tomcat
- http://www.puschitz.com/InstallingTomcat.html
Sementara posting ini berada dalam perjanjian dengan suara bulat bahwa tidak memberikan pengguna sistem shell login yang sebenarnya baik untuk keamanan, tidak satu pun dari mereka membenarkan klaim ini, dan saya tidak dapat menemukan penjelasannya di mana pun.
Serangan apa yang kami coba lindungi dengan tidak memberikan shell login nyata kepada pengguna ini?