【发布时间】:2014-11-27 15:13:47
【问题描述】:
我有两个用户。用户 1 正在运行一个程序,该程序试图从用户 2 中删除一个文件。但是我的程序总是返回“权限被拒绝”。
当我尝试使用 rm 命令以 user1 身份自己删除文件时,没有问题。文件的权限是 775,我的 user1 在 user2 的组中。该组也是文件的所有者。文件所在目录的权限也是775。
为了删除文件,我编写的程序使用了 c/c++ 中的“删除”函数。 有没有人有解决方案或想法?
我之前在 unix.stackexchange.com 上问过这个问题。他们派我来这里。
这是我的代码:
void 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
【问题讨论】:
-
发布代码以获得更多帮助
-
检查您对实际权限的假设。显示
ls -l的输出。实际输出的实际权限。这不是编程错误(除了在调用remove()之前没有设置errno = 0),而是权限问题。 -
我再次检查过,就像我说的文件有权限 775。父目录也有 775。如果我尝试自己删除文件(以 user1 身份登录)我可以删除它们而无需"rm File1.txt" 的任何问题。权限应该设置正确,而不是我不能这样做。问题是程序无法删除文件:/
-
请更新您的问题以显示
ls -Al的输出,以便我们查看目录的权限。 -
好的,我又更新了