在不作为超级用户的情况下更改文件权限
Change file permission without being a superuser
我想在目录中读取一些来自第三方工具的文件。在阅读这些文件之前,我正在检查这些文件是否为regular file
。
预读
if (!S_ISREG(file_info.st_mode))
{
return false;
}
看完这个文件后,我想更改它的权限,这样它就不会一次又一次地读了。
我的问题是如何更改文件权限st_mode
,使我的应用程序在没有超级用户的情况下不会再次读取它。
我的linux发行版是RedHat
如果您读取了该文件,但不想再次读取,则不应该测试它是否为常规文件,因为无论它拥有什么权限,常规文件都是常规文件。因此,我认为您应该检查读取权限,如果设置了读取权限,则读取文件,并使用chmod()
设置禁用读取的权限。
/* Check it it is readable by the user */
if ((file_info.st_mode & S_IRUSR)==0)
{
return false;
}
/* If it is, open and read the file... */
...
...
/* Mark it as not readable by the user. file_name is assumed
to be the name of the file as you have used it upon calling
lstat */
chmod (file_name, file_info.st_mode & ~S_IRUSR);
如果你是文件的所有者(如果你正在运行第三方工具,你可能是所有者),你可以直接从终端使用chmod命令来更改文件的权限
"例如:chmod 666 log.txt"
在chmod之前无需使用sudo。
相关文章:
- 如何使用Windows API C++更改已创建的文件夹/目录安全权限
- 从根权限进程创建可访问的文件
- 威纳派读取自定义文件或文件夹的所有访问权限
- 写入文件权限被拒绝
- C++将文件权限添加到 zip 文件
- 如何在Qt/C++中设置Windows文件权限
- 更改 Linux 套接字文件权限
- C++如何通过win32api检索文件权限和所有权
- 如何限制程序的文件权限
- 在不作为超级用户的情况下更改文件权限
- 程序删除其他用户的文件 - 权限被拒绝
- 如何创建自定义操作以更改文件权限
- 如何更新QFileSystemModel中的文件权限
- 如何使用c++boost库获取文件权限
- 正在检查非提升用户在Windows上的文件权限
- 文件权限中的"l"位 ( ---x--l--- )O/P
- 如何使用Boost库更改文件权限
- 检查windows文件权限
- ofstream (c++)不创建文件(权限被拒绝)
- 如何在C++中打开文件时设置文件权限