Câu trả lời:
Chúng có thể cung cấp chức năng gần với cùng một thứ, nhưng có vẻ như 'sudo -i' có trọng lượng nhẹ hơn và giữ một số tài liệu tham khảo trở lại tiện dụng trong môi trường của bạn.
Bạn có thể xem các quy trình bổ sung bằng cách xem 'ps auxf' (f cung cấp cho bạn chế độ xem rừng)
sudo -i mang lại cây quá trình này
jkrauska 4480 0.0 0.0 76828 1656 ? S 23:38 0:00 | \_ sshd: jkrauska@pts/0
jkrauska 4482 0.0 0.0 21008 3816 pts/0 Ss 23:38 0:00 | \_ -bash
root 4675 0.6 0.0 19512 2260 pts/0 S+ 23:42 0:00 | \_ -bash
sudo su - mang lại cây quy trình này
jkrauska 4480 0.0 0.0 76828 1656 ? S 23:38 0:00 | \_ sshd: jkrauska@pts/0
jkrauska 4482 0.0 0.0 21008 3816 pts/0 Ss 23:38 0:00 | \_ -bash
root 4687 0.5 0.0 43256 1488 pts/0 S 23:42 0:00 | \_ su -
root 4688 0.5 0.0 19508 2252 pts/0 S+ 23:42 0:00 | \_ -su
Lưu ý rằng chúng đang bắt đầu từ cùng một quy trình bash, 4482, nhưng su đó - dường như sinh ra một bước khác.)
'Sudo' đầu tiên của bạn đã nâng mức truy cập của bạn lên root. Chạy su mà không chỉ định tên người dùng bên trong sudo sẽ thay đổi người dùng hiện tại để root hai lần.
Một cách khác để điều tra điều này là bằng cách chạy cả hai lệnh với strace -f.
strace -f -o sudoi sudo -i
đấu với
strace -f -o sudosu sudo su -
Nếu bạn khác hai bước đó, bạn sẽ thấy nhiều exeve đang được chạy cho sudo su -.
Một điều nữa.
sudo -i duy trì các biến môi trường bổ sung được thiết lập bởi SUDO.
SUDO_USER=jkrauska
SUDO_UID=1000
SUDO_COMMAND=/bin/bash
SUDO_GID=1000
sudo su - ghi đè các biến đó.
Bắn trả lời: Không, chúng không giống nhau.
Câu trả lời dài: sudo và su - là các chương trình khác nhau thực hiện cùng một nhiệm vụ, đó là nâng bạn lên quyền root.
su từng là cách thực tế để trở thành root trên các hệ thống Linux. Tuy nhiên, luôn có nhu cầu tách biệt các đặc quyền và để lại một số thông tin kiểm toán phía sau. Ngoài ra khi bạn làm su - mọi thứ bạn làm đều được thực hiện dưới quyền root và nguy hiểm khi có nhiều sức mạnh đó. Đây là nơi sudo đã đến để giải cứu.
sudo có một số đặc điểm mà su không có. Yếu tố chính trong sudo là khả năng chạy lệnh "một" với quyền root và sau đó thả đặc quyền cho người dùng bình thường. Ví dụ: Xóa một tập tin thuộc sở hữu của root.
sudo rm /root/someFile
Lệnh này sẽ xóa tệp vì sudo sẽ nâng bạn lên root mỗi khi bạn sử dụng lệnh sudo trước một lệnh khác. Lệnh tiếp theo bạn đã chạy sẽ được chạy như một người dùng bình thường (trừ khi bạn nối thêm lệnh sudo vào đầu). Điều này cho phép bạn hoàn thành nhiệm vụ hành chính và sau đó bỏ đặc quyền ngay lập tức giúp bạn tránh các điều kiện nguy hiểm.
sudo cũng cung cấp các lợi ích khác như hạn chế tập chương trình mà người dùng có thể chạy, ghi nhật ký các lệnh chạy theo sudo và những thứ khác. Để biết thêm thông tin sudo trong một tóm tắt
Khi bạn làm su - hoặc sudo -i bạn cũng làm điều tương tự. Điều đó đang trở thành root nhưng hãy nhớ rằng su và sudo hoàn toàn khác nhau và cung cấp cho bạn các công cụ khác nhau như một quản trị viên hệ thống. Cá nhân tôi KHÔNG BAO GIỜ chạy su - và chính sách pam của tôi cấm nó , cho phép không ai chạy nó. Trong các hệ thống của tôi, bạn luôn phải sử dụng nguyên nhân sudo của các lợi ích bổ sung.
Thông tin thêm: Sử dụng và kích hoạt sudo
su
cũng có thể chạy chỉ một lệnh duy nhất:su -c 'command ...'
sudo -i
và sudo su -
, không phải giữa sudo
và su
.
sudo su -
vô nghĩa?