加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

在访问我使用相同应用程序创建的文件时,Linux中的权限被拒绝

发布时间:2020-12-13 22:57:26 所属栏目:Linux 来源:网络整理
导读:我正在开发一个需要存储一些信息的程序,我决定使用一个简单的文件. 当程序启动时,它会执行以下代码,如果文件存在,则应该以附加模式打开文件,如果不存在则创建文件 (程序第一次加载它应该在下次创建它时只需要使用相同的文件) if((fd = open(path,O_APPEND|O_
我正在开发一个需要存储一些信息的程序,我决定使用一个简单的文件.

当程序启动时,它会执行以下代码,如果文件存在,则应该以附加模式打开文件,如果不存在则创建文件
(程序第一次加载它应该在下次创建它时只需要使用相同的文件)

if((fd = open(path,O_APPEND|O_CREAT|O_RDWR,666)) < 0)
{
    perror("Database open failed");
}
else if(chmod(path,666) < 0)
{
    perror("Database set permissions failed");
}
else if((stream = fdopen(fd,"a+")) == NULL)
{
    perror("Database get stream failed");
}

当文件不存在时,它已成功创建,程序运行正常.但是当文件已经存在时,它会显示“权限被拒绝”,即使它是创建该文件的同一用户下的相同程序.

更多细节:

>我正在使用Ubuntu 12.04 LTS
>当我使用“ls -l”检查时,文件的权限是:“ – w – wx-wT”
>从666终端进行chmod-ing解决问题
> chmod() – 在代码中没有任何帮助

谢谢!

解决方法

根据open()的 man page,(某些)模式字段所需的值是

S_IRWXU

00700 user (file owner) has read,write and execute permission

S_IRUSR

00400 user has read permission S_IWUSR 00200 user has write permission

S_IXUSR

00100 user has execute permission

等等.

所以,我们可以清楚地看到,符号是八进制的.您需要使用0666来表示八进制表示法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读