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
pwdmenyatakan bahwa Anda sekarang berada di direktori homemary's. -
whoamimemberi tahu kami bahwa Anda menggunakan akun penggunamary. - File dalam direktori milik akun pengguna
mary. - Perintah
exitmengembalikan 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
visudobahwa 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.

