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?:
- Nice sudo [lệnh chuyên sâu ở đây]
- sudo đẹp [lệnh chuyên sâu ở đây]
BTW này là dành cho Linux 3.x.
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?:
BTW này là dành cho Linux 3.x.
Câu trả lời:
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 sudo
trướ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.
Nếu bạn chạy nice sudo
thì 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ự.
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)
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 ( foo
và bar
, 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
.
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.