Thoát khỏi cả root và người dùng bằng một lệnh


9

Tôi biết về "không sử dụng sudo su -" vv Nhưng hãy trung thực, hầu hết tất cả chúng ta đều làm điều đó.

Vì vậy, đây là vấn đề. Chúng tôi không thể kích hoạt thông tin đăng nhập gốc, vì vậy chúng tôi phải đăng nhập với tư cách là người dùng của chúng tôi sau đó su để root.
Đây là cây quá trình:

    1  7897  7826  7826 ?           -1 S     1000   0:00 sshd: josh@pts/0
 7897  7898  7898  7898 pts/0     8182 Ss    1000   0:00  \_ -bash
 7898  7990  7990  7898 pts/0     8182 S        0   0:00      \_ sudo su -
 7990  7991  7990  7898 pts/0     8182 S        0   0:00          \_ su -
 7991  7992  7992  7898 pts/0     8182 S        0   0:00              \_  -su
 7992  8182  8182  7898 pts/0     8182 R+       0   0:00                  \_ ps axjf

Tôi muốn thoát khỏi root, sau đó từ người dùng của tôi bằng một lệnh. Có cách nào để làm việc này không?

BTW exit && exit không hoạt động vì nó thoát khỏi shell và không xử lý phần còn lại của lệnh

josh@ubuntu:~$ sudo su -
root@ubuntu:~# exit && exit
logout
josh@ubuntu:~$

5
"Hầu như tất cả chúng ta làm điều đó .." Tôi nghi ngờ điều đó. Tôi duy trì một số máy và có tất cả mật khẩu và tôi chưa bao giờ sử dụng "sudo su" trên các hệ thống dựa trên debian. Và tôi hy vọng hầu hết chúng ta sẽ không sử dụng nó.
Rinzwind

1
Đừng sử dụng sudo su, nó là vô nghĩa và chỉ khởi động một quá trình bổ sung. Sử dụng sudo -i, nếu bạn phải, thay vào đó.
terdon

Tôi sử dụng sudo -iđể có được một vỏ gốc. Đối với ssh, bạn có thể định cấu hình ssh để cho phép đăng nhập root, cá nhân tôi sử dụng các tùy chọn "không có mật khẩu" cho root và các khóa ssh er kerberos. Điều này giữ cho tài khoản root bị khóa với mật khẩu.
Panther

Tôi không nhận được những gì không hoạt động. Lối exitthoát thứ nhất su, lần thứ hai đăng xuất. Đó không phải là những gì bạn muốn làm?
Pilot6

1
@ Pilot6 bạn đã kiểm tra mã đó chưa ?? Tôi vừa mới làm và nó không hoạt động .. đó là CHỈ những gì tôi muốn làm .. Nhưng nó không hoạt động ..
Joshua Zits

Câu trả lời:


9

Về mặt kỹ thuật, không ai trả lời câu hỏi của bạn. Tôi đánh giá cao rằng họ nghĩ rằng cách của họ tốt hơn (có thể là vậy), nhưng đây là một cách tiếp cận khác (trong trường hợp bạn phải có su -một thời gian và có cùng một vấn đề);

  1. [Đăng nhập vào hệ thống]
  2. $ sudo su -;exit
  3. # echo "do things"
  4. # exit

Khi bạn thoát khỏi root, người dùng ban đầu cũng sẽ đăng xuất vì nó tiếp tục lệnh cuối cùng.

Chúc mừng!


14

Cứ làm đi

exec sudo -i

Bây giờ shell gốc đang thay thế cái mặc định và khi bạn thoát, bạn thoát "cả hai" (từ không chính xác, vì shell đầu tiên dừng tồn tại với exec).

Nhìn:

[romano:~] % ssh pern
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.19.0-28-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

[romano@pern:~] % exec sudo -i
[sudo] password for romano: 
root@pern:~# whoami
root
root@pern:~# pstree -a -s -l -p -u $$
init,1
  └─sshd,1140 -D
      └─sshd,17450 
          └─sshd,17570,romano  
              └─sudo,17571,root -i
                  └─bash,17665
                      └─pstree,17678 -a -s -l -p -u 17665
root@pern:~# exit
logout
Connection to pern.XXX.XXX.XXX closed.
[romano:~] % 

Tôi sử dụng nó rất nhiều để có một sshthiết bị đầu cuối -ed: sử dụng exec ssh whatevervà khi bạn thoát, thiết bị đầu cuối đóng lại.


2
DỄ DÀNG !!! Cảm ơn bạn! Tôi không còn phải gõ thoát hai lần !!
Joshua Zits

Khéo léo thực hiện! xuất sắc
Anwar

1

Khi bạn đang trở thành người dùng root, chỉ cần gõ ::

sudo -s && exit

Khi bạn thoát khỏi root, shell của bạn sẽ tự động đóng lại. bạn có thể xuất lệnh này để làm cho nó vĩnh viễn.

echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
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.