文件和目录之chown、fchown和lchown函数
下面几个chown函数可用于更改文件的用户ID和组ID。
#include <unistd.h>
int chown( const char *pathname, uid_t owner, gid_t group );
int fchown( int filedes, uid_t owner, gid_t group );
int lchown( const char *pathname, uid_t owner, gid_t group );
三个函数的返回值:若成功则返回0,若出错则返回-1
除了所引用的文件是符号链接以外,这三个函数的操作相似。在符号链接的情况下,lchown更改符号链接本身的所有者,而不是该符号链接所指向的文件。
如若两个参数owner或group中的任意一个是-1,则对应的ID不变。
基于BSD的系统一直规定只有超级用户才能更改一个文件的所有者。这样做的原因是防止用户改变其文件的所有者从而摆脱磁盘空间限额对他们的限制。系统V则允许任一用户更改他们所拥有的文件的所有者。按照_POSIX_CHOWN_RESTRICTED的值,POSIX.1在这两种形式的操作中选用一种。对于Solaris 9,此功能是个配置选项,其默认值是施加限制。而FreeBSD 5.2.1、Linux 2.4.22和Mac OS X 10.3则总对chown施加限制。
_POSIX_CHOWN_RESTRICTED常量可选地定义在头文件<unistd.h>中,而且总是可以用pathconf或fpathconf函数查询。此选项还与所引用的文件有关——可在每个文件系统基础上,是该选项起作用或不起作用。
若_POSIX_CHOWN_RESTRICTED对指定的文件起作用,则
(1)只有超级用户进程能更改该文件的用户ID。
(2)若满足下列条件,一个非超级用户进程就可以更改该文件的组ID:
(a)进程拥有此文件(其有效用户ID等于该文件的用户ID)。
(b)参数owner等于-1或文件的用户ID,并且参数group等于进程的有效组ID或进程的附加组ID之一。
这意味着,当_POSIX_CHOWN_RESTRICTED起作用时,不能更改其他用户文件的用户ID。你可以更改你所拥有的文件的组ID,但只能改到你所属的组。
如果这些函数由非超级用户进程调用,则在成功返回时,该文件的设置用户ID位和设置组ID位会被清除。
文件和目录之chown、fchown和lchown函数的更多相关文章
- 《UNIX环境高级编程》笔记--chown,fchown和lchown函数
这三个函数都是用来更改文件的用户ID和组ID的,函数的定义如下: #include <unistd.h> int chown(const char *pathname, uid_t own ...
- [APUE]文件和目录(上)
一.文件权限 1. 各种ID 我在读这一章时遇到了各种ID,根据名字完全不清楚什么意思,幸好看到了这篇文章,http://blog.csdn.net/ccjjnn19890720/article/de ...
- Linux 系统常用命令汇总(一) 文件和目录操作
文件和目录 命令 选项 注解 示例 文件的基本操作 ls [选项][文件] 显示所有文件和目录 ls -al -a(A) 显示所有文件和目录,包括隐藏文件和目录(显示所有文件和目录,包括隐藏文件和 ...
- PHP面试 PHP基础知识 七(文件及目录处理)
文件操作 文件打开函数 fopen()函数 //用来打开一个文件 打开时需要指定打开模式 语法:fopen( filename, mode, include_path, context); filen ...
- chmod修改文件的权限/chown修改文件和目录的所有者
ll指令的显示的信息为(当前目录下只有nameservice1一个目录): drwxr-xr-x 3 hdfs hdfs 4096 4月 14 16:19 nameservice1 上述信息分别表示: ...
- linux_修改文件权限chmod 、改变文件/目录所有者chown
chmod使用事例 数字方法 chmod -R 751 [FILE] ugoa方法 chmod -R u=wrx,g=rx,o=x [FILE] 说明 chmod [OPTION] [MODE] [F ...
- chmod chown llinux文件及目录的权限介绍
linux 文件或目录的读.写.执行权限说明: chmod :设置文件或目录权限. u:所有者 g:所在组 o:其他组 a:所有人(u.g.o的总和) chmod -R 文件1/文件2….. ...
- /文件和目录权限chmod /更改所有者和所属组chown/umask/隐藏权限lsattr/chattr
2.14 文件和目录权限chmod 2.15 更改所有者和所属组chown2.16 umask2.17 隐藏权限lsattr/chattr 文件和目录权限chmod 文件权限: r 4 ...
- linux 权限管理命令chown、chgrp、umask、linux新建文件或目录的默认权限755
chown /bin/chownchown [用户] [文件或目录] 改变文件或目录的所有者只有root可以改变文件或目录的所有者 root用户:mkdir /tmptouch /tmp/test.f ...
随机推荐
- I.MX6 Android Linux shell MMPF0100 i2c 获取数据
#!/system/bin/busybox ash # # I.MX6 Android Linux shell MMPF0100 i2c 获取数据 # 说明: # 本文主要记录通过shell脚本来获取 ...
- ASP.NET MVC中默认Model Binder绑定Action参数为List、Dictionary等集合的实例
在实际的ASP.NET mvc项目开发中,有时会遇到一个参数是一个List.Dictionary等集合类型的情况,默认的情况ASP.NET MVC框架是怎么为我们绑定ASP.NET MVC的Actio ...
- MD5加密帮助类
using System; using System.Collections.Generic; using System.Text; namespace AIMSCommon { /// <su ...
- 可用于Hadoop下的ETL工具——Kettle
看大家分享了好多hadoop相关的一些内容,我为大家介绍一款ETL工具——Kettle. Kettle是pentaho公司开源的一款ETL工具,跟hadoop一样,也是java实现,其目的就是做 ...
- dll打包进需要发布的exe z
http://www.cnblogs.com/Jarvin/p/3721195.html 我们需要发布的exe文件很多时候都可能会依赖于一堆松散的dll,如果想在发布 的时候只提供exe文件,而不想把 ...
- java快速获取大图片的分辨率(大图片格式JPG,tiff ,eg)
问题描述:怎样快速获取一个20MB图片的分辨率? 程序代码: package test; import java.awt.Dimension; import java.awt.image.Buffer ...
- VC6.0的工程设置解读Project--Settings
[原文:http://wenku.baidu.com/view/f10a241dff00bed5b9f31ddd.html] 做开发差不多一年多了,突然感觉对VC的工程设置都不是很清楚,天天要和VC见 ...
- css 横向渐变 图片阴影效果 字体模糊效果
(必须加在Table的TD里,如果TD有背景就会遮盖阴影,可以把背景放到外套的表格里去) 背景颜色渐变 横向渐变 style="filter:progid:DXImageTransform. ...
- 深入浅出JavaScript函数 v 0.5
本文的观点是建立在<JavaScript权威指南 6th Ed> <JavaScript高级编程 3th Ed> <JavaScript精粹 2th Ed>之上, ...
- 基于Hadoop 2.2.0的高可用性集群搭建步骤(64位)
内容概要: CentSO_64bit集群搭建, hadoop2.2(64位)编译,安装,配置以及测试步骤 新版亮点: 基于yarn计算框架和高可用性DFS的第一个稳定版本. 注1:官网只提供32位re ...