我想在目录中读取一些来自第三方工具的文件。在阅读这些文件之前,我正在检查这些文件是regular file
。
bofore阅读
if (!S_ISREG(file_info.st_mode))
{
return false;
}
阅读此文件后,我想更改它的权限,以便它不会一次又一次地读取。
我的问题是如何更改文件权限st_mode
,以便我的应用程序在没有超级用户的情况下不会再次阅读。
我的Linux发行版是RedHat
答案 0 :(得分:2)
如果您阅读该文件并且不想再次阅读,则不应测试它是否是常规文件,因为无论它具有何种权限,常规文件都是常规文件。所以我认为您应该检查读取权限,如果已设置,请阅读该文件,并使用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);
答案 1 :(得分:1)
如果您是文件的所有者(如果您正在运行第三方工具,则可能是您的所有者),您可以直接使用来自终端的chmod命令来更改文件的权限。
" 例如:chmod 666 log.txt "
无需在chmod之前使用sudo。