Tại sao sudo -s tốt hơn sudo su?


28

Tôi đã thấy nhiều bình luận ở đây trong Hỏi Ubuntu về sở thích sử dụng sudo -shơn là sudo su.

Đối với tôi, hai lệnh đó làm chính xác như nhau. Nhưng tại sao được sudo -scho là tốt hơn?


1
Tôi nghĩ rằng sudo -ihoặc sudo sulà tốt hơn so với sudo -snhững lý do nêu ở đây: ubuntuforums.org/showpost.php?p=6188826&postcount=4 Ngoài ra: đây là một bản sao có thể có của superuser.com/questions/29/...
sắp xếp

Tôi nghĩ rằng câu hỏi này nên được chuyển đến unix.stackexchange.com
igi

Câu trả lời:


26

Tôi nghĩ sudo -skhông phải là "tốt hơn", nó chỉ khác nhau.

sudo -s

giữ thư mục $ HOME của bạn, vì vậy khi bạn khởi động chương trình, họ sẽ sử dụng các tệp cấu hình (chứ không phải root) của bạn, v.v ... Nhược điểm: họ cũng có thể thay đổi quyền sở hữu các tệp của bạn trong thư mục $ HOME, ví dụ điển hình là .Xauthoritytệp, nhưng tôi chưa bao giờ gặp vấn đề với điều đó

sudo su hoặc là sudo -i

các chương trình sẽ sử dụng thư mục gốc của root và các tập tin cấu hình của nó. Điều này có thể trực quan hơn, nhưng điều đó cũng có nghĩa là nó sẽ không sử dụng bất kỳ cấu hình nào bạn có thể tự đặt cho mình (bí danh, lịch sử bash, ...).


1
Được rồi, bây giờ tôi hiểu sự khác biệt. Cảm ơn bạn!
fitojb

1
"sudo su" không tương đương với "sudo -i". "sudo -i" tương đương với "sudo su -" nhưng "sudo su -" giữ thư mục làm việc hiện tại trong khi "sudo -i" chuyển bạn vào nhà của root
Gregory Pakosz

13

Bởi vì sudo -ssẽ không thay đổi các biến môi trường của bạn, đặc biệt $HOME, sẽ ở lại HOME=/home/USER. Nếu bạn sử dụng, sudo sunó sẽ thay đổi thành HOME=/roottác dụng phụ tiêu cực khi các chương trình bạn bắt đầu thử truy cập vào thư mục chính của người dùng.

Vì vậy, về cơ bản nó giống như sudovs gksudokhi chạy các chương trình đồ họa.


5

Ngoài sự khác biệt đã được đề cập với các biến môi trường, tôi thấy sudo sungớ ngẩn và lãng phí vì bạn đang yêu cầu sudochạy subằng root và yêu cầu nó chạy shell như root. Tại sao yêu cầu một chương trình yêu cầu một chương trình cung cấp cho bạn một vỏ gốc, khi bạn có thể có chương trình đầu tiên cung cấp cho bạn vỏ đó? Điều đó có ý nghĩa trong bất kỳ ý nghĩa thực tế? Không, tôi chỉ là người phạm tội.


Bạn nói đúng, nó hơi dư thừa.
fitojb

Vâng, không hoàn toàn như vậy: nếu bạn đang sử dụng sudo suđể root, vâng, chỉ cần đi sudo -i, ví dụ. Nhưng nó có ích khi bạn muốn trở thành một người dùng khác : sudo su - myuser.
hggdh

2
Có một sự khác biệt khác: sudo -isẽ thay đổi /rootthư mục và sudo susẽ ở trong thư mục bạn đang có.
laurent

1
@hggdh sudo -u myuser,.
psusi

3

Tôi sẽ không đồng ý với các câu trả lời khác khi xem xét các trường hợp khi bạn muốn đăng nhập với tư cách là người dùng không có vỏ. Đó là một trường hợp rất phổ biến với người dùng được gán cho các dịch vụ.

Sử dụng "sudo su" sẽ khởi động shell được chỉ định bởi người dùng. Tuy nhiên, trong trường hợp người dùng được gán cho quy trình máy chủ, trình bao là / usr / bin / false và việc ghi nhật ký sẽ thất bại. Thay vào đó, bạn nên nhập như:

sudo -sHu <server-user>

nó sẽ đăng nhập bạn và cd vào đường dẫn chính của nó, ngay cả khi người dùng không có shell được gán

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.