Latar Belakang
Saya tahu perbedaan antara su -
, sudo su -
dan sudo <command>
:
su -
- Mengalihkan pengguna ke root, membutuhkan kata sandi rootsudo su -
- Mengalihkan pengguna ke root, hanya membutuhkan kata sandi pengguna saat inisudo <command>
- memberikan akses root hanya untuk perintah tertentu; hanya membutuhkan kata sandi pengguna saat ini
Pertanyaan saya adalah apakah menggunakan atau tidak sudo su -
adalah praktik yang aman di lingkungan produksi.
Beberapa pemikiran:
Sepertinya memungkinkan
sudo su -
menimbulkan risiko keamanan dengan membuat akses ke akun root bergantung pada kata sandi pengguna individu. Tentu saja, ini dapat dikurangi dengan menerapkan kebijakan kata sandi yang ketat. Saya tidak berpikirsu -
ini lebih baik karena itu akan memerlukan administrator untuk membagikan kata sandi root yang sebenarnya.Mengizinkan pengguna untuk sepenuhnya beralih ke akun root membuatnya lebih sulit untuk melacak siapa yang membuat perubahan pada sistem. Saya telah melihat kasus di pekerjaan harian saya di mana banyak pengguna diberi
sudo su -
akses. Hal pertama yang dilakukan pengguna saat masuk ke sistem dijalankansudo su -
, sebelum mulai bekerja. Kemudian, suatu hari ada sesuatu yang rusak, dan tidak ada keterlacakan untuk siapa yang berlarirm -rf *
di direktori yang salah.
Pertanyaan
Mengingat masalah di atas, apakah pernah merupakan ide yang baik untuk memungkinkan pengguna untuk menggunakan sudo su -
atau bahkan su -
sama sekali?
Apakah ada alasan administrator akan mengkonfigurasi akun pengguna untuk sudo su -
atau su -
bukannya sudo <command>
(selain dari kemalasan)?
Catatan: Saya mengabaikan kasus di mana pengguna menjalankan sudo su -
atau su -
Administrator perlu membuat perubahan sistem, ketika akses ssh langsung telah dinonaktifkan untuk pengguna root.
sudo su -
agak konyol karenasudo -i
pada dasarnya melakukan hal yang sama, dengan sedikit penekanan tombol.sudo bash
hanya untuk menghindari beberapa overhead login. Namun, setelah refleksi, itu mungkin tidak menghindari sebanyak yang saya bayangkan.sudo -s
.Jawaban:
Mari kita lihat kasus Anda:
akan menjalankan / bin / sh sebagai pengguna root menggunakan lingkungan root. Kata sandi root diperlukan dan penebangan DAPAT dicatat, tergantung pada pengaturan syslog (biasanya secara default ke /var/log/auth.log).
akan menjalankan shell sebagai pengguna root menggunakan set variabel lingkungan saat ini (dengan beberapa pengecualian seperti yang akan didefinisikan dalam file sudoers). Kata sandi adalah kata sandi pengguna sumber dan BUKAN kata sandi pengguna root. sudo biasanya dicatat.
akan menjalankan shell (biasanya / bin / sh) sebagai pengguna root yang mengatur lingkungan sebagai pengguna root. Ini akan memerlukan kata sandi dari pengguna sumber dan ini umumnya akan dicatat.
Terkadang perlu untuk memiliki lingkungan root di atas lingkungan Anda sendiri, sehingga su - adalah metode yang tepat. Ingat sudo masih akan mencatat penggunaan perintah shell dalam kedua kasus.
sumber
Tidak, tidak menurut saya. Ini tidak memiliki keuntungan praktis daripada memungkinkan mereka untuk melakukan su kecuali mereka tidak memerlukan kata sandi root untuk melakukannya.
Karena saya selalu menonaktifkan root logon, su diperlukan dan seimbang, membuat server lebih aman.
sumber
OP tampaknya menyediakan banyak alasan bagus untuk tidak mengizinkan / mendorong penggunaan umum untuk dijalankan
sudo bash
atausudo su -
karena itu mengalihkannya ke mode serba guna yang internal yang umumnya tidak dicatat. Dan mereka mungkin lupa mereka dalam mode itu dan melakukan sesuatu ... disesalkan.Ergo, tampaknya lebih aman untuk memiliki sebagian besar pengguna dibatasi untuk menjalankan
sudo on/a/particular/command/
atau daftar perintah. Dengan begitu setiap perintah sudo dicatat.Apakah Anda akan menemukan pengecualian dalam praktik? Tentu. Apakah reaksi terhadap pengecualian tersebut untuk kembali ke praktik malas tidak terbatas -
sudo su
mungkin tidak.sumber