MTE giải thích: Sự khác biệt giữa Su, Sudo Su, Sudo -s và Sudo -i
Trên dòng lệnh Linux có nhiều cách khác nhau để có được một phiên làm việc gốc trong thiết bị đầu cuối. Điều này có thể tạo ra một số nhầm lẫn, vì hầu hết người dùng mới bắt đầu tìm kiếm root đều có thể không quen thuộc với cách mỗi lệnh có thể truy cập root, chúng khác nhau như thế nào và khi nào sự khác biệt này quan trọng.
Đó là vì điều này, chúng tôi sẽ tách rời từng lệnh khác nhau được sử dụng để truy cập root trong một thiết bị đầu cuối. Chúng tôi sẽ giải thích chính xác cách họ đạt được quyền root, khi nào sử dụng chúng và mọi thứ ở giữa.
su
Lệnh su
thay thế người dùng hiện tại đang sử dụng bởi hệ thống trong trình bao. Bạn có thể chuyển sang bất kỳ người dùng nào bằng cách dùng su
và thêm tên người dùng theo nó. Điều này sẽ yêu cầu hệ thống chuyển đổi (và về cơ bản là đăng xuất) của người dùng hiện tại đến một người được chỉ định. Ngoài ra, lệnh su
có thể truy cập root bằng cách nhập su
mà không chỉ rõ bất cứ điều gì sau lệnh.
"Su" được sử dụng tốt nhất khi người dùng muốn truy cập trực tiếp vào tài khoản gốc trên hệ thống. Nó không đi qua sudo
hay bất cứ thứ gì như thế. Thay vào đó, mật khẩu của người dùng gốc phải được biết và sử dụng để đăng nhập. Hơn nữa, các cách khác để lấy root không có lợi ích của việc truy cập vào thư mục gốc của root và môi trường gốc.
sudo su
Lệnh này về cơ bản giống như chỉ chạy su
trong trình bao. Thay vì yêu cầu hệ thống “chuyển người dùng” trực tiếp, bạn đang yêu cầu nó chạy lệnh “su” làm gốc. Khi sudo su
được chạy, “.profile, ” “.bashrc” và “/ etc / profile” sẽ được khởi động, giống như chạy su
(hoặc su root
). Điều này là bởi vì nếu bất kỳ lệnh nào được chạy với sudo
ở phía trước của nó, đó là một lệnh được cấp quyền root.
Mặc dù không có nhiều sự khác biệt từ “su”, sudo su
vẫn là một lệnh rất hữu ích vì một lý do quan trọng: Khi người dùng đang chạy “su” để truy cập root trên một hệ thống, họ phải biết mật khẩu gốc. Cách root được đưa ra với sudo su
là bằng cách yêu cầu mật khẩu của người dùng hiện tại. Điều này làm cho nó có thể đạt được gốc mà không có mật khẩu gốc làm tăng an ninh.
sudo -i
Sử dụng sudo -i
hầu như giống với sudo su
. Người dùng có thể lấy root bằng “sudo” chứ không phải bằng cách chuyển sang người dùng root. Giống như sudo su
, cờ -i
cho phép người dùng có được môi trường gốc mà không cần phải biết mật khẩu tài khoản gốc. sudo -i
cũng rất giống với việc sử dụng sudo su
ở chỗ nó sẽ đọc tất cả các tệp môi trường (.profile, vv) và thiết lập môi trường bên trong trình bao với nó.
Trường hợp nó khác với "sudo su" là sudo -i
là một cách dọn dẹp root và môi trường root tốt hơn mà không cần tương tác trực tiếp với người dùng root. Làm sao? Với sudo su
bạn đang sử dụng nhiều lệnh setuid
gốc. Thực tế này làm cho nó khó khăn hơn nhiều để tìm ra những biến môi trường nào sẽ được giữ lại và biến nào sẽ được thay đổi (khi chuyển sang môi trường gốc). Điều này không đúng với sudo -i
, và đó là vì hầu hết mọi người xem nó như là phương thức ưa thích để lấy gốc mà không cần đăng nhập trực tiếp.
sudo -s
Công tắc -s
cho lệnh “sudo” đọc biến $ SHELL của các lệnh thực thi người dùng hiện tại. Lệnh này hoạt động như thể người dùng đang chạy sudo /bin/bash
. Sudo -s
là một vỏ kiểu "không đăng nhập". Điều này có nghĩa là không giống như lệnh sudo -i
hoặc sudo su
, hệ thống sẽ không đọc bất kỳ tệp môi trường nào. Điều này có nghĩa là khi người dùng yêu cầu trình bao chạy sudo -s
, nó sẽ lấy root nhưng sẽ không thay đổi người dùng hoặc môi trường người dùng. Nhà của bạn sẽ không phải là căn nhà gốc, v.v.
Lệnh này được sử dụng tốt nhất khi người dùng không muốn chạm vào thư mục gốc và chỉ muốn một trình bao gốc để thực thi lệnh dễ dàng. Các lệnh khác nói về quyền truy cập root ở trên, nhưng chạm vào các tệp môi trường gốc và cho phép người dùng truy cập đầy đủ hơn vào root (có thể là vấn đề bảo mật).
Kết luận: Tôi nên sử dụng lệnh nào?
Mỗi lệnh có trường hợp sử dụng của nó. Điều quan trọng ở đây là hiểu được mỗi lệnh và thời điểm sử dụng chúng. Vì nó là viết tắt, sudo -i
là cách thực tế, sạch sẽ nhất để đạt được môi trường gốc. Mặt khác, những người sử dụng sudo -s
sẽ tìm thấy họ có thể có được một vỏ gốc mà không có khả năng chạm vào môi trường gốc, cái gì đó đã thêm lợi ích bảo mật.
Có thực sự không phải là một lệnh trên danh sách này là 100% tốt nhất. Khi người dùng cảm thấy thoải mái hơn với dòng lệnh, họ sẽ cần phải thực hiện từng cách để có được root (và có rất nhiều) vào tài khoản và cân nhắc ưu và khuyết điểm và hành động tương ứng. Tôi hy vọng rằng với sự giúp đỡ của bài viết này, các quyết định này sẽ dễ thực hiện hơn.
Bạn thích cách nào để có quyền truy cập root trong Linux? Hãy cho chúng tôi biết dưới đây!
Tín dụng hình ảnh: blog.david-jensen.com