使用chmod,我可以分配如下权限
chmod(file, S_IRUSR);
有没有办法只从用户那里拿走读取权限?
我试过了
chmod(file, !S_IRUSR);
和
chmod(文件,-S_IRUSR);
都没用。
最佳答案
不能像使用命令行实用程序那样使用chmod(2)
更改单个权限位。只能设置新的完整权限集。
要实现更改,您需要首先使用stat(2)
读取它们,从st_mode
字段切换所需的位,然后使用chmod(2)
设置它们。
以下代码将清除S_IRUSR
的test.txt
位,并设置S_IXUSR
位。(为简洁起见,省略了错误检查。)
#include <sys/stat.h>
int main(void)
{
struct stat st;
mode_t mode;
const char *path = "test.txt";
stat(path, &st);
mode = st.st_mode & 07777;
// modify mode
mode &= ~(S_IRUSR); /* Clear this bit */
mode |= S_IXUSR; /* Set this bit */
chmod(path, mode);
return 0;
}
关于c - 删除文件权限? C程序设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29068909/