sudo đẹp hay sudo đẹp?


53

Có sự khác biệt nào giữa việc chạy một tác vụ chuyên sâu so với sudo với các lệnh sau không?:

  1. Nice sudo [lệnh chuyên sâu ở đây]
  2. sudo đẹp [lệnh chuyên sâu ở đây]

BTW này là dành cho Linux 3.x.


6
Để giúp bạn kiểm tra xem nice bash -c 'ps -p $$ -o pid,ni,comm', và sudo nice bash -c 'ps -p $$ -o pid,ni,comm', và nice sudo bash -c 'ps -p $$ -o pid,ni,comm'. Cả ba sẽ cho bạn thấy giá trị tốt đẹp cho id quá trình ($$) của vỏ được sinh ra.
Zoredache

@Zoredache, trong khi tôi nghĩ rằng nhận xét của bạn RẤT mang tính xây dựng, chúng ta nên nói rằng tất cả chúng sẽ có cùng một giá trị tốt đẹp bởi vì nó được thừa kế khi giả mạo, đó phải là câu trả lời thực sự cho câu hỏi.
Florin Asăvoaie

3
@FlorinAsavoaie nếu bạn nghĩ đó là câu trả lời, thì xin vui lòng thêm nó. Tôi đã thêm nhận xét trên của mình như một cách để kiểm tra mọi thứ, vì cá nhân tôi không tin tưởng 100% những gì sẽ xảy ra và tôi quyết định tìm một lệnh có thể hiển thị giá trị tốt đẹp với nhiều cách gọi khác nhau. Tôi đang ở trong trại có xu hướng thích thực sự có một bài kiểm tra cho thấy mọi thứ đang vận hành theo cách họ phải làm.
Zoredache

@FlorinAsavoaie Tôi cũng có thể nghĩ như vậy, nhưng hãy nhìn vào serverfault.com/a/626576/117546 .
emory

Câu trả lời:


104

Có một sự khác biệt, một điều cốt yếu.

Nếu bạn muốn giảm mức độ ưu tiên của quy trình, thứ tự không thành vấn đề. Mặt khác, nếu bạn muốn tăng nó, bạn phải đặt sudotrước nice.

Vì bạn đang chạy lệnh như một người dùng bình thường (nếu không bạn sẽ không bận tâm đến sudo chút nào), bạn chỉ có thể giảm mức độ ưu tiên của lệnh. Nhưng nếu bạn sử dụng sudođầu tiên, bạn có thể tăng nó nếu bạn muốn.


21
Xin chúc mừng, bạn đã thắng.
Michael Hampton

2
Đây là một điểm rất quan trọng, mặc dù như một câu trả lời, nó chỉ hoàn thành khi bạn giải thích tại sao thứ tự không quan trọng trong trường hợp cơ sở (như Michael làm trong câu trả lời của mình).
Cuộc đua nhẹ nhàng với Monica

16

Nếu bạn chạy nice sudothì lời nhắc cho mật khẩu của bạn cũng sẽ được xử lý, nhưng vì bạn sẽ mất nhiều thời gian hơn để gõ nó, nên nó thực sự không quan trọng lắm.

Như ThoriumBR đã lưu ý, nếu bạn đang hạ mức ưu tiên, thì thứ tự là không liên quan, nhưng nếu bạn muốn nâng mức ưu tiên, thì (vì điều này phải được thực hiện như root), bạn phải sử dụng sudo nice.

Nếu không, tôi không thể tưởng tượng bất kỳ sự khác biệt thực sự.


2

Sử dụng 'nguyên tắc đặc quyền tối thiểu', bạn chỉ nên chạy một chương trình có quyền root nếu nó cần, và sau đó thả chúng lại ngay khi bạn không cần chúng nữa.

Vì vậy, có, có một sự khác biệt, nếu có một khai thác cho tốt, kẻ tấn công có thể chạy mã với các đặc quyền tương tự như chương trình tốt đẹp.

Ngoài ra, sudo đặt lại môi trường của bạn, vì vậy nó sẽ khắc phục được các tác dụng phụ, hãy thử

$ echo 'echo $PATH' | sh
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/jens/.local/bin:/home/jens/bin:/home/jens/.local/bin
$ echo 'echo $PATH' | sudo sh
[sudo] password for jens: 
/sbin:/bin:/usr/sbin:/usr/bin

Vì vậy, lệnh 'đẹp' mà bạn chạy qua sudo thực sự có thể trở thành một nhị phân khác.

$ which ash
~/.local/bin/ash
$ sudo which ash
[sudo] password for jens: 
which: no ash in (/sbin:/bin:/usr/sbin:/usr/bin)

2

Câu trả lời muộn:

Nếu quyền truy cập sudo của bạn bị giới hạn ở một số chương trình nhất định ( foobar, chẳng hạn), thì bạn sẽ không có quyền chạy sudo nice foo, nhưng sẽ được phép chạy nice sudo foo.

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.