GNU/Linux >> Belajar Linux >  >> Linux

Memahami perbedaan antara perintah sudo dan su di Linux

Di salah satu artikel sebelumnya, kami membahas perintah 'sudo' secara mendetail. Menjelang akhir tutorial itu, ada penyebutan perintah serupa lainnya 'su' dalam sebuah catatan kecil. Nah, pada artikel ini, kita akan membahas secara detail perintah 'su' serta perbedaannya dengan perintah 'sudo'.

Namun sebelum kita melakukannya, harap perhatikan bahwa semua petunjuk dan contoh yang disebutkan dalam tutorial ini telah diuji pada Ubuntu 18.04 LTS dan Debian 10.

Perintah su di Linux

Pekerjaan utama dari perintah su adalah membiarkan Anda beralih ke beberapa pengguna lain selama sesi login. Dengan kata lain, alat tersebut memungkinkan Anda mengasumsikan identitas beberapa pengguna lain tanpa harus logout lalu login (sebagai pengguna tersebut).

Perintah su sebagian besar digunakan untuk beralih ke akun superuser/root (karena hak akses root sering kali diperlukan saat mengerjakan baris perintah), tetapi - seperti yang telah disebutkan - Anda dapat menggunakannya untuk beralih ke pengguna non-root lainnya sebagai baik.

Berikut cara menggunakan perintah ini untuk beralih ke pengguna root:

Sandi yang diperlukan perintah ini juga berasal dari pengguna root. Jadi secara umum, perintah su mengharuskan Anda memasukkan kata sandi pengguna target. Setelah kata sandi yang benar dimasukkan, alat akan memulai sub-sesi di dalam sesi yang ada di terminal.

su -

Ada cara lain untuk beralih ke pengguna root:jalankan perintah 'su -':

Sekarang, apa perbedaan antara 'su' dan 'su -' ? Nah, yang pertama menjaga lingkungan pengguna lama/asli bahkan setelah peralihan ke root dilakukan, sedangkan yang kedua membuat lingkungan baru (seperti yang ditentukan oleh ~/.bashrc dari pengguna root), mirip dengan kasus ketika Anda secara eksplisit masuk sebagai pengguna root dari layar masuk.

PENTING untuk pengguna Debian 10. Variabel PATH dari pengguna root berbeda pada Debian 10 saat menggunakan 'su' vs 'su -', direktori seperti /sbin hilang ketika hanya 'su' yang digunakan yang berarti Anda mungkin mendapatkan perintah tidak ditemukan kesalahan bahkan untuk administrasi sistem dasar perintah. Jadi selalu gunakan 'su -' di Debian 10 untuk menjadi pengguna root.

Halaman manual 'su' juga memperjelas:

The optional argument - may be used to provide an environment similar to what the user would expect had the user logged in directly.

Jadi, Anda akan setuju bahwa masuk dengan 'su -' lebih masuk akal. Tetapi karena perintah 'su' juga ada, orang mungkin bertanya-tanya kapan itu berguna. Kutipan berikut - diambil dari situs web wiki ArchLinux - memberikan gambaran yang baik tentang manfaat dan perangkap perintah 'su':

  • Kadang-kadang dapat menguntungkan bagi administrator sistem untuk menggunakan akun shell pengguna biasa daripada miliknya sendiri. Secara khusus, terkadang cara paling efisien untuk memecahkan masalah pengguna adalah dengan masuk ke akun pengguna tersebut untuk mereproduksi atau men-debug masalah.
  • Namun, dalam banyak situasi, tidak diinginkan, atau bahkan bisa berbahaya, bagi pengguna root untuk beroperasi dari akun shell pengguna biasa dan dengan variabel lingkungan akun itu daripada dari miliknya sendiri. Saat secara tidak sengaja menggunakan akun shell pengguna biasa, root dapat menginstal program atau membuat perubahan lain pada sistem yang tidak akan memiliki hasil yang sama seperti jika dibuat saat menggunakan akun root. Misalnya, sebuah program dapat diinstal yang dapat memberikan kekuatan kepada pengguna biasa untuk secara tidak sengaja merusak sistem atau mendapatkan akses tidak sah ke data tertentu.

Catatan:Jika Anda ingin memberikan lebih banyak argumen setelah - di 'su -', maka Anda harus menggunakan opsi baris perintah -l yang ditawarkan perintah (bukan -). Berikut definisi - dan opsi baris perintah -l:

-, -l, --login
Provide an environment similar to what the user would expect had the user logged in directly.

When - is used, it must be specified as the last su option. The other forms (-l and --login) do not have this restriction.

su -c

Ada opsi lain dari perintah 'su' yang perlu disebutkan:-c. Ini memungkinkan Anda memberikan perintah yang ingin Anda jalankan setelah beralih ke pengguna target.

Halaman manual 'su' menjelaskannya sebagai:

-c, --command COMMAND
Specify a command that will be invoked by the shell using its -c.

The executed command will have no controlling terminal. This option cannot be used to execute interactive programs which need a controlling TTY.

Perhatikan contoh template berikut:

su [target-user] -c [command-to-run]

Jadi dalam hal ini, 'command-to-run' akan dieksekusi sebagai:

[shell] -c [command-to-run]

Di mana 'shell' akan diganti dengan shell 'pengguna-target' yang ditentukan dalam /etc/passwd berkas.

Sudo vs Su

Sekarang karena kita juga telah membahas dasar-dasar perintah 'su', sekarang saatnya kita membahas perbedaan antara perintah 'sudo' dan 'su'.

