Perbedaan antara pengguna sudo dan pengguna root [tertutup]


21

The /etc/sudoersberkas daftar mana pengguna dapat melakukan apa dengan sudoperintah

Pengguna root membuat dan memodifikasi /etc/sudoersfile.

Konsep ini sulit bagi saya untuk mengerti.

Jika semua pengguna yang memiliki hak sudo milik sudoersgrup, maka semuanya dapat menjadi root dengan memberikan sudo superintah.

Lalu siapa pengguna root yang sebenarnya dan bagaimana ia mengontrol kekuatan pengguna dalam kelompok sudoers?

Tolong jelaskan kepada saya.


4
Saya pikir Anda perlu memperluas bagian mana yang sulit dimengerti.
garethTheRed

siapa pengguna root? Pertanyaan ini sulit saya pahami. Karena pengguna humn hanya dapat bergabung dengan grup sudoers
rancho

@rancho perbarui pertanyaan, tolong
peterph


Jawaban sederhana untuk pertanyaan mendasar Anda (berdasarkan komentar pada jawaban): Memang benar bahwa perbedaan antara rootakses dan sudohak menjadi tidak relevan JIKA Anda mengizinkan sudo sudijalankan. Namun, Anda tidak harus mengizinkannya. Anda dapat mengizinkan serangkaian perintah tertentu saja, misalnya memberikan sudoakses sysadmin junior Anda hanya untuk perintah cadangan spesifik.
Wildcard

Jawaban:


29

Ringkasan eksekutif: "root" adalah nama sebenarnya dari akun administrator. "sudo" adalah perintah yang memungkinkan pengguna biasa melakukan tugas administratif. "Sudo" bukan pengguna.


Jawaban panjang:

"root" (alias "pengguna super") adalah nama akun administrator sistem. Asal usul nama itu agak kuno, tapi itu tidak masalah.

Pengguna root memiliki id pengguna 0 dan secara nominal memiliki hak tak terbatas. Root dapat mengakses file apa pun, menjalankan program apa pun, menjalankan panggilan sistem apa pun, dan mengubah pengaturan apa pun. (Tapi lihat di bawah¹).

Sebelum penemuan perintah "sudo", jika Anda ingin melakukan tugas administratif, Anda harus login sebagai root, entah dengan cara mendapatkan prompt login², atau dengan superintah ("su" adalah kependekan dari pengguna pengganti.) ³

Itu sedikit merepotkan, dan juga tidak membiarkan Anda memberi pengguna sebagian kekuasaan administratif. Jadi perintah "sudo" (kependekan dari "user pengganti lakukan") diciptakan.

Perintah "sudo" memungkinkan Anda menjalankan perintah dengan hak superuser selama id pengguna Anda ada di file sudoers, memberi Anda otorisasi yang diperlukan.

Jadi, mis. sudo vi /etc/hostsAkan memungkinkan Anda untuk mengedit file host seolah-olah Anda menjalankan sebagai root. Anda bahkan tidak memerlukan kata sandi root, cukup kata sandi login Anda sendiri.

Dan tentu saja, sudo suakan memungkinkan Anda untuk menjadi root. Hasilnya sama seperti jika Anda telah login sebagai root atau menjalankan superintah, kecuali bahwa Anda tidak perlu mengetahui kata sandi root tetapi Anda harus berada di file sudoers.

File sudoers menentukan siapa yang dapat menggunakan perintah sudo dan apa yang dapat mereka lakukan dengannya.

File sudoers inilah yang memberi Anda banyak administrator administ. Secara efektif, administrator Anda adalah root, ditambah semua orang yang tercantum dalam file sudoers. Tanpa file sudoers, satu-satunya administrator adalah root.

Faktanya, di organisasi di mana orang lain mengelola komputer Anda untuk Anda, cukup umum untuk tidak mengetahui kata sandi root komputer Anda sendiri - selama Anda berada di file sudoers, itu tidak masalah.

Di satu perusahaan tempat saya bekerja, dengan server farm yang sangat besar, hanya sedikit sekali orang yang mengetahui kata sandi root. Sebagai gantinya, ada database yang diizinkan bekerja di server mana. Proses otomatis akan menambahkan Anda ke file sudoers dari server yang diizinkan untuk Anda akses, dan menghapus Anda ketika otorisasi Anda kedaluwarsa.


¹ Satu hal lagi: versi Unix modern sekarang dapat membatasi apa yang dapat dilakukan oleh pengguna root.

