파일/폴더에 대한 sudo 사용자 액세스를 제한합니다.

파일/폴더에 대한 sudo 사용자 액세스를 제한합니다.

우선, 미리 죄송합니다. 이와 같은 질문이 수십억 개 있다는 것을 알고 있지만 저에게는 아무런 효과가 없습니다...

sudo 사용자가 삭제할 수 없는 디렉토리에서 특정 파일을 발견했습니다. 나는 sudo가 모든 것에 대해 작동해야 한다는 것을 알고 있으며 그것이 그룹의 초점이지만 어쩌면 해결책이 있을 수도 있습니다.

sudo가 실행할 수 있는 명령 유형을 제한하려고 생각 중입니다(/etc/sudoers 파일에서). 하지만 첫째, 실제로 아무것도 해결되지 않으며 둘째, 다음 예제를 사용해도 어떻게든 작동하지 않습니다.

%wheel ALL=(ALL) ALL, !/usr/bin/rm

다른 그룹, 내 사용자 이름 등을 사용해 보았지만 명령을 내 사용자로 제한할 수도 없습니다.

어쨌든 전체 rm 명령이나 다른 솔루션에 대한 액세스를 차단하는 대신 sudo 사용자가 특정 명령(예: rm -rf name_of_folder)을 입력하지 못하도록 하는 방법이 있습니까? 특정 명령을 입력할 때 비밀번호를 요구할 수도 있나요?

답변1

어쨌든 sudo 사용자가 rm -rf name_of_folder와 같은 특정 명령을 입력하는 것을 방지하는 방법이 있습니까?

아니요. 명령과 인수에 대해 간단한 일치 항목만 표현할 수 sudoers있고 사용자는 이를 쉽게 이스케이프할 수 있기 때문입니다. 예를 들어, rm -v foo, , rm -- foo등을 시도해 볼 수 있습니다. rm foo -r이는 각 명령의 정확한 인터페이스에 따라 다르며 sudo는 이를 이해하지 못합니다.

전체 rm 명령이나 다른 솔루션에 대한 액세스를 차단하는 대신?

이것이 일반적인 선택입니다. 액세스를 차단 rm하지만 일반적으로 대상 명령 주위의 셸 "래퍼"인 제한된 명령에 대한 액세스를 제공합니다.

그러나 제한된 명령은 작성하기가 더 어렵고 더 높은 보안 위험을 초래합니다. 인수 없이 명령으로 시작하는 것이 좋습니다. 이렇게 하면 표준 입력 및 해당 환경을 무시하고 사용자에게 루트 액세스 권한을 부여합니다 sudoers. 그런 다음 인수 1개를 추가하고 특히 경로인 경우 매우 현명하게 설명할 수 있습니다.

가장 기본적인 제한 명령은 다음과 같습니다 /usr/local/bin/restricted_rm.

#!/bin/sh

exec </dev/null
/usr/bin/env -i rm -rf /absolute/path/to/folder

이와 같은 간단한 스크립트가 문제를 해결하는지 확인하기 위해 사용자와 함께 프로세스/인터페이스를 조정해 볼 가치가 있습니다. 그렇지 않으면 심각한 보안 위험이 있는 더 복잡한 "필터" 제한 명령에 대한 경고가 표시됩니다. 당신이 무엇을 하고 있는지 알더라도. 거기 있었어.

관련 정보