GNU/Linux >> Belajar Linux >  >> Ubuntu

Panduan pemula untuk memahami sudo di Ubuntu

Pernah mendapat kesalahan 'Izin ditolak' saat bekerja di baris perintah Linux? Kemungkinannya adalah Anda mencoba melakukan operasi yang memerlukan izin root. Misalnya, tangkapan layar berikut menunjukkan kesalahan yang muncul saat saya mencoba menyalin file biner ke salah satu direktori sistem:

Jadi apa solusi untuk masalah ini? Sederhana, gunakan sudo perintah.

Pengguna yang menjalankan perintah akan dimintai kata sandi login mereka. Setelah kata sandi yang benar dimasukkan, operasi akan berhasil dilakukan.

Meskipun sudo tidak diragukan lagi merupakan perintah yang harus diketahui untuk setiap dan semua orang yang bekerja pada baris perintah di Linux, ada beberapa detail terkait lainnya (dan mendalam) yang harus Anda ketahui untuk menggunakan perintah secara lebih bertanggung jawab dan efektif. Dan itulah yang akan kita bahas di artikel ini.

But before we move ahead, it's worth mentioning that all the commands and instructions mentioned in this article have been tested on Ubuntu 14.04LTS with Bash shell version 4.3.11.

Apa itu sudo?

Perintah sudo, seperti yang mungkin sudah Anda ketahui, digunakan untuk menjalankan perintah dengan hak istimewa yang lebih tinggi (biasanya sebagai root). Contohnya sudah kita bahas di bagian pendahuluan di atas. Namun, jika mau, Anda dapat menggunakan sudo untuk menjalankan perintah sebagai pengguna (non-root) lainnya.

Ini dicapai melalui -u opsi baris perintah yang disediakan alat. Misalnya, dalam contoh yang ditunjukkan di bawah ini, saya (himanshu) mencoba mengganti nama file di direktori home (howtoforge) beberapa pengguna lain, tetapi mendapat kesalahan 'izin ditolak'. Dan kemudian saya mencoba perintah 'mv' yang sama dengan 'Sudo -u howtoforge,' perintah itu berhasil:

Dapatkah setiap pengguna menggunakan sudo?

Tidak. Agar pengguna dapat menggunakan sudo, entri yang sesuai dengan pengguna tersebut harus berada di /etc/sudoers mengajukan. Paragraf berikut - diambil dari situs web Ubuntu - seharusnya membuatnya lebih jelas:

The /etc/sudoers file controls who can run what commands as what users on what machines and can also control special things such as whether you need a password for particular commands. The file is composed of aliases (basically variables) and user specifications (which control who can run what).

Jika Anda menggunakan Ubuntu, mudah untuk memastikan bahwa pengguna dapat menjalankan perintah sudo:yang harus Anda lakukan adalah membuat akun pengguna tersebut mengetik 'administrator'. Ini dapat dilakukan dengan menuju ke Pengaturan Sistem... -> Akun Pengguna.

Membuka kunci jendela:

Kemudian pilih pengguna yang jenis akunnya ingin Anda ubah, lalu ubah jenisnya menjadi 'administrator'

Namun, jika Anda tidak menggunakan Ubuntu, atau distribusi Anda tidak menyediakan fitur ini, Anda dapat mengedit /etc/sudoers secara manual file untuk melakukan perubahan. Anda akan diminta untuk menambahkan baris berikut dalam file tersebut:

[user]    ALL=(ALL:ALL) ALL

Tentu saja, [pengguna] harus diganti dengan nama pengguna akun yang Anda berikan hak istimewa sudo. Hal penting yang perlu disebutkan di sini adalah bahwa metode yang disarankan secara resmi untuk mengedit file ini adalah melalui visudo perintah - yang harus Anda lakukan adalah menjalankan perintah berikut:

sudo visudo

Untuk memberi Anda gambaran mengapa hal itu terjadi, berikut kutipan dari manual visudo:

visudo edits the sudoers file in a safe fashion. visudo locks the sudoers file against multiple simultaneous edits, provides basic sanity checks, and checks for parse errors. If the sudoers file is currently being edited you will receive a message to try again later.

