写入日志的权限

写入日志的权限

我正在开发一个 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

相关内容