Computer >> Máy Tính >  >> Hệ thống >> Linux

Sự khác biệt giữa Su, Sudo Su, Sudo -s và Sudo -i

Sự khác biệt giữa Su, Sudo Su, Sudo -s và Sudo -i

Có nhiều cách khác nhau để có được phiên gốc trong thiết bị đầu cuối Linux. Đ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 đang tìm cách giành quyền root có thể không quen với cách mỗi lệnh có thể có được quyền truy cập root, chúng khác nhau như thế nào và khi những khác biệt này quan trọng. Ở đây, chúng tôi tách từng lệnh trong số nhiều lệnh khác nhau được sử dụng để giành quyền truy cập root trong một thiết bị đầu cuối, giải thích cách chúng giành quyền root, khi nào sử dụng chúng và mọi thứ ở giữa.

su

su lệnh thay thế người dùng hiện tại mà hệ thống đang sử dụng trong shell.

Sự khác biệt giữa Su, Sudo Su, Sudo -s và Sudo -i

Bạn có thể chuyển sang bất kỳ người dùng nào bằng cách nhập su và thêm tên người dùng sau nó. Điều này sẽ yêu cầu hệ thống chuyển (và về cơ bản là đăng xuất) người dùng hiện tại sang người được chỉ định. Ngoài ra, su lệnh có thể đạt được quyền truy cập root bằng cách nhập su mà không chỉ định bất kỳ đ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 hoặc bất cứ điều gì tương tự. Thay vào đó, bạn được yêu cầu nhập mật khẩu của người dùng root vì bạn đang đăng nhập vào nó theo đúng nghĩa đen. Hơn nữa, các cách khác để đạt được quyền truy cập root không mang lại lợi ích bằng việc truy cập vào thư mục chính gốc và môi trường gốc.

sudo su

Lệnh này yêu cầu mật khẩu của người dùng hiện tại chứ không phải root.

Sự khác biệt giữa Su, Sudo Su, Sudo -s và Sudo -i

Về cơ bản, nó giống như chỉ chạy su trong shell, tiết kiệm cho một sự khác biệt quan trọng. Thay vì yêu cầu hệ thống trực tiếp "chuyển đổi người dùng", bạn đang yêu cầu hệ thống chạy lệnh "su" với tư cách root. Khi sudo su được chạy, “.profile,” “.bashrc” và “/ etc / profile” sẽ được bắt đầu, giống như chạy su (hoặc su root ). Nếu bất kỳ lệnh nào được chạy với sudo trước nó, nó được cấp đặc quyền root.

Mặc dù không có sự khác biệt lớn giữa “sudo su” và “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” để có quyền truy cập root trên hệ thống, họ phải biết mật khẩu root. Gốc được cấp bằng sudo su 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 giúp bạn có thể lấy được quyền root mà không cần mật khẩu root để tăng tính bảo mật.

sudo -i

Sử dụng sudo -i hầu như giống với sudo su lệnh với một ngoại lệ:nó không tương tác trực tiếp với người dùng root.

Sự khác biệt giữa Su, Sudo Su, Sudo -s và Sudo -i

Giống như sudo su , -i cờ cho phép người dùng có được môi trường gốc mà không cần biết mật khẩu của tài khoản gốc. sudo -i cũng rất giống với việc sử dụng sudo su , vì nó sẽ đọc tất cả các tệp môi trường (.profile, v.v.) và đặt môi trường bên trong shell.

Nó khác với “sudo su” ở chỗ sudo -i là một cách dễ dàng hơn để lấy root và môi trường root mà không cần tương tác trực tiếp với người dùng root. Để làm rõ:Với sudo su bạn đang sử dụng nhiều gốc setuid lệnh trong nền. Điều này làm cho việc tìm ra những biến môi trường nào sẽ được giữ lại và những biến số nào sẽ bị thay đổi (khi hoán đổi sang môi trường gốc) trở nên khó khăn hơn nhiều. Điều này không đúng với sudo -i . Bởi vì điều này, hầu hết mọi người xem nó là phương pháp ưa thích để lấy quyền root mà không cần đăng nhập trực tiếp.