Untuk informasi lebih lanjut tentang visudo, kunjungi di sini.

Apa itu sesi sudo?

Jika Anda sering menggunakan perintah sudo, saya yakin Anda akan mengamati bahwa setelah Anda berhasil memasukkan sandi sekali, Anda dapat menjalankan beberapa perintah sudo tanpa dimintai sandi. Tetapi setelah beberapa saat, perintah sudo meminta kata sandi Anda lagi.

Perilaku ini tidak ada hubungannya dengan jumlah perintah sudo-powered yang Anda jalankan, tetapi tergantung pada waktu. Ya, secara default, sudo tidak akan meminta kata sandi selama 15 menit setelah pengguna memasukkannya sekali. Posting 15 menit ini, Anda akan dimintai sandi lagi.

Namun, jika Anda mau, Anda dapat mengubah perilaku ini. Untuk ini, buka file /etc/sudoers menggunakan perintah berikut:

sudo visudo

Dan kemudian pergi ke baris yang berbunyi:

Defaults env_reset

dan tambahkan variabel berikut (disorot dengan huruf tebal di bawah) di akhir baris

Defaults env_reset,timestamp_timeout=[new-value]

Bidang [nilai baru] harus diganti dengan jumlah menit yang Anda inginkan agar sesi sudo Anda bertahan. Misalnya, saya menggunakan nilai 40.

Jika Anda ingin dimintai kata sandi setiap kali Anda menggunakan perintah sudo, maka dalam hal ini Anda dapat menetapkan nilai '0' ke variabel ini. Dan bagi Anda yang menginginkan sesi sudo mereka tidak pernah habis, Anda dapat menetapkan nilai '-1'.

Harap diperhatikan bahwa penggunaan timestamp_timeout dengan nilai '-1' sangat tidak disarankan.

Kata sandi sudo

Seperti yang mungkin telah Anda amati, setiap kali Sudo meminta kata sandi dan Anda mulai memasukkannya, tidak ada yang muncul - bahkan tanda bintang pun tidak biasanya. Meskipun itu bukan masalah besar secara umum, beberapa pengguna mungkin ingin agar tanda bintang ditampilkan karena alasan apa pun.

Hal baiknya adalah itu mungkin dan cukup mudah dilakukan. Yang harus Anda lakukan adalah mengubah baris berikut di file /etc/sudoers:

Defaults        env_reset

untuk

Defaults        env_reset,pwfeedback

Dan simpan file tersebut.

Sekarang, setiap kali Anda mengetik kata sandi sudo, tanda bintang akan muncul.

Beberapa opsi baris perintah sudo yang penting

Selain opsi baris perintah -u (yang telah kita bahas di awal tutorial ini), ada beberapa opsi baris perintah sudo penting lainnya yang perlu disebutkan. Di bagian ini, kita akan membahas beberapa di antaranya.

Opsi -k

Pertimbangkan kasus di mana Anda baru saja menjalankan perintah sudo-powered setelah memasukkan kata sandi Anda. Sekarang, seperti yang sudah Anda ketahui, sesi sudo tetap aktif selama 15 menit secara default. Misalkan selama sesi ini, Anda harus memberi seseorang akses ke terminal Anda, tetapi Anda tidak ingin mereka dapat menggunakan Sudo. Apa yang akan kamu lakukan?

Untungnya, ada opsi baris perintah -k yang memungkinkan pengguna untuk mencabut izin sudo. Inilah yang dikatakan halaman manual Sudo tentang opsi ini:

-k, --reset-timestamp

When used without a command, invalidates the user's cached credentials. In other words, the next time sudo is run a password will be required. This option does not require a password and was added to allow a user to revoke sudo permissions from a .logout file.

When used in conjunction with a command or an option that may require a password, this option will cause sudo to ignore the user's cached credentials. As a result, sudo will prompt for a password (if one is required by the security policy) and will not update the user's cached credentials.

Opsi -s

