내 Linux Red Hat 시스템에서는 루트에서 다음을 수행합니다.
# su - starus
$ <-- now I am in starus user
$ su - moon <-- now I want to access moon user from starus user
Password:
그런데 비밀번호를 입력하라는 메시지가 표시됩니다!
visudo
아래에 비밀번호가 추가된 경우 해당 비밀번호를 받은 이유를 알려주세요.
moon ALL=(starus) NOPASSWD: ALL
뭐가 문제 야?
또한 Moon 사용자로 다음 스크립트를 실행해 보았으나 비밀번호가 필요합니다.
starus@host sudo -u moon /home/USER261/test.bash
[sudo] password for starus:
답변1
첫째, root
어떤 사용자라도 될 수 있으며 비밀번호가 필요하지 않습니다. 이것은 슈퍼유저의 특권 중 하나입니다. 따라서 를 사용하면 프롬프트 없이 su - starus
로 전환할 수 있습니다 starus
. 그러나 그때쯤에는 starus
더 이상 가 아니므 root
로 으로 전환하려면 비밀번호가 필요합니다 moon
.
간단한 해결책은 처음으로 다시 전환한 다음 root
(실행 ) 로 전환하는 것입니다 .exit
moon
이제 visudo
여기서는 중요하지 않습니다. 을 사용하고 있지 않으므로 편집된 파일에서 변경한 사항은 sudo
동작에 영향을 미치지 않으며 단지 동일한 프로그램이 아니라는 것입니다./etc/sudoers
visudo
su
sudo
어쨌든 표시되는 줄( moon ALL=(starus) NOPASSWD: ALL
)은 사용자가 비밀번호를 입력 하지 않고도 moon
사용자로서 모든 명령을 실행할 수 있음 을 의미합니다. 그렇다고 해서 누구나 비밀번호를 모르고 있을 수 있다는 의미는 아닙니다 . 이는 다음과 같은 명령에는 비밀번호가 필요하지 않음을 의미합니다.starus
sudo
moon
moon
moon@host $ sudo -u starus command
로그인되어 있으면 비밀번호 없이 명령을 실행할 moon
수 있습니다 .sudo
starus
답변2
간단한 대답은 파일이 .dll이 아닌 /etc/sudoers
프로그램에서만 사용된다는 것입니다 .sudo
su
su
지정된 사용자로 새 쉘을 시작하는 프로그램은 이를 사용하지 않습니다. 실행하면 su - moon
새로운 로그인 쉘이 시작됩니다달사용자의 경우 해당 사용자의 비밀번호를 묻는 메시지가 표시됩니다. 이 명령을 실행할 때뿌리, 이제부터 사용자 비밀번호를 묻는 메시지가 표시되지 않습니다.뿌리슈퍼유저가 되어 필요에 따라 비밀번호를 변경할 수 있습니다. 그러나 명령을 실행할 때스타루스사용자님은 슈퍼유저가 아니므로 정상적으로 인증을 하셔야 합니다.
반면에 귀하가 편집한 내용은 /etc/sudoers
다음과 같습니다.스타루스사용자는 sudo
명령을 사용하고 -u
다음과 같이 명령을 실행하도록 선택합니다.달사용자(비밀번호를 묻는 메시지를 표시하지 않음) 예를 들어 로그인했을 때스타루스, 다음 명령을 실행할 수 있습니다.
sudo -u moon touch /home/moon/test.file
실행하면 sudo -u moon ls -l /home/moon/test.file
새로 생성된 test.file
소속이 표시됩니다.달사용자(마치달대신 명령을 실행하세요.스타루스).