sudo -s

Lệnh này triệu hồi một trình bao với biến $ SHELL của bạn.

Sự khác biệt giữa Su, Sudo Su, Sudo -s và Sudo -i

-s chuyển đổi cho lệnh “sudo” đọc biến $ SHELL của người dùng hiện tại đang thực thi các lệnh. Lệnh này hoạt động như thể người dùng đang chạy sudo /bin/bash . Sudo -s là một trình bao kiểu "không đăng nhập". Không giống như một lệnh 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. Khi người dùng yêu cầu trình bao chạy sudo -s , nó có quyền 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à nhà gốc, v.v.

Sự khác biệt giữa Su, Sudo Su, Sudo -s và Sudo -i

Lệnh này được sử dụng tốt nhất khi người dùng không muốn chuyển sang quyền root nhưng muốn có một trình bao tương tác với giá trị môi trường $ SHELL của nó. Các lệnh khác được đề cập ở trên giành quyền truy cập root 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).

Các câu hỏi thường gặp

1. Tôi nên sử dụng lệnh nào?

Mỗi lệnh có một ca sử dụng của nó. Điều quan trọng ở đây là hiểu mỗi lệnh làm gì và sử dụng chúng khi nào. Như nó viết tắt, sudo -i là cách thiết thực và 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ẽ thấy rằng họ có thể lấy được một trình bao gốc mà không có khả năng chạm vào môi trường gốc, một thứ đã bổ sung thêm các lợi ích bảo mật.

2. Truy cập root có thể gây hại cho hệ thống của tôi không?

Trong một số trường hợp, có. Trừ khi bạn hoàn toàn chắc chắn rằng mình cần truy cập root cho mọi thứ trong một phiên đầu cuối cụ thể, nếu không, tốt hơn hết bạn chỉ cần nhập sudo theo sau là một lệnh nếu bạn muốn truy cập root cho lệnh cụ thể đó. Ví dụ:gõ sudo apt install vlc trong bất kỳ phiên bản Linux nào dựa trên Debian sẽ yêu cầu hệ điều hành truy cập root chỉ để chạy trình quản lý gói APT để cài đặt VLC.

Một lưu ý rất quan trọng khi chạy sudo -i hoặc bất kỳ biến thể nào khác mà chúng ta đã thảo luận trước đó thay vì nhập sudo trước mỗi lệnh bạn muốn chạy dưới quyền root là lệnh trước đó không đăng nhập lịch sử lệnh của bạn vào /var/log/auth.log . Nếu bạn làm sai, bạn không thể quay lại và kiểm tra những gì bạn đã làm để có thể sửa nó. Bạn sẽ phải hoạt động trên bộ nhớ vì các phiên gốc không được ghi lại.

3. Khi tôi nhập “sudo” trước một lệnh, tôi đang chạy biến thể nào của “sudo su”?

Bằng cách gõ sudo để thực thi một lệnh (tức là bạn đang nhập lệnh đó vào cùng một dòng với lệnh bạn muốn chạy), về cơ bản bạn đang chạy lệnh đó dưới trình bao gốc tương tác. Đây sẽ là những gì sudo -s lệnh độc lập không.

Kết thúc

Thực sự không có một lệnh nào trong danh sách này là tốt nhất 100%. 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 tính đến từng cách đạt được quyền root (và có rất nhiều cách) và cân nhắc những ưu nhược điểm và hành động cho phù hợp. Tôi hy vọng rằng với sự trợ giúp của bài viết này, những quyết định này sẽ dễ dàng hơn. Nếu bạn muốn tìm hiểu thêm về các lệnh, hãy đọc bài viết này về các lệnh hữu ích trong Linux để liệt kê nội dung của một thư mục.