Mungkin ada kalanya Anda bekerja mengharuskan Anda menjalankan banyak perintah yang memerlukan hak akses root, dan Anda tidak ingin memasukkan sandi sudo sesekali. Juga, Anda tidak ingin mengubah batas waktu habis sesi sudo dengan membuat perubahan pada file /etc/sudoers.

Dalam hal ini, Anda mungkin ingin menggunakan -s opsi baris perintah dari perintah sudo. Begini cara halaman manual Sudo menjelaskannya:

-s, --shell

Run the shell specified by the SHELL environment variable if it is set or the shell specified by the invoking user's password database entry. If a command is specified, it is passed to the shell for execution via the shell's -c option. If no command is specified, an interactive shell is executed.

Jadi pada dasarnya, apa yang dilakukan opsi baris perintah ini adalah:

  • Meluncurkan shell baru - untuk shell yang mana, variabel env SHELL dirujuk. Jika $SHELL kosong, shell ditentukan di /etc/passwd file diambil.
  • Jika Anda juga memberikan nama perintah bersama dengan opsi -s (misalnya:sudo -s whoami ), maka perintah sebenarnya yang dijalankan adalah: sudo /bin/bash -c whoami.
  • Jika Anda tidak mencoba menjalankan perintah lain (artinya, Anda hanya mencoba menjalankan Sudo -s ) maka Anda mendapatkan shell interaktif dengan hak akses root.

Yang perlu diingat di sini adalah -s opsi baris perintah memberi Anda shell dengan hak akses root, tetapi Anda tidak mendapatkan lingkungan root - .bashrc Anda yang bersumber. Ini berarti, misalnya, di shell baru yang sudo -s berjalan, menjalankan whoami perintah akan tetap mengembalikan nama pengguna Anda, dan bukan 'root'.

Opsi -i

Opsi -i mirip dengan opsi -s yang baru saja kita bahas. Namun, ada beberapa perbedaan. Salah satu perbedaan utama adalah -i memberi Anda lingkungan root juga, artinya .bashrc Anda (pengguna) diabaikan. Ini seperti menjadi root tanpa secara eksplisit masuk sebagai root. Terlebih lagi, Anda tidak perlu memasukkan kata sandi pengguna root juga.

Penting :Harap perhatikan bahwa ada su perintah yang juga memungkinkan Anda mengganti pengguna (secara default, ini memungkinkan Anda menjadi root). Perintah ini mengharuskan Anda memasukkan sandi 'root'. Untuk menghindari ini, Anda juga dapat menjalankannya dengan sudo ('sudo su'); dalam hal ini Anda hanya perlu memasukkan kata sandi login Anda. Namun, 'su' dan 'sudo su' memiliki beberapa perbedaan mendasar - untuk memahaminya serta mengetahui lebih banyak tentang bagaimana 'sudo -i' dibandingkan dengan mereka, buka di sini.

Kesimpulan

Saya harap sekarang Anda setidaknya memiliki ide dasar di balik Sudo, dan bagaimana Anda mengubah perilaku defaultnya. Cobalah tweak /etc/sudoers yang telah kami jelaskan di sini, juga melalui diskusi forum (tertaut di paragraf terakhir) untuk mendapatkan lebih banyak wawasan tentang perintah sudo.


Ubuntu
  1. Cara Menginstal MongoDB di Ubuntu 18.04 – Panduan untuk Pemula

  2. Dimulai dengan Vagrant di Ubuntu 14.10 - Panduan Pemula

  3. Menjadi Pengguna Root di Ubuntu 22.04 - Panduan langkah demi langkah?

  1. Panduan terminal Linux untuk pemula

  2. Instal PostgreSQL di Ubuntu 20.04 - Panduan langkah demi langkah?

  3. Panduan pemula untuk editor vi (referensi baris perintah)

  1. Instal Apache Subversion di Ubuntu 20.04 LTS - Panduan langkah demi langkah?

  2. Instal RabbitMQ di Ubuntu 20.04 LTS - Panduan langkah demi langkah?

  3. Ubuntu - Jalankan perintah saat start-up dengan sudo