Apa perbedaan antara perintah sudo dan su?

12

Apa perbedaan antara perintah sudodan su? Mengapa OS X menangani ini berbeda dari Linux?

whitefleaCH
sumber
1
Jika ada, Linux akan menangani mereka secara berbeda dari OS X. OS X bersertifikat Unix, yang berarti sesuai dengan standar perilaku tertentu. Linux mirip Unix, tetapi tidak bersertifikat Unix dan tidak selalu sesuai dengan standar Unix. Jadi jika ada perbedaan (selain masalah kata sandi root yang disebutkan dalam jawaban Aaron Lake), mereka tidak sesuai pada bagian dari pelaksana distribusi Linux tertentu yang dimaksud.
alesplin

Jawaban:

21

OS X menangani sudodan suidentik dengan Linux.

sudoadalah perintah yang, tanpa opsi tambahan, akan menjalankan perintah sebagai root. Sebagai contoh:

% touch /newfile
touch: /newfile: Permission denied
% ls -l /newfile
ls: /newfile: No such file or directory
% sudo touch /newfile
% ls -l /newfile 
-rw-r--r--  1 root  wheel  0 Apr 27 11:45 /newfile

sudi sisi lain, akan mengalihkan pengguna saat ini ke root (lagi tanpa perintah tambahan). Dalam contoh di bawah ini, saya harus menjalankan sudo su, karena saya tidak tahu kata sandi root untuk sistem saya:

% whoami
alake
% sudo su
$ whoami
root

Perbedaan utama antara sudodan suadalah sudoberjalan perintah sebagai root, sedangkan sumerek Anda root. Sama seperti utilitas baris perintah lainnya, ada sejumlah cara alternatif untuk menggunakan keduanya sudodan su, jika Anda tertarik, Anda selalu dapat menjalankan man <command>mis. man sudountuk mendapatkan informasi lebih lanjut.

Danau Aaron
sumber
5
Dalam istilah bahasa yang sederhana sudobisa jadi sebagai super user and do. Sebagai poin tambahan, pada OS X, setelah Anda berhasil mengautentikasi, Anda dapat menggunakan sudo tanpa kata sandi untuk waktu yang singkat (5 menit secara default, kecuali diganti sudoers) setelah itu Anda harus mengetikkan kata sandi lagi.
binarybob
1
'tanpa opsi tambahan' adalah kualifikasi yang cukup signifikan ... mereka berdua akan membiarkan Anda menjadi pengguna selain root ... misalnya, sudo su -lm _wwwakan membiarkan Anda memiliki shell seolah-olah pengguna server web (dengan menjalankan perintah sebagai root, seperti tidak memiliki kata sandi yang valid)
Joe
2
@ Jo, saya mempertimbangkan untuk menambahkan informasi itu tetapi dihilangkan karena singkatnya. Seperti yang Anda jelaskan, sudoini adalah utilitas yang cukup kuat dan bahkan mencakup fungsionalitas dasar di sini pada akhirnya akan membingungkan atau membanjiri audiens target mencari perbedaan antara sudodan su.
Aaron Lake
"Perbedaan utama antara sudo dan su adalah sudo menjalankan perintah sebagai root, sedangkan su membuat Anda melakukan root" - false, sudo -smenjalankan shell ("membuat Anda melakukan root"), dan su -c commandmenjalankan perintah sebagai root.
el.pescado
2
Sekali lagi demi singkatnya, saya menghilangkan banyak metode alternatif untuk menggunakan sudo. Selain itu, Anda tidak dapat melakukan su -c commandsecara default pada OS X, karena Anda tidak tahu kata sandi root. Namun sudo su, Anda dapat mengubah kata sandi su -c command. Saya merasa bahwa pertanyaan itu terjawab, dan tidak perlu menyelam lebih dalam untuk menggunakan sudo dan su secara bergantian. Namun saya akan memperbarui posting untuk orang-orang yang penasaran.
Aaron Lake