Apa perbedaan antara dua perintah pengguna super, su -s
dan sudo -s
?
Keduanya memberi shell dengan akses ke akun superuser.
Dalam praktiknya, mereka berdua akan menjadikan Anda superuser. Namun, mereka melakukan hal yang sedikit berbeda, dengan cara yang sedikit berbeda.
Pertama, su -
mengalihkan Anda ke shell login, sedangkan sudo -s
tidak. Dalam praktiknya, ini sering berarti bahwa variabel lingkungan Anda tidak akan beralih ke root
untuk sudo -s
. Perhatikan bahwa Anda dapat menjalankan hanya su
untuk tidak mendapatkan shell login, atau sudo -i
untuk mendapatkan shell login [tidak dalam semua versi].
Kedua, su
dan su -
beralih ke pengguna baru dengan meminta Anda untuk mengautentikasi sebagai pengguna baru. sudo -s
dan sudo -i
(dan hanya biasa sudo foo
) memungkinkan Anda menjalankan perintah yang Anda pra-otorisasi [lihat /etc/sudoers
], mungkin dengan meminta Anda untuk mengkonfirmasi ID Anda saat ini .
Jika Anda ingin benar-benar imut, Anda juga dapat menjalankan sudo su -
, yang akan meminta untuk login sebagai root ( su -
) dijalankan oleh pengguna root ( sudo
bagian).
Jika pengguna root dikunci (seperti di Ubuntu), Anda tidak akan bisa login sebagai root su
. Dalam hal ini, Anda harus menggunakan sudo -s
atausudo -i
sudo
tidak memberikan hak default untuk pengguna biasa. Pada sistem itu,su
adalah satu-satunya pilihan.Akan beralih ke pengguna (dalam hal ini root) dan meluncurkan shell yang Anda tentukan, atau salah satu dari beberapa metode lain untuk menentukan shell. Ini berguna jika Anda ingin menggunakan zsh atau shell lain sebagai root dengan sangat cepat ... dan untuk beberapa alasan Anda tidak menggunakan sudo.
Cukup jalankan shell menggunakan sudo, yang akan memberi Anda shell root. Anda bisa memberikan shell untuk itu juga.
su -s lebih tua, jauh lebih tua dari perintah sudo -s. Dugaan saya adalah bahwa pengembang mencoba membuatnya semudah mungkin untuk beralih menggunakan sudo.
sumber
su adalah perintah untuk berubah ke pengguna lain, baik untuk menjalankan shell atau menjalankan perintah tertentu. Anda harus mengautentikasi sebagai pengguna lain. Jika Anda ingin su untuk melakukan root, Anda memerlukan kata sandi root.
sudo adalah perintah untuk mengeksekusi perintah lain (opsional shell) sebagai pengguna yang berbeda. Anda harus mengautentikasi sebagai pengguna Anda sendiri . Izin untuk menggunakan sudo (dan hal-hal spesifik yang dapat Anda lakukan dengannya) ditentukan oleh administrator di file sudoers.
Jika Anda memberi seseorang akses ke su (dengan, misalnya, memberi mereka kata sandi root), maka mereka dapat melakukan apa saja dengan su - jalankan perintah lain, buka shell, ubah kata sandi, login dari jarak jauh melalui ssh, dan sebagainya. Anda pada dasarnya memberi mereka akses ke akun lain, dengan 'su' menjadi satu hal yang dapat mereka lakukan dengannya.
sudo jauh lebih halus. Anda dapat memberikan hak istimewa kepada pengguna, atau ke grup. Anda dapat mengizinkan pengguna atau grup untuk sudo dalam jangka waktu tertentu (mis. Senin hingga Jumat, jam 9 pagi hingga jam 5 sore). Anda dapat menentukan daftar perintah tertentu yang diizinkan untuk dijalankan (mis. Hanya / usr / local / bin / run_backup) atau Anda dapat menentukan pengguna tertentu yang diizinkan untuk menjalankan perintah seperti (misalnya www, cadangan, staf, dll. ).
Selain fleksibilitasnya, sudo adalah solusi yang lebih baik dalam semua kasus, karena sudo tidak memerlukan akses ke apa pun yang belum dimiliki pengguna. Jika Anda memberi seseorang akses sudo, Anda dapat mencabutnya dengan menghapus baris mereka di file sudoers, atau menghapusnya dari grup sudoers. Jika Anda menghapus akun mereka, akses mereka hilang.
Jika Anda memberi mereka kata sandi root, bahkan dengan asumsi mereka tidak melakukan sesuatu yang tidak menyenangkan dengannya, maka mereka akan mengetahuinya selamanya. Jika Anda memiliki banyak orang yang memerlukan akses root untuk tugas administratif, ini berarti mengubah semua kata sandi root setiap kali seseorang pergi, atau dengan anggapan bahwa boleh saja mereka memiliki akses penuh ke sistem Anda setelah Anda pergi.
sumber
sumber
Dari Wikipedia :
sumber
Satu hal yang tidak dikatakan sepenuhnya adalah ini: yang mana yang dapat Anda gunakan sering tergantung pada distribusi apa yang Anda gunakan dan siapa yang menjalankannya. Satu atau yang lain (
su
atausudo
) mungkin tidak diatur untuk penggunaan penuh secara default. Jadi misalnya, seperti yang disebutkan beberapa orang, OS X dan Ubuntu menonaktifkan akun root (su
) secara default. Demikian pula, Debian tidak memberikan hak default kepada pengguna regulersudo
. (Pada semua sistem ini, Anda dapat mengubah default ini, tetapi hanya jika Anda memiliki semacam hak administratif untuk memulai. Saya kira kita sedang berbicara tentang situasi non-server dan Anda mengelola mesin karena kita menggunakan SU bukan dari SF, tetapi untuk berjaga-jaga.)Terakhir, jika Anda ingin menggunakan
sudo
cara yang lebih halus, Anda harus melihatman sudoers
cara mengedit file / etc / sudoers . Namun, Anda tidak boleh mengeditnya dengan tangan. Gunakan program visudo - ini akan mencegah Anda menyimpan suntingan Anda kecuali mereka setidaknya waras minimal. Ini adalah perlindungan besar terhadap kesalahan sederhana yang dapat mengunci Anda dari hak admin sistem Anda sendiri.sumber
Pada sistem di mana akun pengguna super dinonaktifkan, seperti Mac OS X,
su
tidak akan berfungsi;sudo -s
akan.Juga, tampaknya tidak ada yang
su -s
tersedia, setidaknya di komputer saya.sumber
sudo
(yang bahkan tidak selalu diinstal).Pendahuluan ini dapat membantu Anda.
su
adalah singkatansu root
, dan Anda menjaga hak-hak Anda sebagai pengguna lain tanpa batas. Lebih berbahaya, tetapi juga lebih nyaman jika Anda melakukan banyak perintah akses root selama periode waktu tertentu.sumber
su pada dasarnya akan membuat shell login baru dengan hak pengguna lain (login) sudo hanya sementara akan memungkinkan Anda untuk mengeksekusi perintah menggunakan pengguna yang Anda tentukan. Pada beberapa UNIX seperti FreeBDS tidak ada opsi '-s'.
sumber