默认情况下,umask 是 0022:
usera@cmp$ touch somefile; ls -l
total 0
-rw-r--r-- 1 usera usera 0 2009-09-22 22:30 somefile
Run Code Online (Sandbox Code Playgroud)
该目录/home/shared/用于共享文件,应归root该shared组所有。usern(任何用户)在此处创建的文件自动归该shared组所有。有一个 cron 作业负责每天一次更改拥有用户和拥有组(任何移动的文件):
usera@cmp$ cat /etc/cron.daily/sharedscript
#!/bin/bash
chown -R root:shared /home/shared/
chmod -R 770 /home/shared/
Run Code Online (Sandbox Code Playgroud)
我正在将一个非常大的文件写入共享目录。它让我 ( usera) 作为拥有用户和shared组作为组所有者。在写操作期间运行了 cron 作业,我仍然没有问题完成写过程。
你看。我以为会发生这种情况:
-rw-r--r-- usera sharedroot用户和shared组所有。为什么手术会成功?非常欢迎提供某种参考文档的链接来支持原因(因为我可以用它来研究更多细节)。
小智 7
Afaik,POSIX 1003.1只需要 fopen 在权限不足时返回 [EACCES] 错误。诸如 fputc 之类的后续操作可能会返回 [EBADF] 错误的文件描述符错误,但我认为这并不意味着在文件打开时覆盖权限更改。
多年前,我在一家公司工作,在那里我们设置了 AIX 服务器,以便他们使用该属性来使日志文件更安全。当服务启动时,root 会访问 /var/log/service.log,然后将其 chown 到 serveruser:servergroup,su - 启动服务(它将以追加模式打开文件),然后将文件 chown 回给 root。因此,该服务可以附加到自己的日志文件中,但不能删除或覆盖它,因此如果攻击者设法破坏该服务,他就无法篡改过去的日志条目。
类似的技巧可用于临时文件:打开文件,然后删除它。目录条目消失了,文件不可见,但由于文件句柄仍然打开,因此 inode 仍然存在。关闭文件后,链接计数变为零,操作系统会回收磁盘空间。
| 归档时间: |
|
| 查看次数: |
5375 次 |
| 最近记录: |