저는 로그에 쓰는 Python + Django 애플리케이션을 개발 중입니다.
애플리케이션을 로컬에서 실행하고 내 사용자로 로그인하면 내 사용자가 /var/logs
.
syslog
내 사용자를 group: 에 추가하려고 시도했지만 sudo usermod -a -G syslog mauro
작동하지 않습니다.
경로 권한(일명 )을 변경하고 싶지 않으므로 chmod +777 /var/logs
모든 환경에 동일한 설정 세트를 사용할 수 있습니다.
경로 권한을 변경하는 것 외에 다른 방법이 있습니까?
답변1
루트로 로그 파일을 생성하고,
sudo touch /var/log/mylogfile.log
올바른 사용자가 소유하게 만드세요.
sudo chown user:group /var/log/mylogfile.log
logrotate
로그 파일 회전을 수행하는 경우 로그 파일이 회전될 때 회전 서비스(또는 사용 중인 서비스)가 올바른 소유권을 가진 빈 파일을 생성하거나 남겨두는지 확인하십시오 .
단일 사용자가 여러 로그 파일에 쓸 수 있도록 하려면 /var/log/mylogs
해당 사용자가 소유한 디렉터리를 만들고 해당 디렉터리에 로그 파일을 만듭니다.
답변2
syslogd
당신의 친구인가요? 바라보다https://stackoverflow.com/a/36762675/537980
syslogd
디렉토리에 쓸 수 있는 권한이 있습니다. 로깅용으로 설계되었습니다. 다른 권한은 부여하지 않습니다(로그만 허용). 자세한 내용은 위의 링크를 참조하세요(저는 전문가가 아닙니다. 단지 그것이 존재하고 필요한 것이라는 것만 알고 있습니다).
답변3
Unix/Linux 환경이 acl 구현을 지원한다고 가정하면 다음과 같이 acl을 적용할 수 있습니다.
sudo setfacl -m u:mauro:rw /var/logs
이 유틸리티(setfacl)는 파일 및 디렉터리에 대한 액세스 제어 목록(ACL)을 설정합니다. 즉, 사용자/그룹이 특정 파일이나 디렉터리에 대해 가질 수 있는 권한을 설정합니다.
setfacl(1)에 대한 매뉴얼 페이지를 참조하십시오.
또한 setfacl
다음과 같은 재귀 옵션(-R)이 있습니다 chmod
.
대문자 -x 권한을 사용할 수 있습니다 X
. 이는 다음을 의미합니다.
execute only if the file is a directory or already has
execute permission for some user (X)
따라서 새 명령은 다음과 같습니다.
setfacl -R -m u:mauro:rwX /var/logs