루트 권한(sudo 사용)이 있는 사용자가 특정 파일에 액세스/삭제하지 못하도록 제한할 수 있나요?

루트 권한(sudo 사용)이 있는 사용자가 특정 파일에 액세스/삭제하지 못하도록 제한할 수 있나요?

내 컴퓨터에 로그 파일을 보관하고 싶습니다. 또한 볼륨 마운트/패키지 설치 등과 같은 다양한 시스템별 작업을 수행하기 위해 다른 계정에 권한을 부여하고 싶습니다. 따라서 사용자는 루트 권한이 있어야 하지만 해당 특정 파일을 변경/삭제/쓰기할 수 없도록 단일 로그 파일을 제한해야 합니다.

답변1

먼저 sudoers 파일을 통해 루트가 로그 파일을 쓸 수 없도록 만들 수 있습니다.

user ALL=(ALL) !/var/log/logfile

이렇게 하면 로그 파일이 루트에 의해 수정, 이동 또는 삭제되는 것을 방지할 수 있습니다.

그런 다음 사용자가 필요하다고 판단되는 명령만 사용할 수 있도록 sudoers 파일을 편집할 수 있습니다.

user ALL=(ALL) /bin/command1 /bin/command2 /bin/command3

user ALL=(ALL) !ALL

이렇게 하면 사용자에게 원하지 않는 명령이 비활성화됩니다. 또한 chattr +i /etc/sudoers사용자가 루트로 수정하여 로그 파일에 액세스할 수 없도록 sudoers 파일을 변경 불가능하게 만들 수도 있습니다 .

답변2

사용자의 sudo를 제한할 수 없는 경우 로그를 다른 노드(rsync/rsyslog)에 동기화할 수 있습니다.

답변3

시스템 슈퍼유저 권한이 부여된 사용자는 다음을 수행해야 합니다.

  1. 완전한 신뢰, 그리고
  2. 책임이 있는.

sudoers그렇지 않은 경우 사용자가 루트로 수행해야 하는 작업은 파일에 정확한 방식으로 나열 될 수 있도록 엄격하게 지정되어야 합니다 ( rm예 :이것들문서). 이러한 사용자는 이를 사용 sudo하여 루트 쉘 환경을 얻을 수도 없습니다 .

이것이 불가능할 경우 필요한 모든 작업을 수행할 수 있는 별도의 루트가 아닌 계정을 설정하는 것이 좋습니다.

답변4

예, sudo 사용자가 특정 루트 명령을 실행하지 못하도록 제한할 수 있습니다. 이렇게 하면 아래와 같이 구성된 권한을 실행할 수 있습니다.

예: vi /etc/sudoers에서 필요한 권한을 부여하거나 visudo를 입력할 수 있습니다.

/etc/sudoers 파일에 다음 유형의 필수 권한을 추가합니다.

사용자 A 권한:

Cmnd_Alias PERMISSIONS = /usr/sbin/lsof, /usr/bin/ssh, /usr/bin/scp, /usr/bin/rsync, /usr/bin/telnet, /usr/bin/traceroute, /usr/bin/kill, /usr/bin/ps, /usr/bin/netstat, /usr/bin/grep, /usr/bin/crontab, /usr/sbin/tcpdump, /bin/ping, /usr/bin/crontab -u root -l, /usr/bin/crontab -u root -e, /etc/init.d/crond reload, /usr/bin/updatedb, /bin/df, /usr/bin/du, /usr/bin/locate, /usr/bin/find, /bin/su

그 후 다음 줄을 추가하십시오.

%User_A_permissions          ALL=PERMISSIONS

관련 정보