Untuk operasi dasar - menjalankan perintah sebagai root - perbedaan yang paling terlihat antara sudo dan su adalah sudo membutuhkan kata sandi dari pengguna panggilan (yaitu kata sandi Anda) sedangkan su membutuhkan kata sandi dari pengguna target (yaitu kata sandi root). Implikasi keamanan telah dibahas secara luas dalam pertanyaan sebelumnya: Mana cara paling aman untuk mendapatkan hak akses root: sudo, su atau login? .
Sudo memiliki fitur tambahan di luar su. Secara khusus, setelah Anda memiliki kata sandi pengguna, Anda dapat menjalankan perintah apa pun sebagai pengguna itu. Di sisi lain, sudo dapat dikonfigurasi sehingga pengguna yang memintanya hanya dapat menjalankan perintah tertentu seperti beberapa pengguna lain. Ini dimungkinkan karena sudo tidak memerlukan autentikasi apa pun (selain mungkin mengonfirmasi bahwa Anda adalah Anda dengan mengetik kata sandi Anda - tetapi itu agak berbeda dengan mengautentikasi pengguna Anda untuk suatu tugas).
Anda mengubah konfigurasi sudo dengan menjalankan visudo
perintah sebagai root (jangan pernah mengedit konfigurasi secara langsung). Pastikan variabel lingkungan EDITOR
atau VISUAL
diatur ke editor favorit Anda atau Anda mungkin mendapatkan editor yang tidak dikenal. The sudoers
halaman manual adalah singkat sedikit tetapi memiliki contoh. Untuk memungkinkan pengguna bob
menjalankan /bin/foo
(dengan sejumlah argumen) dan /bin/bar --safe
(tetapi tidak dengan argumen lain) root
, gunakan baris berikut:
bob ALL = (root) /bin/foo
bob ALL = (root) /bin/bar --safe
Gilles 'SANGAT berhenti menjadi jahat'
sumber
sudo
adalah penemuan yang luar biasaapache2ctl graceful
saya pikir saya lebih suka menggorok pergelangan tangan saya dan menyelesaikannya.Perbedaan terbesar adalah bahwa dengan
sudo
Anda tidak perlu kata sandi root untuk menjalankan perintah sebagai root, seperti yang Anda lakukansu
. Anda memang perlu kata sandi root untuk menambahkan seseorang kesudoers
file tetapi setelah itu orang tersebut dapat menjalankan semua atau beberapa (jika Anda telah membatasi) sebagai root tanpa memerlukan kata sandi lebih lanjut.Perbedaan lainnya adalah, seperti yang telah Anda catat,
sudo
memungkinkan kontrol yang jauh lebih baik atas perintah apa yang dapat dijalankan.Untuk detail dari format
sudoers
file yang dijalankanman sudoers
. Anda akan menemukan contoh di sana yang hanya mengizinkan perintah tertentu untuk dijalankan sebagai root. Struktur dasar setiap baris adalah:cmd_list dapat menyertakan detail pengguna mana yang diizinkan untuk beralih ke pengguna sebenarnya. Misalnya, Anda mungkin mengizinkan webmaster beralih ke wwwroot untuk memulai kembali apache tetapi tidak untuk me-root. Itu juga dapat menyertakan opsi lain seperti apakah kata sandi pengguna diperlukan sebelum beralih (ini adalah default).
Baris contoh mungkin:
yang berarti: biarkan joe menjalankan perintah apa pun di host mana pun sebagai pengguna apa pun. Garis yang lebih ketat mungkin:
yang berarti: biarkan joe menjalankan perintah apa pun di direktori / usr / local / ops sebagai "operator" pengguna.
Ada banyak contoh di akhir halaman manual sudoers.
Anda harus mengedit
/etc/sudoers
dengan perintahvisudo
. Ini memeriksa apakah file tersebut legal dan membantu mencegah Anda dari kerusakan secara tidak sengaja.sumber
sudoers
file diatur. Itu dapat diatur untuk memerlukan kata sandi atau mengatur untuk tidak memerlukan kata sandi.Selain jawaban lain, sudo menyediakan fasilitas logging sehingga Anda dapat melacak perintah apa yang dijalankan dan oleh siapa. Ini bukan untuk tujuan keamanan karena pengguna jahat yang mendapat akses sudo dapat menghapus log. Sangat berguna meskipun untuk mengetahui dengan tepat apa yang Anda atau admin lain lakukan dengan mata pada jam 2 pagi minggu lalu.
sumber