스크립트를 실행할 bla
때
sudo -u otheruser ./bla
내가 얻은 출력은 스크립트가 실행되었으므로 외부 명령을 사용할 수 없음을 나타냅니다.
otheruser
./bla: line 3: /bin/sleep: Permission denied
./bla: line 4: /bin/sleep: Permission denied
스크립트 자체는 간단합니다.
#!/bin/bash
echo $USER
/bin/sleep 1
sleep 1
마지막 오류 메시지는 실제로 bash가 실행되고 있지 않지만 내장 명령으로 sleep이 없는 쉘임을 나타내는 것 같습니다. 그렇지 않으면 불평하지 않을 것입니다 /bin/sleep
.
문서를 읽으면서 청구서에 맞는 NOEXEC를 찾았지만 /etc/sudoers는 NOEXEC를 의미하지 않습니다.
내 NOEXEC가 올바른 방향으로 가고 있나요? 그렇다면 존재하지도 /etc/sudoers
않고 프롬프트도 표시되지 않는데 sudo -V
왜 활성화됩니까 ?
편집: 의견에서 요청한 대로 출력은 다음과 같습니다 sudo -l -l
.
Matching Defaults entries for xxxxx on this host:
always_set_home, env_reset, env_keep="LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE", targetpw, !authenticate, noexec, syslog=local5, env_reset,
always_set_home
User xxxxx may run the following commands on this host:
Sudoers entry:
RunAsUsers: ALL
Commands:
ALL
LDAP Role: CENSORED
RunAsUsers: root
Options: !noexec
Commands:
/bin/su - solr
LDAP Role: T-SOLRSEARCH
RunAsUsers: root
Options: !noexec
Commands:
ALL
좋습니다. !noexec
'!'에 무슨 일이 일어나고 있나요?
답변1
Matching Defaults entries for xxxxx on this host: …, noexec, …
사용자는 xxxxx
모든 프로그램을 실행할 수 있지만 해당 프로그램은 다른 프로그램을 실행할 수 없습니다. 루트로 명령을 실행할 때 예외가 있습니다. 보안 제한 사항으로 이는 의미가 없습니다. 그냥 실행할 수 있다면어느그런 다음 프로그램을 실행 passwd
하고 루트 계정의 암호를 변경할 수 있습니다. 루트로 프로그램을 실행할 수 있으면 모든 사용자로 프로그램을 실행할 수 있습니다. 따라서 이것은 잘못된 구성입니다.
이 옵션이 포함된 파일 Defaults
에서 /etc/sudoers
행을 찾으십시오 ./etc/sudoers.d
noexec
in 은 !noexec
부정 !
입니다. 이는 noexec
옵션을 비활성화합니다.