调试 ubuntu 中符号链接是如何断开的?

调试 ubuntu 中符号链接是如何断开的?

我有一个以下形式的符号链接

ubuntu@platform1:~$ ls -lrt
total 28
drwxr-xr-x  4 ubuntu ubuntu 4096 Mar  2 15:02 deploy
lrwxrwxrwx  1 ubuntu ubuntu   14 May 25 18:27 logs -> /var/log/arkin

磁盘布局

ubuntu@platform1:~$ df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/vg-var            853G  3.7G  806G   1% /var
/dev/mapper/vg-var+log         49G  1.1G   45G   3% /var/log
/dev/mapper/vg-var+log+audit   20G   60M   19G   1% /var/log/audit
/dev/mapper/vg-home            30G  6.5G   22G  24% /home

但很多时候我观察到符号链接被改为

drwxr-xr-x  6 ubuntu ubuntu 4096 May 31 08:41 logs

有人可以告诉我是否有办法在文件夹上启用审计日志/home/ubuntu/logs,以便我可以了解哪个操作正在破坏符号链接并创建新的/home/ubuntu/logs或其他一些方法可以调试此问题?

  • 文件系统——ext4
  • 操作系统 - Ubuntu 16.04

编辑

我按照答案中建议的步骤进行操作。我有以下符号链接:-

lrwxrwxrwx 1 ubuntu ubuntu 14 Jun 3 07:26 logs -> /var/log/arkin

在以下规则中添加了/etc/audit/audit.rules

-a always,exit -F dir=/home/ubuntu/logs -S unlink -S unlinkat -S rename -S renameat -S rmdir -k log_link

然后重新启动审计服务

ubuntu@vrni-platform:~$ sudo service auditd stop
ubuntu@vrni-platform:~$ sudo service auditd start

执行以下命令

ubuntu@vrni-platform:~$ sudo ln -svf /var/log/arkin /home/ubuntu/logs
'/home/ubuntu/logs/arkin' -> '/var/log/arkin'

但我没有看到任何审计条目

# aureport -k -i | grep log_link

答案1

对于 auditd,您可以尝试以下操作

$tail -2 /etc/audit/audit.rules 
-a always,exit -F arch=b32 -S unlink -S unlinkat -S rename -S renameat  -S rmdir -k delete
-a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat  -S rmdir -k delete

您也可以在这里指定目录

-F dir=<directory or mount point>

以下是镜头中使用的选项描述,有关更多详细信息,请查看http://man7.org/linux/man-pages/man8/auditctl.8.html

 -a [list,action|action,list] 
 -S [Syscall name or number|all]
 -k key Set a filter key on an audit rule.

不同规则的更多示例如下:

## Audit log access
-a always,exit -F dir=/var/log/audit/ -F perm=r -F auid>=1000 -F auid!=unset -F key=access-audit-trail
## Attempts to Alter Process and Session Initiation Information
-a always,exit -F path=/var/run/utmp -F perm=wa -F auid>=1000 -F auid!=unset -F key=session
-a always,exit -F path=/var/log/btmp -F perm=wa -F auid>=1000 -F auid!=unset -F key=session
-a always,exit -F path=/var/log/wtmp -F perm=wa -F auid>=1000 -F auid!=unset -F key=session

相关内容