ls
사용자로 다음 명령을 실행하려고 하면 abc
오류가 발생합니다.
xyz@host:~/temp$ sudo -u abc ls
[sudo] password for xyz:
Sorry, user xyz is not allowed to execute '/bin/ls' as abc on host.
하지만 이렇게 하고 su abc
실행하면 ls
아무런 문제가 없습니다.
답변1
사용자가 사용자로서 특정 작업을 수행할 sudo
수 있도록 보안 정책을 구성해야 합니다 . 매뉴얼( ) 을 읽고 명령어를 사용하여 구성합니다 .xyz
abc
sudoers
man sudoers
visudo
/etc/sudoers
예를 들어, 사용자가 비밀번호 없이 사용자로서 실행되도록 허용해 보겠습니다 xyz
. 다음 문자열을 다음에 추가합니다(직접 편집하지 말고 사용하세요)./usr/bin/whoami
abc
/etc/sudoers
visudo
/etc/sudoers
xyz ALL = (abc) NOPASSWD: /usr/bin/whoami
이제 테스트해 보세요.
xyz@host:~$ sudo -u abc /usr/bin/whoami
abc
답변2
sudo
이것은 다르기 때문이다 su
. 당신은 su abc
시스템의 사용자가 됩니다. abc
그러면 당신이 abc
할 수 있는 일은 무엇이든 할 수 있습니다.
반면, sudo
다른 사용자가 프록시를 통해 특정 명령을 실행할 수 있도록 하는 데 사용됩니다. 즉, sudo
구성을 통해 사용자를 대신하여 일부 명령을 실행할 수 있습니다 abc
. 실행하려는 명령이 이들 중 하나가 아닌 경우 오류가 보고됩니다.
답변3
모든 것이 괜찮아 보이지만 여전히 메시지가 표시되고 매번 비밀번호를 Sorry user xxx cannot execute...
묻는 경우 .sudo
다음을 수행할 수 있습니다.
- 삭제 줄
/etc/sudoers
에 사용자 설정을 포함합니다. - 아카이브 저장
- 파일을 열고 이 사용자에 대한 옵션을 복사하지 않고 입력하세요.
- 아카이브 저장
- 시도 해봐.
이것은 나에게 효과적입니다. 알고 보니 이메일에서 실행해야 할 명령어를 복사해 놓았기 때문에 줄 끝이 잘못된 것이었습니다.