Cara Mengontrol Akses Sudo di Linux
Diterbitkan: 2022-01-29 Perintah sudo
memungkinkan Anda menjalankan perintah di Linux seolah-olah Anda adalah orang lain, seperti root
. sudo
juga memungkinkan Anda mengontrol siapa yang dapat mengakses kemampuan root's
, dengan perincian. Beri pengguna akses penuh atau biarkan mereka menggunakan sebagian kecil perintah. Kami tunjukkan caranya.
Sudo dan Izin Root
Kita semua pernah mendengar (penyederhanaan yang berlebihan) bahwa segala sesuatu di Linux adalah file. Sebenarnya, hampir semua yang ada di sistem operasi mulai dari proses, file, direktori, soket, dan pipa berbicara dengan kernel melalui deskriptor file. Jadi, meskipun semuanya bukan file, sebagian besar objek sistem operasi ditangani seolah-olah begitu. Jika memungkinkan, desain sistem operasi mirip Linux dan Unix mengikuti prinsip ini.
Konsep "semuanya adalah file" sangat luas di Linux. Sangat mudah untuk melihat kemudian, bagaimana hak akses file di Linux menjadi salah satu andalan hak istimewa dan hak pengguna. Jika Anda memiliki file atau direktori (jenis file khusus), Anda dapat melakukan apa pun yang Anda suka dengannya, termasuk mengedit, mengganti nama, memindahkan, dan menghapusnya. Anda juga dapat mengatur izin pada file sehingga pengguna atau grup pengguna lain dapat membaca, memodifikasi, atau menjalankan file. Setiap orang diatur oleh izin ini.
Semua orang itu, selain pengguna super, dikenal sebagai root
. Akun root
adalah akun dengan hak istimewa khusus. Itu tidak terikat oleh izin pada salah satu objek di sistem operasi. Pengguna root dapat melakukan apa saja untuk apa saja dan, cukup banyak, kapan saja.
Tentu saja, siapa pun yang memiliki akses ke kata sandi root's
dapat melakukan hal yang sama. Mereka bisa mendatangkan malapetaka baik secara jahat atau tidak sengaja. Bahkan, pengguna root
dapat membuat kesalahan dengan membuat kesalahan juga. Tidak ada orang yang sempurna. Itu hal yang berbahaya.
Inilah mengapa sekarang dianggap praktik terbaik untuk tidak masuk sebagai root
sama sekali. Masuk dengan akun pengguna biasa dan gunakan sudo
untuk meningkatkan hak istimewa Anda selama Anda membutuhkannya. Seringkali itu hanya untuk mengeluarkan satu perintah.
TERKAIT: Apa Artinya "Semuanya Adalah File" di Linux?
Daftar sudoers
sudo
sudah diinstal pada komputer Ubuntu 18.04.3, Manjaro 18.1.0, dan Fedora 31 yang digunakan untuk meneliti artikel ini. Ini bukan kejutan. sudo
telah ada sejak awal 1980-an dan telah menjadi sarana standar operasi superuser untuk hampir semua distribusi.
Saat Anda menginstal distro modern, pengguna yang Anda buat selama penginstalan akan ditambahkan ke daftar pengguna yang disebut sudoers . Ini adalah pengguna yang dapat menggunakan perintah sudo
. Karena Anda memiliki kekuatan sudo
, Anda dapat menggunakannya untuk menambahkan pengguna lain ke daftar sudoers.
Tentu saja, sangat ceroboh untuk memberikan status pengguna super penuh mau tak mau, atau kepada siapa saja yang hanya memiliki sebagian atau kebutuhan khusus. Daftar sudoers memungkinkan Anda untuk menentukan perintah mana yang boleh digunakan oleh berbagai pengguna dengan sudo
. Dengan begitu, Anda tidak memberi mereka kunci kerajaan, tetapi mereka masih bisa menyelesaikan apa yang perlu mereka lakukan.
Menjalankan Perintah sebagai Pengguna Lain
Awalnya, itu disebut "superuser do", karena Anda bisa melakukan sesuatu sebagai superuser. Cakupannya telah diperluas sekarang, dan Anda dapat menggunakan sudo
untuk menjalankan perintah seolah-olah Anda adalah pengguna mana pun. Telah diganti namanya untuk mencerminkan fungsi baru itu. Sekarang disebut "pengguna pengganti lakukan."
Untuk menggunakan sudo
untuk menjalankan perintah sebagai pengguna lain, kita perlu menggunakan opsi -u
(pengguna). Di sini, kita akan menjalankan perintah whoami sebagai pengguna mary
. Jika Anda menggunakan perintah sudo
tanpa opsi -u
, Anda akan menjalankan perintah sebagai root
.
Dan tentu saja, karena Anda menggunakan sudo
, Anda akan dimintai kata sandi.
sudo -u mary whoami
Tanggapan dari whoami
memberi tahu kita bahwa akun pengguna yang menjalankan perintah adalah mary
.
Anda dapat menggunakan perintah sudo
untuk masuk sebagai pengguna lain tanpa mengetahui kata sandi mereka. Anda akan dimintai kata sandi Anda sendiri. Kita perlu menggunakan opsi -i
(login).
sudo -i -u mary
pwd
siapa saya
ls -hl
keluar
Anda login sebagai mary
. File ".bashrc", ".bash_aliases", dan ".profile" untuk akun pengguna mary diproses persis seperti jika pemilik akun pengguna mary telah login sendiri.
- Prompt perintah berubah untuk mencerminkan bahwa ini adalah sesi untuk akun pengguna
mary
. - Perintah
pwd
menyatakan bahwa Anda sekarang berada di direktori homemary's
. -
whoami
memberi tahu kami bahwa Anda menggunakan akun penggunamary
. - File dalam direktori milik akun pengguna
mary
. - Perintah
exit
mengembalikan Anda ke sesi akun pengguna normal Anda.
Mengedit File sudoers
Untuk menambahkan pengguna ke daftar orang yang dapat menggunakan sudo
, Anda perlu mengedit file sudoers
. Sangat penting bahwa Anda hanya pernah melakukannya menggunakan perintah visudo
. Perintah visudo
mencegah banyak orang mencoba mengedit file sudoers sekaligus. Itu juga melakukan pemeriksaan sintaks dan parsing pada konten file saat Anda menyimpannya.
Jika hasil edit Anda tidak lulus tes, file tidak disimpan secara membabi buta. Anda mendapatkan opsi. Anda dapat membatalkan dan mengabaikan perubahan, kembali dan mengedit perubahan lagi, atau memaksa pengeditan yang salah untuk disimpan. Opsi terakhir adalah ide yang sangat buruk. Jangan tergoda untuk melakukan itu. Anda dapat menemukan diri Anda dalam situasi di mana semua orang secara tidak sengaja terkunci dari penggunaan sudo
.
Meskipun Anda memulai proses pengeditan menggunakan perintah visudo
, visudo
bukanlah editor. Ini memanggil salah satu editor Anda yang ada untuk melakukan pengeditan file. Di Manjaro dan Ubuntu, perintah visudo
meluncurkan editor sederhana nano
. Di Fedora, visudo
meluncurkan vim
yang lebih mampu—tetapi kurang intuitif.
TERKAIT: Cara Keluar dari Editor Vi atau Vim
Jika Anda lebih suka menggunakan nano
di Fedora, Anda dapat melakukannya dengan mudah. Pertama, instal nano
:
sudo dnf instal nano
Dan kemudian visudo
harus dipanggil dengan perintah ini:
sudo EDITOR=nano visudo
Itu terlihat seperti kandidat yang baik untuk alias. Editor nano
dibuka dengan file sudoers dimuat di dalamnya.
Menambahkan Pengguna ke Grup Sudo
Gunakan visudo
untuk membuka file sudoers. Gunakan perintah ini atau yang dijelaskan di atas untuk menentukan editor pilihan Anda:
sudo visudo
Gulir file sudoers sampai Anda melihat definisi entri %sudo
.
Tanda persentase menunjukkan bahwa ini adalah definisi grup dan bukan definisi pengguna. Pada beberapa distribusi, baris %sudo
memiliki hash #
di awal baris. Ini membuat baris menjadi komentar. Jika ini masalahnya, hapus hash dan simpan file.
Baris %sudo
rusak seperti ini:
- %sudo : Nama grup.
- ALL= : Aturan ini berlaku untuk semua host di jaringan ini.
- (ALL:ALL) : anggota grup ini dapat menjalankan perintah sebagai semua pengguna dan semua grup.
- Semua : anggota grup ini dapat menjalankan semua perintah.
Singkatnya, anggota grup ini dapat menjalankan perintah apa pun, sebagai pengguna atau grup mana pun, di komputer ini atau di host lain mana pun di jaringan ini. Jadi cara sederhana untuk memberi seseorang hak akses root dan kemampuan untuk menggunakan sudo
, adalah dengan menambahkannya ke grup sudo
.
Kami memiliki dua pengguna, Tom dan Mary, dengan akun pengguna masing-masing tom
dan mary
. Kami akan menambahkan akun pengguna tom
ke grup sudo
dengan perintah usermod
. Opsi -G
(grup) menentukan grup tempat kita akan menambahkan akun tom
. Opsi -a
(tambahkan) menambahkan grup ini ke daftar grup yang sudah ada akun pengguna tom
. Tanpa opsi ini, akun pengguna tom
akan ditempatkan di grup baru tetapi dihapus dari grup lain mana pun.
sudo usermod -a -G sudo tom
Mari kita periksa di grup mana Mary berada:
kelompok
Akun pengguna mary
hanya ada di grup mary
.
Mari kita periksa dengan Tom:
kelompok
Akun pengguna tom
—dan karena itu, Tom—ada di grup tom
dan sudo
.
Mari kita coba membuat Mary melakukan sesuatu yang membutuhkan hak sudo
.
sudo lebih sedikit /etc/shadow
Mary tidak dapat melihat ke dalam file yang dibatasi "/etc/shadow." Dia mendapat teguran ringan karena mencoba menggunakan sudo
tanpa izin. Mari kita bagaimana tarif Tom:
sudo lebih sedikit /etc/shadow
Segera setelah Tom memasukkan kata sandinya, dia diperlihatkan file /etc/shadow.
Hanya dengan menambahkannya ke grup sudo
, dia telah diangkat ke jajaran elit dari mereka yang dapat menggunakan sudo
. Benar-benar tidak dibatasi.
Memberi Pengguna Hak Sudo Terbatas
Tom telah diberikan hak sudo
penuh. Dia bisa melakukan apa saja yang root
—atau siapa pun di grup sudo
—bisa melakukannya. Itu mungkin memberinya lebih banyak kekuatan daripada yang dengan senang hati Anda serahkan. Terkadang ada persyaratan bagi pengguna untuk melakukan fungsi yang memerlukan hak akses root
, tetapi tidak ada kasus yang dapat dibenarkan bagi mereka untuk memiliki akses sudo
penuh. Anda dapat mencapai keseimbangan itu dengan menambahkannya ke file sudoers dan membuat daftar perintah yang dapat mereka gunakan.
Mari berkenalan dengan Harry, pemilik akun pengguna harry
. Dia tidak ada dalam grup sudo
, dan dia tidak memiliki hak istimewa sudo
.
kelompok
Hal ini berguna bagi Harry untuk dapat menginstal perangkat lunak, tetapi kami tidak ingin dia memiliki hak sudo
penuh. OK tidak masalah. mari kita jalankan visudo
:
sudo visudo
Gulir ke bawah melalui file sampai Anda melewati definisi grup. Kami akan menambahkan baris untuk Harry. Karena ini adalah definisi pengguna dan bukan definisi grup, kita tidak perlu memulai baris dengan tanda persentase.
Entri untuk akun pengguna harry adalah:
harry ALL=/usr/bin/apt-get
Perhatikan bahwa ada tab antara "harry" dan "ALL=."
Ini berbunyi sebagai akun pengguna harry
dapat menggunakan perintah yang terdaftar pada semua host yang terhubung ke jaringan ini. Ada satu perintah yang terdaftar, yaitu "/usr/bin/apt-get." Kami dapat memberikan Harry akses ke lebih dari satu perintah dengan menambahkannya ke daftar perintah, dipisahkan dengan koma.
Tambahkan baris ke file sudoers, dan simpan file. Jika Anda ingin memeriksa ulang apakah baris sudah benar secara sintaksis, kami dapat meminta visudo
untuk memindai file dan memeriksa sintaks untuk kami, dengan menggunakan opsi -c
(hanya centang):
sudo visudo -c
Pemeriksaan dilakukan dan visudo
melaporkan bahwa semuanya baik-baik saja. Harry sekarang seharusnya dapat menggunakan apt-get
untuk menginstal perangkat lunak tetapi harus ditolak jika dia mencoba menggunakan perintah lain yang membutuhkan sudo
.
sudo apt-get install jari
Hak sudo
yang sesuai telah diberikan kepada Harry, dan dia dapat menginstal perangkat lunak.
Apa yang terjadi jika Harry mencoba menggunakan perintah lain yang membutuhkan sudo
?
sudo matikan sekarang
Harry dicegah menjalankan perintah. Kami telah berhasil memberinya akses yang spesifik dan terbatas. Dia dapat menggunakan perintah yang dinominasikan dan tidak ada yang lain.
Menggunakan Alias Pengguna sudoers
Jika kita ingin memberi Mary hak istimewa yang sama, kita bisa menambahkan baris di file sudoers untuk akun pengguna mary
dengan cara yang persis sama seperti yang kita lakukan dengan Harry. Cara lain yang lebih rapi untuk mencapai hal yang sama adalah dengan menggunakan User_Alias
.
dalam file sudoers, User_Alias
berisi daftar nama akun pengguna. Nama User_Alias
kemudian dapat digunakan dalam definisi untuk mewakili semua akun pengguna tersebut. Jika Anda ingin mengubah hak istimewa untuk akun pengguna tersebut, Anda hanya memiliki satu baris untuk diedit.
Mari buat User_Alias
dan gunakan di file sudoers kita.
sudo visudo
Gulir ke bawah dalam file hingga Anda menemukan baris spesifikasi User_Alias.
Tambahkan User_Alias
dengan mengetik:
User_Alias INSTALLERS = harry, mary
Setiap elemen dipisahkan oleh spasi, bukan tab. Logikanya pecah menjadi:
- User_Alias : Ini memberitahu
visudo
bahwa ini akan menjadiUser_Alias
. - INSTALLERS : Ini adalah nama arbitrer untuk alias ini.
- = harry, mary : Daftar pengguna yang akan disertakan dalam alias ini.
Sekarang kita akan mengedit baris yang kita tambahkan sebelumnya untuk akun pengguna harry
:
harry ALL=/usr/bin/apt-get
Ubah sehingga berbunyi:
PEMASANG SEMUA=/usr/bin/apt-get
Ini mengatakan bahwa semua akun pengguna yang terdapat dalam definisi "INSTALLERS" User_Alias
dapat menjalankan perintah apt-get
. Kami dapat menguji ini dengan Mary, yang sekarang seharusnya dapat menginstal perangkat lunak.
sudo apt-get install colordiff
Mary dapat menginstal perangkat lunak karena dia berada di "INSTALLERS" User_Alias
, dan User_Alias
telah diberikan hak tersebut.
Tiga Trik Sudo Cepat
Saat Anda lupa menambahkan sudo
ke perintah, ketik
sudo!!
Dan perintah terakhir akan diulang dengan sudo
ditambahkan ke awal baris.
Setelah Anda menggunakan sudo
dan mengautentikasi dengan kata sandi Anda, Anda tidak perlu menggunakan kata sandi Anda dengan perintah sudo
lebih lanjut selama 15 menit. Jika Anda ingin otentikasi Anda langsung dilupakan, gunakan:
sudo -k
Pernah bertanya-tanya di mana Anda dapat melihat upaya perintah sudo
yang gagal? Mereka pergi ke file "/var/log/auth.log". Anda dapat melihatnya dengan:
less /var/log/auth.log
Kita dapat melihat entri untuk akun pengguna mary yang login di TTY pts/1 ketika dia mencoba menjalankan perintah shutdown
sebagai pengguna “root.”
Dengan Kekuatan Besar…
…datanglah kemampuan untuk mendelegasikan sebagiannya kepada orang lain. Sekarang Anda tahu cara memberdayakan pengguna lain secara selektif.