파일 액세스를 추가로만 제한

파일 액세스를 추가로만 제한

사용자가 시작한 스크립트의 로그를 저장하는 로그 파일이 포함된 디렉터리가 있습니다. 이 경우 syslog를 이용한 로깅은 불가능해 보입니다. (데몬이 아닌 rsync)

사용자가 로그 파일에 대한 쓰기 권한만 갖기를 원합니다. 문제는 사용자(스크립트)가 사용할 수 있도록 쓰기 권한을 더욱 제한해야 한다는 것입니다.추가만파일에. 기본 파일 시스템은 XFS입니다.

다음은 작동하지 않습니다:

# chattr +a test.log
chattr: Inappropriate ioctl for device while reading flags on test.log

이에 대한 다른 해결책이 있습니까? 힌트를 주셔서 감사합니다.

답변1

chattr유틸리티는 ext2/ext3/ext4 파일 시스템용으로 작성되었습니다. 그것은 방출한다I/W 제어따라서 이를 처리하는 방법을 결정하는 것은 기본 파일 시스템에 달려 있습니다. 최신 Linux 커널의 XFS 드라이버는 FS_IOC_SETFLAGS추가 전용 등의 플래그를 제어하기 위해 ext[234]와 동일한 ioctl을 지원하지만 이를 지원하지 않는 이전 커널(CentOS?)을 실행 중일 수 있습니다. 사용해 보세요xfs_io대신 유틸리티:

echo chattr +a | xfs_io test.log

ext[234]와 같은 XFS의 경우 루트만 추가 전용 플래그를 변경할 수 있습니다(보다 정확하게는 해당 CAP_LINUX_IMMUTABLE기능이 필요함).

답변2

이 작업을 수행할 권한이 있습니까? 에서 man 1 chattr:

"a" 속성이 설정된 파일은 쓰기 모드로만 열 수 있습니다. 수퍼유저 또는 CAP_LINUX_IMMUTABLE 기능이 있는 프로세스만 이 속성을 설정하거나 지울 수 있습니다.

답변3

또는 다음을 사용하여 동일한 결과를 얻을 수 있습니다.SELinux, Red Hat 호환 배포판을 사용하는 경우 활성화되어 실행 중일 가능성이 높습니다. 이는 모든 파일 시스템에 적용되며 SELinux는 프로세스가 허용되지 않는 작업을 수행하는 것을 방지합니다.

안타깝게도 특정 파일에 대한 첨부를 제외한 모든 시스템 리소스에 대한 액세스를 허용하려면 애플리케이션에 대한 정책을 작성해야 합니다. 이 작업을 처음 수행하는 경우 약간 어려울 수 있지만 한 가지 이점이 있습니다. 보안 계층이 추가된다는 것입니다.

이 강연에는 추가 전용 파일 규칙을 작성하는 방법에 대한 예가 있습니다.https://www.youtube.com/watch?v=zQcYXJkwTns

관련 정보