sudo -u를 사용하여 다른 사용자로 명령을 실행하는 중에 문제가 발생했습니다.

sudo -u를 사용하여 다른 사용자로 명령을 실행하는 중에 문제가 발생했습니다.

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수 있도록 보안 정책을 구성해야 합니다 . 매뉴얼( ) 을 읽고 명령어를 사용하여 구성합니다 .xyzabcsudoersman sudoersvisudo/etc/sudoers

예를 들어, 사용자가 비밀번호 없이 사용자로서 실행되도록 허용해 보겠습니다 xyz. 다음 문자열을 다음에 추가합니다(직접 편집하지 말고 사용하세요)./usr/bin/whoamiabc/etc/sudoersvisudo/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

다음을 수행할 수 있습니다.

  1. 삭제 줄 /etc/sudoers에 사용자 설정을 포함합니다.
  2. 아카이브 저장
  3. 파일을 열고 이 사용자에 대한 옵션을 복사하지 않고 입력하세요.
  4. 아카이브 저장
  5. 시도 해봐.

이것은 나에게 효과적입니다. 알고 보니 이메일에서 실행해야 할 명령어를 복사해 놓았기 때문에 줄 끝이 잘못된 것이었습니다.

관련 정보