Sự khác biệt giữa 'su -', 'sudo bash' và 'sudo sh' là gì?


29

Tôi muốn biết sự khác biệt giữa

  • su -
  • sudo bash
  • sudo sh

Tôi không thể đăng nhập bằng root trong khi thực hiện su -vì tôi không có mật khẩu root - Ý tôi là tôi có mật khẩu người dùng mà tôi có thể sudo "command" nhưng mật khẩu này không hoạt động vì su - tôi có thể đăng nhập bằng root bằng sudo bashmật khẩu người dùng và tôi có thể đăng nhập trong khi làm sudo shnhưng sau đó tôi nhận được một dấu nhắc lệnh trong hình thức này #

Câu trả lời:


27

Lý lịch

Trong Linux (và Unix nói chung), có một SuperUser có tên Root . SuperUser có thể làm bất cứ điều gì và mọi thứ, và do đó thực hiện công việc hàng ngày vì SuperUser có thể nguy hiểm. Bạn có thể gõ một lệnh không chính xác và phá hủy hệ thống. Lý tưởng nhất, bạn chạy như một người dùng chỉ có các đặc quyền cần thiết cho nhiệm vụ trong tay. Trong một số trường hợp, đây nhất thiết phải là Root, nhưng hầu hết thời gian là người dùng thông thường.

su -

Lệnh này được sử dụng để đăng nhập tại tài khoản root.
Theo mặc định, mật khẩu tài khoản Root bị khóa trong Ubuntu. Điều này có nghĩa là bạn không thể đăng nhập trực tiếp như Root hoặc sử dụng lệnh su để trở thành người dùng Root. Tuy nhiên, vì tài khoản Root tồn tại về mặt vật lý nên vẫn có thể chạy các chương trình với các đặc quyền cấp gốc. Đây là nơi sudo xuất hiện - nó cho phép người dùng được ủy quyền (thường là người dùng "Quản trị") chạy một số chương trình nhất định dưới dạng Root mà không cần phải biết mật khẩu gốc.

Xem cách bật tài khoản root .

sudo sh

Lệnh này chạy "sh" như một siêu người dùng.
Tiện ích sh là một trình thông dịch ngôn ngữ lệnh sẽ thực thi các lệnh được đọc từ một chuỗi dòng lệnh, đầu vào tiêu chuẩn hoặc một tệp được chỉ định.

sudo bash

Lệnh này chạy "bash" như một siêu người dùng.
Bash là trình bao, hoặc trình thông dịch ngôn ngữ lệnh. Bash là một vỏ tương thích sh kết hợp các tính năng hữu ích từ vỏ Korn (ksh) và vỏ C (csh). Nó được thiết kế để phù hợp với tiêu chuẩn Shell và Công cụ IEEE POSIX P1003.2 / ISO 9945.2. Nó cung cấp các cải tiến chức năng trên sh cho cả lập trình và sử dụng tương tác. Ngoài ra, hầu hết các tập lệnh sh có thể được Bash chạy mà không cần sửa đổi.

Tài liệu tham khảo: 1 , 2 , 3 .


7
Điều đáng chú ý là bạn có thể đăng nhập với tư cách là siêu người dùng bằng cách chạy sudo su -mà không cần mật khẩu root. Vì sudo chạy su -lệnh với quyền root, bạn sẽ chỉ được nhắc nhập mật khẩu của người dùng. Điều này có lợi thế là thiết lập môi trường người dùng root, điều này có thể không được thực hiện bằng cách chạy shell với sudo.
Aaron D

6

su -:

Điều này sẽ thay đổi định danh người dùng của bạn và kế thừa các biến môi trường như thể bạn đã đăng nhập với người dùng đó. Thông thường bạn sẽ sử dụng định dạng su - <userid>để đăng nhập như người dùng. Nếu bạn bỏ "userid", nó giả sử bạn đang cố đăng nhập bằng root - cái mà bạn không thể (trừ khi bạn thay đổi mật khẩu root).

sudo bash& sudo sh:

Bất cứ điều gì sau sudo là một chương trình để chạy - vì vậy trong những trường hợp này, bạn đang yêu cầu chạy một vài shell - bash và dash tương ứng. sử dụng man bashman shđể biết thêm chi tiết về các loại vỏ khác nhau.


Câu hỏi liên quan:


Ok, cảm ơn đã trả lời nhưng mật khẩu mặc định cho root là gì? Tôi có thể tìm thấy nó ở đâu ?
Patryk

@lordmonkey root không có mật khẩu và không cần mật khẩu. sudo -isẽ cung cấp cho bạn một vỏ đăng nhập như mong su -muốn, ngoại trừ sudo hỏi mật khẩu của bạn, không phải root.
geirha
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.