Chinaunix

标题: 有关linux下进程文件权限的问题 [打印本页]

作者: yangyi33855    时间: 2014-01-26 19:01
标题: 有关linux下进程文件权限的问题
发现了一个很奇怪的现象:
在程序中,通过这样打开或者创建一个文件:
open(file_path, (O_WRONLY|O_CREAT|O_TRUNC));
在root用户下编译出来:
root@ubuntu:/mnt/hgfs/share_file/# make
然后运行,这时,是能成功运行的,没有报错,但是第二次运行,创建的文件权限是:
root@ubuntu:/mnt/hgfs/share_file/# ls -alt
-r-xr-xr-x 1 root root    27 2014-01-26 18:49 file.cfg

但是我再次运行该程序,结果报错了,
open: Permission denied

后来在open中加上权限属性,(S_IRWXU|S_IRWXG|S_IRWXO)就好了。

请教高手指导下:
为什么能创建该file.cfg文件,却没有权限打开?即为什么第二次开始,就出现打开失败呢,第一次都能创建啊,就是说能文件是能打开的呀,而且权限也是-r 可读吧?




作者: timespace    时间: 2014-01-27 11:01
第一次,open通过O_CREAT创建文件时,只需要目录的写权限和执行权限,对文件权限没要求
第二次,open用同样的参数运行,因为文件已存在,而O_WRONLY|O_TRUNC都需要写权限,你没有,所以出错了。
总之,用O_CREAT时,必须后面跟上合适的mode。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2