Sandi

Perbedaan utama antara keduanya adalah kata sandi yang mereka butuhkan:sementara 'sudo' membutuhkan kata sandi pengguna saat ini, 'su' mengharuskan Anda memasukkan kata sandi pengguna root.

Cukup jelas, 'sudo' adalah alternatif yang lebih baik di antara keduanya sejauh menyangkut keamanan. Misalnya, pertimbangkan kasus komputer yang digunakan oleh banyak pengguna yang juga memerlukan akses root. Menggunakan 'su' dalam skenario seperti itu berarti membagikan kata sandi root dengan mereka semua, yang pada umumnya bukanlah praktik yang baik.

Selain itu, jika Anda ingin mencabut akses superuser/root dari pengguna tertentu, satu-satunya cara adalah mengubah sandi root, lalu mendistribusikan ulang sandi root yang baru di antara semua pengguna lain.

Dengan Sudo, di sisi lain, Anda dapat menangani kedua skenario ini dengan mudah. Mengingat bahwa 'sudo' mengharuskan pengguna memasukkan sandi mereka sendiri, Anda tidak perlu membagikan sandi root terlebih dahulu kepada semua pengguna. Dan untuk menghentikan pengguna tertentu mengakses hak akses root, yang harus Anda lakukan adalah mengubah entri yang sesuai di file 'sudoers'.

Perilaku default

Perbedaan lain antara kedua perintah tersebut adalah perilaku defaultnya. Meskipun 'sudo' hanya memungkinkan Anda menjalankan satu perintah dengan hak istimewa yang lebih tinggi, perintah 'su' meluncurkan shell baru, memungkinkan Anda menjalankan perintah sebanyak yang Anda inginkan dengan hak akses root sampai Anda secara eksplisit keluar dari penjualan tersebut.

Jadi, perilaku default perintah 'su' berpotensi berbahaya mengingat kemungkinan bahwa pengguna dapat melupakan fakta bahwa mereka bekerja sebagai root, dan mungkin secara tidak sengaja membuat beberapa perubahan yang tidak dapat dipulihkan (seperti menjalankan perintah 'rm -rf' dengan cara yang salah direktori). Untuk diskusi mendetail tentang mengapa tidak dianjurkan untuk selalu bekerja sebagai root, buka di sini.

Logging

Meskipun perintah yang dijalankan melalui 'sudo' dijalankan sebagai pengguna target (yang secara default adalah 'root'), perintah tersebut diberi tag dengan nama pengguna sudoer. Namun dalam kasus 'su', tidak mungkin untuk melacak secara langsung apa yang dilakukan pengguna setelah mereka melakukan su'd ke akun root.

Fleksibilitas

Perintah 'sudo' jauh lebih fleksibel karena Anda bahkan dapat membatasi perintah yang Anda inginkan agar dapat diakses oleh sudo-ers. Dengan kata lain, pengguna dengan akses ke 'sudo' hanya dapat diberikan akses ke perintah yang diperlukan untuk pekerjaan mereka. Namun, dengan 'su' itu tidak mungkin - Anda memiliki hak istimewa untuk melakukan semuanya atau tidak sama sekali.

Sudo su

Mungkin karena potensi risiko yang terkait dengan penggunaan 'su' atau masuk langsung sebagai root, beberapa distribusi Linux - seperti Ubuntu - menonaktifkan akun pengguna root secara default. Pengguna didorong untuk menggunakan 'sudo' kapan pun mereka membutuhkan hak akses root.

Namun, Anda masih dapat melakukan 'su' dengan sukses, yaitu tanpa memasukkan kata sandi root. Yang perlu Anda lakukan adalah menjalankan perintah berikut:

sudo su

Karena Anda menjalankan perintah dengan 'sudo', Anda hanya akan diminta untuk memasukkan kata sandi Anda. Jadi setelah selesai, perintah 'su' akan dijalankan sebagai root, artinya tidak akan meminta kata sandi apa pun.

PS :Jika Anda ingin mengaktifkan akun root di sistem Anda (walaupun itu sangat tidak disarankan karena Anda selalu dapat menggunakan 'sudo' atau 'sudo su'), Anda harus menyetel kata sandi root secara manual, yang dapat Anda lakukan dengan menggunakan perintah berikut:

sudo passwd root

Kesimpulan

Baik ini maupun tutorial kami sebelumnya (yang berfokus pada 'sudo') akan memberi Anda ide bagus tentang alat yang tersedia yang memungkinkan Anda melakukan tugas yang memerlukan hak istimewa yang ditingkatkan (atau yang sama sekali berbeda). Jika Anda memiliki sesuatu untuk dibagikan tentang 'su' atau 'sudo', atau ingin berbagi pengalaman Anda sendiri, Anda dapat melakukannya di komentar di bawah.


Linux
  1. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  2. Apa Perbedaan Antara Sudo Su – Dan Sudo Su —?

  3. Apa Perbedaan Antara Pengguna Biasa dan Pengguna Sistem?

  1. Apa perbedaan antara perintah locate dan find di Linux?

  2. Contoh Perintah sudo di Linux

  3. Apa perbedaan antara &> dan >&di bash?

  1. Pelajari Perbedaan Antara Perintah "su" dan "su -" di Linux

  2. Perbedaan Antara Akun Pengguna dan Layanan?

  3. Di Linux, apa perbedaan antara buffer dan cache yang dilaporkan oleh perintah free?