하나의 명령으로 루트와 사용자 모두 종료


9

나는 "사용하지 않는 sudo su -"등에 대해 알고 있습니다 . 그러나 솔직히 말하면 거의 모든 사람들이 그렇게합니다.

그래서 여기에 문제가 있습니다. 우리는 루트 로그인을 사용할 수 없으므로 사용자로 로그인하고 루트로 su해야합니다.
프로세스 트리는 다음과 같습니다.

    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

루트에서 나가고 한 번의 명령으로 내 사용자를 종료하고 싶습니다. 이것을 할 수있는 방법이 있습니까?

BTW 종료 && 종료는 쉘을 종료하고 나머지 명령을 처리하지 않기 때문에 작동하지 않습니다.

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

5
"거의 우리 모두가 해." 여러 대의 컴퓨터를 유지 관리하고 모든 암호를 가지고 있으며 데비안 기반 시스템에서 "sudo su"를 사용하지 않습니다. 그리고 나는 우리 대부분이 그것을 사용하지 않기를 기대합니다.
Rinzwind

1
를 사용하지 마십시오. sudo su무의미하며 추가 프로세스를 시작합니다. sudo -i필요한 경우 대신을 사용하십시오 .
terdon

sudo -i루트 쉘을 얻는 데 사용 합니다. ssh에 관해서는 루트 로그인을 허용하도록 ssh를 구성 할 수 있습니다. 개인적으로 root 및 ssh 키에 대한 "비밀번호"옵션을 사용하여 kerberos를 사용합니다. 이렇게하면 루트 계정이 암호에 잠겨있게됩니다.
Panther

작동하지 않는 것을 얻지 못했습니다. 먼저 exit종료 su하고 두 번째 로그 아웃합니다. 당신이하고 싶은 것이 아닌가요?
Pilot6

1
@ Pilot6 당신은 그 코드를 테스트 했습니까 ?? 방금했는데 작동하지 않습니다. 그냥하고 싶은 일입니다.하지만 작동하지 않습니다.
Joshua

답변:


9

기술적으로 아무도 귀하의 질문에 대답하지 않았습니다. 나는 그들이 그들의 방식이 더 낫다고 생각한다는 것에 감사한다. (아마도 그렇다.) 여기에 다른 접근법이있다 su -.

  1. [시스템에 로그인]
  2. $ sudo su -;exit
  3. # echo "do things"
  4. # exit

루트에서 나갈 때, 원래 사용자는 마지막 명령을 계속하므로 로그 아웃됩니다.

건배!


14

그냥 해

exec sudo -i

이제 루트 쉘이 기본 쉘을 대체하고 있으며, 종료 할 때 "both"를 종료합니다 exec.

보기:

[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:~] % 

나는 그것을 사용하여 ssh-ed 터미널을 사용합니다 : 사용 exec ssh whatever하고 종료하면 터미널이 닫힙니다.


2
잘 했어요! 감사합니다! 더 이상 exit를 두 번 입력 할 필요가 없습니다 !!
Joshua Zitting

영리하다! 우수
Anwar

1

루트 사용자가 될 때 다음을 입력하십시오.

sudo -s && exit

루트에서 나가면 쉘이 자동으로 닫힙니다. 이 명령을 내보내 영구적으로 만들 수 있습니다.

echo "alias mysudo='sudo -s; exit'" >> ~/.bashrc && source ~/.bashrc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.