Sự khác biệt giữa lệnh sudo và su là gì?


12

Sự khác biệt giữa lệnh sudosulệnh là gì? Tại sao OS X xử lý những thứ này khác với Linux?


1
Nếu bất cứ điều gì, Linux sẽ xử lý chúng khác với OS X. OS X được chứng nhận Unix, có nghĩa là nó tuân thủ một tiêu chuẩn hành vi nhất định. Linux giống Unix, nhưng không được chứng nhận Unix và không nhất thiết phải tuân theo tiêu chuẩn Unix. Vì vậy, nếu có sự khác biệt (ngoài vấn đề mật khẩu gốc được ghi chú trong câu trả lời của Aaron Lake), thì chúng không tuân thủ về phía những người thực hiện phân phối Linux cụ thể được đề cập.
alesplin

Câu trả lời:


21

OS X xử lý sudosunhận dạng Linux.

sudolà một lệnh mà không có bất kỳ tùy chọn bổ sung nào sẽ chạy lệnh dưới dạng root. Ví dụ:

% 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

sumặt khác, sẽ chuyển người dùng hiện tại sang root (một lần nữa mà không có bất kỳ lệnh bổ sung nào). Trong ví dụ dưới đây, tôi phải chạy sudo su, vì tôi không biết mật khẩu gốc cho hệ thống của mình:

% whoami
alake
% sudo su
$ whoami
root

Sự khác biệt chính giữa sudosusudochạy một lệnh là root, trong khi đó sulàm cho bạn root. Giống như các tiện ích dòng lệnh khác, có một số cách khác để sử dụng cả hai sudosu, nếu bạn quan tâm, bạn luôn có thể chạy, man <command>vd. man sudođể có thêm thông tin.


5
Trong ngôn ngữ đơn giản sudocó thể được mặc dù như super user and do. Là một điểm bổ sung, trên OS X, khi bạn đã xác thực thành công, bạn có thể sử dụng sudo mà không cần mật khẩu trong một thời gian ngắn (5 phút theo mặc định, trừ khi bị ghi đè sudoers) sau đó bạn sẽ phải nhập lại mật khẩu.
binarybob

1
'không có tùy chọn bổ sung' là một vòng loại khá quan trọng ... cả hai sẽ cho phép bạn trở thành người dùng khác ngoài root ... ví dụ: sudo su -lm _wwwsẽ cho phép bạn có vỏ như thể người dùng máy chủ web (bằng cách chạy lệnh dưới dạng root, như nó không có mật khẩu hợp lệ)
Joe

2
@Joe, tôi đã xem xét thêm thông tin đó nhưng bỏ qua cho ngắn gọn. Như bạn mô tả, sudolà một tiện ích khá mạnh mẽ và bao gồm cả chức năng cơ bản ở đây cuối cùng sẽ gây nhầm lẫn hoặc áp đảo đối tượng mục tiêu đang tìm kiếm sự khác biệt giữa sudosu.
Aaron Lake

"Sự khác biệt chính giữa sudo và su là sudo chạy một lệnh là root, trong khi su làm cho bạn root" - false, sudo -schạy shell ("khiến bạn root") và su -c commandchạy lệnh dưới quyền root.
el.pescado

2
Một lần nữa vì lợi ích của tôi, tôi đã bỏ qua nhiều phương pháp sử dụng khác sudo. Ngoài ra, bạn không thể làm su -c commandtheo mặc định trên OS X, vì bạn không biết mật khẩu của root. Bạn có thể, tuy nhiên sudo su, thay đổi mật khẩu, sau đó su -c command. Tôi cảm thấy rằng câu hỏi đã được trả lời, và không cần phải đi sâu hơn để sử dụng xen kẽ sudo và su. Tuy nhiên tôi sẽ cập nhật bài viết cho những người tò mò.
Aaron Lake
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.