it-swarm-ko.tech

한 터미널에서 사용자 간을 전환하는 방법은 무엇입니까?

현재 사용자 (같은 터미널에서)에서 로그 아웃하지 않고 다른 사용자로 로그인하고 싶습니다. 어떻게합니까?

535
tshepang

su 명령을 사용하는 것은 어떻습니까?

$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout

루트로 로그인하려면 사용자 이름을 지정할 필요가 없습니다.

$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout

일반적으로 Sudo를 사용하여 원하는 사용자로 새 셸을 시작할 수 있습니다. -u 플래그를 사용하면 원하는 사용자 이름을 지정할 수 있습니다.

$ whoami
user1
$ Sudo -u user2 zsh
$ whoami
user2

Ssh username @ localhost와 같이 Sudo 액세스 권한이없는 경우보다 체계적인 방법이 있지만 Sudo이 설치되어 있고 사용 권한이있는 경우 가장 간단합니다.

630
Pratt

일반적으로 Sudo를 사용하여 원하는 사용자로 새 셸을 시작합니다. -u 플래그를 사용하면 원하는 사용자 이름을 지정할 수 있습니다.

[[email protected] ~] % whoami
mrozekma
[[email protected] ~] % Sudo -u nobody zsh
[[email protected] ~] % whoami
nobody

ssh us[email protected]와 같이 Sudo 액세스 권한이없는 경우 더 회로적인 방법이 있지만 Sudo이 (가) 설치되어 있고 사용 권한이 있으면 가장 간단하다고 생각합니다

51
Michael Mrozek
$ whoami 

이 명령은 현재 사용자를 인쇄합니다. 사용자를 변경하려면이 명령을 사용해야합니다 (사용자의 암호가 뒤 따름).

$ su secondUser
Password:

올바른 비밀번호를 입력하면 지정된 사용자로 로그인됩니다 (whoami를 다시 실행하여 확인할 수 있음).

25
Ashish Saini

Ubuntu를 실행 중이고 로그인하려는 사용자에게 비밀번호가 설정되어 있지 않은 경우 :

Sudo su - username

자신의 암호를 입력하면 설정해야합니다. 물론,이를 위해서는 사용자에게 Sudo를 사용하여 루트 권한을 얻을 수있는 권한이 있어야합니다.

17
Sundae

터미널 세션을 다른 사용자로 전환하려면 해당 사용자를 원래 사용자로 다시 종료 할 수 없습니다. exec를 사용하십시오.

$ | # exec su-[사용자 이름]

이것은 새로운 용어 프로세스에서 새로운 사용자를 기술적으로 로그인하고 현재 사용자를 닫습니다. 이렇게하면 사용자가 종료 또는 Ctrl-D를 시도하면 터미널은 해당 사용자가 인스턴스화 한 사람처럼 닫힙니다. 즉, 사용자는 원래 사용자의 용어로 다시 종료 할 수 없습니다. 무의미한 사람들은 여전히 ​​새로운 터미널 세션을 시작하고 자동으로 원래 사용자 용어 로그인에있을 수 있다는 점을 고려할 때 무의미합니다.

편집 : 가치있는 것을 위해 ~/.bashrc에서 linux vlock 명령을 사용하여 기본적으로 터미널 세션을 잠글 수 있습니다. 세션 사용자의 암호를 잠금 해제해야합니다. 이렇게하면 용어가 구성된 기본이 아닌 ~/.bashrc를 사용하여 인스턴스화되지 않으면 원래 사용자 컨텍스트에서 위에서 언급 한 용어가 다시 시작되지 않을 수 있습니다.

9
SYANiDE

Sudo -iu <your_username> 나를 위해 속임수를 쓰십시오

3
andilabs

다음과 같이하십시오. UserA로 로그인 한 상태에서 UserB로 "로그인"하여 일부 명령을 실행하려고하지만 완료되면 UserA로 돌아오고 싶습니다. 간단히하기 위해 ls -l/tmp를 UserB로 실행한다고 가정합니다. not UserA의 현재 Shell을 그대로두고 UserB로 명령을 실행하고 여전히 UserA로 로그인 된 상태로 유지하려면 다음을 수행해야합니다.

su - UserB -c "ls -l /tmp"   <-- Just an example

이것은 UserB의 비밀번호를 알고 있다고 가정합니다. 그러나 UserB의 비밀번호를 모르면 루트 비밀번호를 알아야합니다. 그때:

Sudo su - UserB -c "ls -l /tmp"   <-- UserB's pw not needed here

많은 명령을 실행하기 위해 일시적으로 UserB로 로그인하려면 다음을 수행하십시오.

Sudo su - UserB

UserB를위한 새로운 셸이 제공됩니다 (id를 입력하여 확인). 완료되면 ctrl-d를 수행하고 로그인으로 돌아갈 수 있습니다.

2
Hopping Bunny

또 다른 경로는 루트가 아닌 다른 사용자로 새 셸을 시작하여 해당 사용자로 명령을 실행하는 것입니다.

[email protected]:~$ Sudo -u mongodb bash          #<-- or zsh, etc... 
[email protected]:~$ mongod --configsvr --dbpath /data/configdb --fork

이에 대한 예는 mongodb 사용자입니다. 샤딩 된 MongoDB 클러스터를 배포 할 때 필요한 모든 프로세스는 mongodb로 실행해야하며 수십 개의 노드에 대해 init 스크립트를 사용하여 프로세스를 데몬화할 필요가 없습니다 (또는 전체적으로 편리하지는 않습니다).

2
azatar

단일 명령 만 실행해야하는 경우 Sudo를 사용할 수 있습니다. Sudo -u username command

1
Maksim Luzik