visudo + 다른 사용자로부터 사용자에게 액세스하는 방법

visudo + 다른 사용자로부터 사용자에게 액세스하는 방법

내 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(실행 ) 로 전환하는 것입니다 .exitmoon

이제 visudo여기서는 중요하지 않습니다. 을 사용하고 있지 않으므로 편집된 파일에서 변경한 사항은 sudo동작에 영향을 미치지 않으며 단지 동일한 프로그램이 아니라는 것입니다./etc/sudoersvisudosusudo

어쨌든 표시되는 줄( moon ALL=(starus) NOPASSWD: ALL)은 사용자가 비밀번호를 입력 하지 않고도 moon사용자로서 모든 명령을 실행할 수 있음 을 의미합니다. 그렇다고 해서 누구나 비밀번호를 모르고 있을 수 있다는 의미는 아닙니다 . 이는 다음과 같은 명령에는 비밀번호가 필요하지 않음을 의미합니다.starussudomoonmoon

moon@host $ sudo -u starus command

로그인되어 있으면 비밀번호 없이 명령을 실행할 moon수 있습니다 .sudostarus

답변2

간단한 대답은 파일이 .dll이 아닌 /etc/sudoers프로그램에서만 사용된다는 것입니다 .sudosu

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소속이 표시됩니다.사용자(마치대신 명령을 실행하세요.스타루스).

관련 정보