0

I'm trying to predict which files I can delete using unlink().

My understanding so far is that the file must either be writeable to others, or have the same group id or owner id as the executing program.

Are there any other cases? I'm trying to explain how these files are deletable by my program (the program is not running as root nor in the admin group).

drwxrwxr-x  4 root  admin    136 Apr 17 23:53 .
drwxrwxr-x  7 root  admin    238 Jan 27 11:49 ..
-rwxrwxr-x  1 root  admin    560 Jan 27 11:49 info.nib
-rwxrwxr-x  1 root  admin  18399 Jan 27 11:49 keyedobjects.nib

Thanks!

4

4 回答 4

3

Actually, it is the permissions of the directory that matter!

于 2012-04-18T07:02:41.240 回答
1

另一种情况是当另一个进程仍然有你要删除的文件时,打开。从手册页unlink

文件路径名无法取消链接,因为它正在被系统或其他进程使用;例如,它是一个挂载点,或者 NFS 客户端软件创建它以表示一个活动的但在其他方面无名的 inode(“NFS 愚蠢的重命名”)。

另请注意,该进程的有效 UID 应该对包含您要取消链接的文件路径的目录具有写入权限。

于 2012-04-18T07:08:01.620 回答
1

正如其他人所提到的,该目录必须可由有效用户写入。但是,该文件可以应用扩展权限 (ACL) 以防止其被删除。从您展示的示例中,我认为您使用的是 Mac OS,对吗?在那里您可以ls -le用来显示 ACL。chmod(1) 联机帮助页告诉您各种权限。如果您想在程序中查询 ACL,您可能应该从阅读acl(3) 手册页开始。

于 2012-04-18T07:18:29.547 回答
0

the directory it resides in should have +w

于 2012-04-18T07:03:09.830 回答