Thực sự thì sudo -s nghiêm túc làm gì?


26

Tôi đang sử dụng Ubuntu 10.04.

Tôi nhận thấy rằng sau khi tôi chạy " sudo -s " trong thiết bị đầu cuối, lời nhắc đã thay đổi từ

" XXX @ XXX "

đến

" root @ XXX ",

dường như nó đã thay đổi thành đặc quyền root.

Nhưng khi tôi kiểm tra tài liệu của lệnh "sudo" ở đây , nó giải thích một câu chuyện khác về "sudo -s", có ai có thể giải thích cho tôi " sudo -s " đang làm gì chính xác không?


6
Bạn nên hỏi điều này tại Askubfox.com

7
Tại sao lại hỏi Ubuntu.com? sudohầu như không dành riêng cho Ubuntu ...
Dave Sherohman

Câu trả lời:


9

Cả hai không thực sự không nhất quán - sudolệnh luôn thay đổi người dùng, hoặc root hoặc người dùng bạn chỉ định với công -utắc. Tất cả những gì -sđược cung cấp một lối tắt để bắt đầu một trình bao như người dùng đó. Nó thực sự tương đương với:

sudo $SHELL

ngoại trừ việc nó có khả năng dự phòng /bin/shhoặc một cái gì đó nếu SHELLkhông được đặt.


6

sudo -schạy shell được chỉ định trong $SHELLbiến môi trường của bạn dưới dạng superuser / root. Bạn có thể chỉ định người dùng khác bằng cách sử dụng -u.

Biến $SHELLmôi trường chứa đường dẫn đến vỏ đăng nhập mặc định của người dùng. Cài đặt thực tế cho chương trình shell mặc định thường nằm trong etc/passwd. Tùy thuộc vào những gì bạn đã thực hiện trong phiên hiện tại của mình, biến $ SHELL có thể không chứa chương trình shell mà bạn hiện đang sử dụng. Nếu bạn đăng nhập tự động với zsh chẳng hạn, nhưng sau đó gọi bash, $ SHELL sẽ không thay đổi từ /bin/zsh.

Hiển thị chương trình shell và người dùng hiện tại: echo $(whoami) is logged in and shell is $0

  • whoami in ra tên người dùng mà người dùng đang làm việc.
  • $0 chứa tên / đường dẫn của chương trình hiện đang chạy (chương trình shell trong trường hợp này).

3

Từ hướng dẫn:

sudo cho phép người dùng được phép thực thi một lệnh như siêu người dùng hoặc người dùng khác, như được chỉ định trong tệp sudoers.

-s Shell, chạy shell được chỉ định bởi biến môi trường SHELL nếu nó được đặt hoặc shell như được chỉ định trong passwd (5).

Nghiêm trọng hơn, sudo -s chạy một biến môi trường shell. Vì bạn không thêm bất kỳ biến nào nên nó chạy như được chỉ định trong passwd và do đó kết nối bạn với quyền root.


1
Không rõ ràng trong hướng dẫn sử dụng rằng nếu bạn không cung cấp người dùng, nó sẽ mặc định là root. Bạn sẽ phải đọc mô tả cho -utùy chọn để tìm hiểu điều đó. Nhưng đối với một người không quen thuộc sudo, họ sẽ không biết nhìn vào -u.
wvducky 18/03/2015


0

Nghe có vẻ như nó đang tạo ra một thể hiện khác của shell trên đỉnh của shell hiện tại, nhưng với quyền root. Tôi sẽ đặt cược rằng sau khi bạn làm sudo -snếu bạn nhập thoát, bạn sẽ quay lại vỏ ban đầu.


-1

sudo -s cho phép bạn chạy một lệnh mà bạn được ủy quyền trước [see / etc / sudoers], có thể bằng cách yêu cầu bạn xác nhận ID hiện tại của mình.

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.