
이 명령을 실행하려고 합니다.
echo hello | sudo su - dp-postgres
하지만 나는 이것을 얻습니다:
-bash: line 1: hello: command not found
나는 또한 이것을 시도했다:
sudo su - dp-postgres -c 'echo hello'
하지만 현재 사용자의 비밀번호를 묻는 것입니다.
dp-postgres
사용자 로 명령을 실행한 후 전환해야 합니다 dp-postgres
.
답변1
sudo
명령은 다른 사용자로서 명령을 실행할 수 있도록 허용합니다. 기본적으로 현재 사용자 비밀번호를 묻는 메시지가 표시됩니다. 이는 정상적인 동작입니다(분명히 사용자에게 sudo
사용 권한도 있어야 합니다). 비밀번호를 묻는 동작을 방지하려면 /etc/sudoers
파일을 변경하고 NOPASSWD
비밀번호를 묻지 않고 sudo를 실행할 수 있는 옵션을 사용해야 합니다.
명령에 따라 다음과 같이 할 수 있습니다.
sudo su - dp-postgres <<-EOF
echo hello
EOF
두 번째 명령도 작동합니다.
sudo su - dp-postgres -c 'echo hello'
예는 다음과 같습니다.
$ sudo su - -c 'echo hello; id'
hello
uid=0(root) gid=0(root) groups=0(root)
sudo
초기 사용자가 그룹에 속해 있고 다음과 같기 때문에 내 측에서는 비밀번호가 필요하지 않습니다 .
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
파일 에 있습니다 /etc/sudoers
.
답변2
다른 곳에서 설명한 것처럼 이 sudo
명령을 사용하면 적절하게 권한이 부여된 사용자가 다른 사람처럼 명령을 실행할 수 있습니다. 기본적으로 이다른 사람루트이지만 (인증에 따라) 모든 사용자가 될 수 있습니다. 또한 기본적으로 sudo
현재 사용자의 비밀번호를 묻습니다.
echo hello
사용자 로 명령 을 실행하려면 dp-postgres
다음을 수행하십시오.
sudo -u dp-postgres echo hello
로그인 환경 설정이 필요한 경우 다음을 포함하세요 -i
.
sudo -iu dp-postgres echo hello
root
이 두 가지 예는 먼저 사용자에 대해 변경된 다음 사용자에 대해 변경되지 않으므로 이 사용자에 대한 액세스를 허용하지만 에 대한 액세스는 허용하지 않도록 dp-postgres
사용자 정의 항목을 설정하도록 선택할 수 있습니다 . 이는 액세스를 제한 및/또는 관리해야 하는 다중 사용자 환경에 적합한 솔루션입니다 . (그러나 귀하는 이미 에 대한 액세스 권한을 갖고 있으므로 더 제한적인 두 번째 액세스로는 아무것도 얻을 수 없습니다.)sudoers
dp-postgres
root
root
root