在 RHEL 7.2 机器上,如果我在控制台会话中创建一个 POSIX 共享内存,然后/dev/shm从 SSH 会话中查询它的存在,它会在第一次显示共享内存文件,但之后它被神秘地删除了。
最后,我将测试用例分解为以下步骤:
touch /dev/shm/sampletailf /dev/shm/sample在 box1 上。它将是可访问的。在 box2 上,做 ssh user@box1 "ls -l /dev/shm/"
-rw------- 1 user user 1 Aug 25 17:12 sample
Run Code Online (Sandbox Code Playgroud)在 box1 上,tailf 显示该文件已被删除。
tail: '/dev/shm/sample' has become inaccessible: No such file or directory
Run Code Online (Sandbox Code Playgroud)我观察到,与该特定用户对应的所有文件都从 中删除/dev/shm,即使那是包含文件的目录树。
我试图监视文件,sshd 上的 strace 等。
我尝试使用以下规则进行审计,但没有运气:
## This file is automatically generated from /etc/audit/rules.d
-D
-b 1024
# monitor unlink() and rmdir() system calls.
-a exit,always -S unlink -S rmdir
Run Code Online (Sandbox Code Playgroud)
有人可以解释这里出了什么问题吗?
Son*_*nny 20
经过数小时的搜索和阅读,我找到了罪魁祸首。这是一个设置
systemd。将/etc/systemd/logind.conf包含默认的配置选项,与他们每个人的注释。该RemoveIPC选项yes默认设置为。该选项告诉systemd清理未登录的“用户帐户”的进程间通信(IPC)。这不会影响“系统帐户”就我而言,文件和目录是为用户帐户而不是系统帐户创建的。
有两种可能的解决方案:
- 使用/为系统用户创建文件——使用系统选项(
adduser -r或adduser --system)创建的用户- 编辑
/etc/systemd/logind.conf,取消注释该行RemoveIPC=yes,将其更改为RemoveIPC=no,保存并重新启动系统就我而言,我选择了选项 #2,因为用户已经创建。
参考:
| 归档时间: |
|
| 查看次数: |
14022 次 |
| 最近记录: |