답변:
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
설치되어 있고 사용 권한이있는 경우 가장 간단합니다.
su - [user]
유용 할 수 있습니다. 추가 대시는 로그인 쉘을 제공합니다.
echo >>/dev/stderr
으로 로그인 할 때이 명령 을 실행 한 후 "-su : / dev / stderr : Permission denied"오류가 발생 su --login ...
합니다. 이 btw unix.stackexchange.com/questions/38538/…를
env
은 모든 것이 육안 검사뿐만 아니라 순서대로 진행될 수 있다는 것을 알았습니다. 그리고 한 가지 잘못되었습니다 : XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on
~ / .Xauthority` 파일은 다음과 같습니다 -rw-------
. 나는 사본을 만들었고 실험으로 gedit를 실행할 수 있었다.
일반적으로 sudo
원하는 사용자로 새 쉘을 시작하는 데 사용합니다. -u
플래그가 원하는 이름을 지정할 수 있습니다 :
[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody
와 같은 sudo 액세스 권한이없는 경우 더 회로적인 방법이 ssh username@localhost
있지만 sudo
설치되어 있고 사용 권한이 있으면 가장 간단합니다.
sudo -s
당신은 쉘 등의 제공 su
, sudo -i
같은 로그인을 시뮬레이션합니다 su -
. 물론와 결합 할 수 있습니다 -u $user
.
$ whoami
이 명령은 현재 사용자를 인쇄합니다. 사용자를 변경하려면이 명령을 사용해야합니다 (사용자의 암호가 뒤 따름).
$ su secondUser
Password:
올바른 비밀번호를 입력하면 지정된 사용자로 로그인됩니다 (다시 실행하여 확인할 수 있음) whoami
.
터미널 세션을 다른 사용자로 전환하려면 해당 사용자를 원래 사용자로 다시 종료 할 수 없습니다. exec를 사용하십시오.
$ | # exec su-[사용자 이름]
이렇게하면 새로운 용어 프로세스에서 새로운 사용자를 기술적으로 로그인하고 현재 사용자를 닫을 수 있습니다. 이렇게하면 사용자가 종료 또는 Ctrl-D를 시도 할 때 터미널은 마치 해당 사용자가 인스턴스화 한 사용자 인 것처럼 닫힙니다. 즉, 사용자는 원래 사용자의 용어로 다시 종료 할 수 없습니다. 무의미한 사람들은 여전히 새로운 터미널 세션을 시작하고 자동으로 원래 사용자 용어 로그인에있을 수 있다는 점을 고려하지만 무의미합니다.
편집 : 가치있는 것을 위해 ~ / .bashrc에서 linux vlock 명령을 사용하여 기본적으로 터미널 세션을 잠글 수 있습니다. 세션 사용자의 암호를 잠금 해제해야합니다. 이렇게하면 용어가 구성된 기본이 아닌 ~ / .bashrc를 사용하여 인스턴스화되지 않는 경우 원래 사용자 컨텍스트에서 위에서 언급 한 용어가 다시 시작되지 않을 수 있습니다.
또 다른 경로는 다른 (루트가 아닌) 사용자로 새 쉘을 시작하여 해당 사용자로 명령을 실행하는 것입니다.
ubuntu@aws-ip:~$ sudo -u mongodb bash #<-- or zsh, etc...
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork
이에 대한 예는 mongodb
사용자입니다. 샤딩 된 MongoDB 클러스터를 배포 할 때 필요한 모든 프로세스가 실행되어야 mongodb
하며 수십 개의 노드에 대해 init 스크립트를 사용하여 프로세스를 데몬화할 필요 가 없습니다.
다음과 같이하십시오. UserA로 로그인 한 상태에서 UserB로 "로그인"하여 일부 명령을 실행하려고하지만 완료되면 UserA로 돌아오고 싶습니다. 간단히하기 위해 ls -l / tmp를 UserB로 실행한다고 가정합니다. 당신이 경우에 없는 사용자 A로 로그인 상태를 유지 사용자 A의 현재 쉘을 떠날 것이 아니라 여전히 사용자 B와 같은 명령을 실행하려면, 당신은이 작업을 수행해야합니다 :
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를 수행하고 로그인으로 돌아갈 수 있습니다.
$XDG_RUNTIME_DIR
특히) 에 문제가 생겨서 비슷한 질문을했습니다 . -> unix.stackexchange.com/questions/354826/…