사용자 Rick에게 다시 시작 권한을 박탈하려고 합니다. 나는 시도 !
했고 NOEXEC
. 다른 방법이 있나요?
Rick ALL = (ALL) !/sbin/reboot
Rick ALL = NOEXEC: /sbin/reboot
답변1
당신은 할 수 없습니다. 특정 명령을 제외한 모든 명령을 실행할 수 있는 사용자 권한을 할당하기 위해 "부정적인 sudo"를 만드는 것은 실제로 불가능합니다. 이는 사용자가 이러한 제한을 쉽게 우회할 수 있기 때문입니다.
- 거부된 명령을 쉘 스크립트에 삽입하고 실행함으로써
- 거부된 명령을 다른 이름으로 복사하여
- 다음과 같은 명령을 실행합니다(귀하의 경우
init 6
,telinit 6
,shutdown -r now
및systemctl isolate reboot.target
모두 재부팅을 수행하고 명령을 거부하지 않습니다). - 거부된 명령을 실행하여
exec
- 텍스트 편집기나 다른 프로그램에서 셸을 이스케이프하여
- 아니면 단순히 루트 사용자로 전환하여
su
이는 맨페이지에도 언급되어 있습니다 sudoers
.
SECURITY NOTES
Limitations of the ‘!’ operator
It is generally not effective to “subtract” commands from ALL
using the ‘!’ operator. A user can trivially circumvent this by copy-
ing the desired command to a different name and then executing that.
For example:
bill ALL = ALL, !SU, !SHELLS
Doesn’t really prevent bill from running the commands listed in SU
or SHELLS since he can simply copy those commands to a different
name, or use a shell escape from an editor or other program.
Therefore, these kind of restrictions should be considered advisory at
best (and reinforced by policy).
In general, if a user has sudo ALL there is nothing to prevent
them from creating their own program that gives them a root shell (or
making their own copy of a shell) regardless of any ‘!’ elements
in the user specification.
대신, 사용자에게 필요한 제한된 명령 집합을 식별하고 해당 명령에만 액세스 권한을 부여해야 합니다.
NOEXEC
단순히 쉘 이스케이프를 비활성화한다고 해서 다른 모든 회피 방법이 차단되는 것은 아닙니다.