Di bawah SELinux (Security Enhanced Linux), ada secara efektif daftar kontrol akses yang menentukan program mana yang dapat melakukan apa, dan bahkan root tidak dapat melewati batasan itu.

Di bawah sistem Apple System Integrity Protection (SIP) (alias "rootless"), file dan direktori tertentu dikunci sehingga hanya aplikasi pada daftar putih yang sesuai yang dapat mengaksesnya.

Sistem ini ada untuk melindungi sistem dari kasus di mana pengguna jahat berhasil mendapatkan akses root. (Atau dalam beberapa kasus, untuk mencegah pengguna melakukan jailbreak terhadap perangkat yang disematkan.) Untuk alasan yang jelas, sangat sulit untuk melewati pembatasan ini, bahkan dengan akses root.

² Prompt "login:" adalah bagian kuno lain dari sejarah Unix, yang berasal dari saat kita semua menggunakan terminal ascii pada baris serial, alih-alih sistem jendela. Anda masih bisa mendapatkan prompt "login:" hanya dengan mengetikkan loginjendela terminal apa pun, atau dengan membuka koneksi ssh (atau telnet atau rsh) ke komputer Anda dari tempat lain. Anda bisa masuk sebagai pengguna lain dari sana jika mau. (Dan jika komputer Anda memiliki port serial, Anda masih dapat mengonfigurasinya untuk mengizinkannya masuk.)

³ Program individual juga dapat diberikan akses root. Program-program ini dapat melakukan apa saja yang dapat dilakukan oleh pengguna dengan akses root, bahkan ketika dijalankan oleh pengguna biasa. Ini biasanya terbatas pada tugas tertentu. Sebagai contoh, program crontab memiliki hak akses root sehingga dapat mengedit tabel cron. Jelas, "sudo" memiliki hak akses root sehingga dapat melakukan apa yang dilakukannya.

⁴ Saya akan membahas satu hal lagi yang saya bahas sebelumnya. Saya telah menggunakan "administrator" dan "root" secara bergantian, tetapi ada jenis administrator lainnya. Ini sering disebut "akun peran", yang berarti bahwa akun ini bukan milik manusia yang sebenarnya, tetapi ada untuk melakukan beberapa peran khusus pada sistem. Jika Anda melihat /etc/passwdfile di sistem Anda, Anda akan menemukan lusinan akun tersebut.

Misalnya, jika mysql diinstal pada sistem Anda, akan ada pengguna "mysql", dan semua file database, file konfigurasi, dan sebagainya semua akan dimiliki oleh pengguna itu. Hanya pengguna yang akan memiliki izin yang diperlukan untuk mengakses file dan menjalankan server mysql. Dalam arti tertentu, pengguna itu akan menjadi akun administrator, tetapi hanya untuk mysql.

Jika Anda perlu melakukan tugas administrasi basis data, Anda akan menjadi "mysql" dengan su mysqlperintah, atau menggunakan sudotempat file sudoers memberi Anda hak istimewa mysql untuk perintah khusus tersebut.


1
File sudoers inilah yang memberi Anda banyak administrator. Secara efektif, administrator Anda adalah root, ditambah semua orang yang tercantum dalam file sudoers. Tanpa file sudoers, satu-satunya administrator adalah root.
Edward Falk

1
"Di bawah SELinux (Security Enhanced Linux), ada daftar kontrol akses yang secara efektif menentukan siapa yang dapat melakukan apa, dan bahkan root tidak dapat melewati batasan-batasan itu." - jika bahkan root tidak bisa melewati batasan itu maka siapa yang menciptakan batasan itu?
rancho

1
Untuk memperjelas ini: "Secara efektif, administrator Anda adalah root, ditambah semua orang yang tercantum dalam file sudoers." entri sudoers tidak harus berarti akses root penuh atau bahkan root; Saya mungkin memberikan Sven kemampuan untuk memulai kembali agen pemantauan yang berjalan sebagai moniser.
Jeff Schaller

1
The "sudo" command lets you execute commands with superuser privileges as long as your user id is in the sudoers file [..]. Di komputer saya (Solus OS 3), ini salah. Nama pengguna saya tidak ada dalam file sudoers. dan aku masih bisa melakukannya sudo.
Martin Andersson

2
Jawaban lama dan ini adalah kesederhanaan, tetapi sumerupakan singkatan dari "pengguna pengganti"; sudoOleh karena itu "lakukan pengguna pengganti". Anda dapat menggunakannya suuntuk masuk sebagai pengguna lain, bukan hanya root. Dan Anda bisa menggunakan sudountuk menjalankan perintah sebagai pengguna lain.
josaphatv
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.