我正在开发一个 Python + Django 应用程序,它会写入日志。
当我在本地运行应用程序并以我的用户身份登录时,我希望允许我的用户将日志写入/var/logs
.
我尝试将我的用户添加到syslog
组:sudo usermod -a -G syslog mauro
,但它不起作用。
我不想更改路径权限(又名chmod +777 /var/logs
),因此,我可以对所有环境使用相同的设置集。
除了更改路径权限之外,还有其他方法可以做到这一点吗?
答案1
以 root 身份创建日志文件,
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
:
您可以使用大写-xX
权限,这意味着:
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