Cara Mengontrol Akses Sudo di Linux

Diterbitkan: 2022-01-29
Jendela terminal Linux pada desktop bergaya Ubuntu.
Fatmawati Achmad Zaenuri/Shutterstock

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.

Iklan

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 .

Iklan

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 home mary's .
  • whoami memberi tahu kami bahwa Anda menggunakan akun pengguna mary .
  • 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.

Iklan

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.

editor nano 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 .

File sudoers dengan garis %sudo disorot

Iklan

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 

Iklan

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 

Iklan

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 file sudoer untuk harry

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.

Iklan

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 menjadi User_Alias .
  • INSTALLERS : Ini adalah nama arbitrer untuk alias ini.
  • = harry, mary : Daftar pengguna yang akan disertakan dalam alias ini.
Iklan

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
Iklan

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.