내 컴퓨터에 로그 파일을 보관하고 싶습니다. 또한 볼륨 마운트/패키지 설치 등과 같은 다양한 시스템별 작업을 수행하기 위해 다른 계정에 권한을 부여하고 싶습니다. 따라서 사용자는 루트 권한이 있어야 하지만 해당 특정 파일을 변경/삭제/쓰기할 수 없도록 단일 로그 파일을 제한해야 합니다.
답변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
시스템 슈퍼유저 권한이 부여된 사용자는 다음을 수행해야 합니다.
- 완전한 신뢰, 그리고
- 책임이 있는.
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