2014-12-01 102 views
0

我有两个用户。 User1正在运行一个程序,它试图从user2中删除一个文件。但是我的程序总是让我“拒绝许可”。删除其他用户的文件

当我尝试使用rm命令将自己作为user1删除时,没有任何问题。这些文件的权限是775,我的用户1在用户组2中。该组也是文件的所有者。目录中的文件所在的权限也是775。

为了删除文件,我写的程序使用了c/C++中的“删除”功能。 有没有人有解决方案或想法?

我之前在unix.stackexchange.com上提过这个问题。他们派我到这里来。

这里是我的代码:

无效DELETEFILE(){

if(0 != remove("File1.txt")) 
     cout<<"Error deleting File: "<<strerror(errno)<<endl; 
    if(0 != remove("File2.txt")) 
     cout<<"Error deleting File: "<<strerror(errno)<<endl; 
} 

我已重命名的文件,但我知道原来的路径是正确的。我已经测试了这个

更多信息: 好的我已经运行该程序作为user2和文件已被删除没有任何问题。

groups user1 users user2

groups user2 user2 adm www-data plugdev users ftp vsftpd

ls -lah drwxrwxr-x 7 user2 user2 4.0K Nov 27 14:13 . drwxrw-r-x 4 user2 user2 4.0K Nov 11 12:34 .. -rwxrwxr-x 1 user2 user2 50 Nov 12 15:12 File1.txt -rwxrwxr-x 1 user2 user2 826 Nov 27 14:13 File2.txt

+0

包含目录的所有权是什么?模式775对于某些OTHER组中的文件/用户不是很有帮助。 – 2014-12-01 21:30:00

+0

执行程序的权限是什么? – 2014-12-01 21:35:27

+2

我认为删除文件的功能是['unlink'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/unlink.html)。 – 2014-12-01 21:35:53

回答

0

尝试运行rm和您与straceuser1命令:

strace your_program 
strace rm File1.txt File2.txt 

你应该会看到,你的程序和rm正在做迪fferently。