LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 997|回复: 5

我自编以root身份运行的程序,能不能创建一个文件,并让其它用户对此文件可读、可写、可

[复制链接]
发表于 2003-7-1 14:20:17 | 显示全部楼层 |阅读模式
我自编以root身份运行的程序,能不能创建一个文件,并让其它用户可读、可写、可删除这个文件呢?
多谢
发表于 2003-7-1 14:49:59 | 显示全部楼层
创建文件的时候把文件的其他用户的读写位打开就行了(chmod 666),
umask(0);
open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
要删除的话就要打开存文件的目录的写位了。
建议看看linux的入门书,关于文件系统一块。
 楼主| 发表于 2003-7-1 16:51:11 | 显示全部楼层
多谢!成功啦!

但为什么我用原来用creat
if((fd=creat("fname",S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH))>=0)
{
  close(fd);
}
创建出的文件是 -rw-rw-r--呢?而不是-rw-rw-rw-啊!
只好创建后再用chmod("fname",(S_IRWXU|S_IRWXG|S_IRWXO));才行。
真奇怪啊!
发表于 2003-7-1 17:54:59 | 显示全部楼层
因为你的umask=002,先调用umask(0)就行了。
发表于 2003-7-1 23:18:05 | 显示全部楼层
最初由 shally5 发表
多谢!成功啦!

但为什么我用原来用creat
if((fd=creat("fname",S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH))>=0)
{
  close(fd);
}

creat中的权限只是相当于申请,是否批准还要看系统设置的umask是多少。最终的实际文件权限是它们两者相与的结果。
 楼主| 发表于 2003-7-2 09:07:49 | 显示全部楼层
再学习!
多谢版主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表