chdir(改变当前的工作(目录)
相关函数
 getcwd,chroot
表头文件
 #include<unistd.h>
定义函数
 int chdir(const char * path);
函数说明
 chdir()用来将当前的工作目录改变成以参数path所指的目录。
返回值
 执行成功则返回0,失败返回-1,errno为错误代码。
范例
 #include<unistd.h>
main()
{
chdir(“/tmp”);
printf(“current working directory: %s\n”,getcwd(NULL,NULL));
}
执行
 current working directory :/tmp
 

chmod(改变文件的权限)
相关函数
 fchmod,stat,open,chown
表头文件
 #include<sys/types.h>
#include<sys/stat.h>
定义函数
 int chmod(const char * path,mode_t mode);
函数说明
 chmod()会依参数mode 权限来更改参数path 指定文件的权限。
参数
 mode 有下列数种组合
S_ISUID 04000 文件的(set user-id on execution)位
S_ISGID 02000 文件的(set group-id on execution)位
S_ISVTX 01000 文件的sticky位
S_IRUSR(S_IREAD) 00400 文件所有者具可读取权限
S_IWUSR(S_IWRITE)00200 文件所有者具可写入权限
S_IXUSR(S_IEXEC) 00100 文件所有者具可执行权限
S_IRGRP 00040 用户组具可读取权限
S_IWGRP 00020 用户组具可写入权限
S_IXGRP 00010 用户组具可执行权限
S_IROTH 00004 其他用户具可读取权限
S_IWOTH 00002 其他用户具可写入权限
S_IXOTH 00001 其他用户具可执行权限
只 有该文件的所有者或有效用户识别码为0,才可以修改该文件权限。基于系统安全,如果欲将数据写入一执行文件,而该执行文件具有S_ISUID 或S_ISGID 权限,则这两个位会被清除。如果一目录具有S_ISUID 位权限,表示在此目录下只有该文件的所有者或root可以删除该文件。
返回值
 权限改变成功返回0,失败返回-1,错误原因存于errno。
错误代码
 EPERM 进程的有效用户识别码与欲修改权限的文件拥有者不同,而且也不具root权限。
EACCESS 参数path所指定的文件无法存取。
EROFS 欲写入权限的文件存在于只读文件系统内。
EFAULT 参数path指针超出可存取内存空间。
EINVAL 参数mode不正确
ENAMETOOLONG 参数path太长
ENOENT 指定的文件不存在
ENOTDIR 参数path路径并非一目录
ENOMEM 核心内存不足
ELOOP 参数path有过多符号连接问题。
EIO I/O 存取错误
范例
 /* 将/etc/passwd 文件权限设成S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH */
#include<sys/types.h>
#include<sys/stat.h>
main()
{
chmod(“/etc/passwd”,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
}
 

chown(改变文件的所有者)
相关函数
 fchown,lchown,chmod
表头文件
 #include<sys/types.h>
#include<unistd.h>
定义函数
 int chown(const char * path, uid_t owner,gid_t group);
函数说明
 chown ()会将参数path指定文件的所有者变更为参数owner代表的用户,而将该文件的组变更为参数group组。如果参数owner或group为-1, 对应的所有者或组不会有所改变。root与文件所有者皆可改变文件组,但所有者必须是参数group组的成员。当root用chown()改变文件所有者 或组时,该文件若具有S_ISUID或S_ISGID权限,则会清除此权限位,此外如果具有S_ISGID权限但不具S_IXGRP位,则该文件会被强制 锁定,文件模式会保留。
返回值
 成功则返回0,失败返回-1,错误原因存于errno。
错误代码
 参考chmod()。
范例
 /* 将/etc/passwd 的所有者和组都设为root */
#include<sys/types.h>
#include<unistd.h>
main()
{
chown(“/etc/passwd”,0,0);
}
 

chroot(改变根目录)
相关函数
 chdir
表头文件
 #include<unistd.h>
定义函数
 int chroot(const char * path);
函数说明
 chroot()用来改变根目录为参数path 所指定的目录。只有超级用户才允许改变根目录,子进程将继承新的根目录。
返回值
 调用成功则返回0,失败则返-1,错误代码存于errno。
错误代码
 EPERM 权限不足,无法改变根目录。
EFAULT 参数path指针超出可存取内存空间。
ENAMETOOLONG 参数path太长。
ENOTDIR 路径中的目录存在但却非真正的目录。
EACCESS 存取目录时被拒绝
ENOMEM 核心内存不足。
ELOOP 参数path有过多符号连接问题。
EIO I/O 存取错误。
范例
 /* 将根目录改为/tmp ,并将工作目录切换至/tmp */
#include<unistd.h>
main()
{
chroot(“/tmp”);
chdir(“/”);
}
 

closedir(关闭目录)
相关函数
 opendir
表头文件
 #include<sys/types.h>
#include<dirent.h>
定义函数
 int closedir(DIR *dir);
函数说明
 closedir()关闭参数dir所指的目录流。
返回值
 关闭成功则返回0,失败返回-1,错误原因存于errno 中。
错误代码
 EBADF 参数dir为无效的目录流
范例
 参考readir()。
 

fchdir(改变当前的工作目录)
相关函数
 getcwd,chroot
表头文件
 #include<unistd.h>
定义函数
 int fchdir(int fd);
函数说明
 fchdir()用来将当前的工作目录改变成以参数fd 所指的文件描述词。
返回值执
 行成功则返回0,失败返回-1,errno为错误代码。
附加说明
 
范例
 #include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
main()
{
int fd;
fd = open(“/tmp”,O_RDONLY);
fchdir(fd);
printf(“current working directory : %s \n”,getcwd(NULL,NULL));
close(fd);
}
执行
 current working directory : /tmp
 

fchmod(改变文件的权限)
相关函数
 chmod,stat,open,chown
表头文件
 #include<sys/types.h>
#include<sys/stat.h>
定义函数
 int fchmod(int fildes,mode_t mode);
函数说明
 fchmod()会依参数mode权限来更改参数fildes所指文件的权限。参数fildes为已打开文件的文件描述词。参数mode请参考chmod()。
返回值
 权限改变成功则返回0,失败返回-1,错误原因存于errno。
错误原因
 EBADF 参数fildes为无效的文件描述词。
EPERM 进程的有效用户识别码与欲修改权限的文件所有者不同,而且也不具root权限。
EROFS 欲写入权限的文件存在于只读文件系统内。
EIO I/O 存取错误。
范例
 #include<sys/stat.h>
#include<fcntl.h>
main()
{
int fd;
fd = open (“/etc/passwd”,O_RDONLY);
fchmod(fd,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH);
close(fd);
}
 

fchown(改变文件的所有者)
相关函数
 chown,lchown,chmod
表头文件
 #include<sys/types.h>
#include<unistd.h>
定义函数
 int fchown(int fd,uid_t owner,gid_t group);
函数说明
 fchown ()会将参数fd指定文件的所有者变更为参数owner代表的用户,而将该文件的组变更为参数group组。如果参数owner或group为-1,对映 的所有者或组有所改变。参数fd 为已打开的文件描述词。当root用fchown()改变文件所有者或组时,该文件若具S_ISUID或S_ISGID权限,则会清除此权限位。
返回值
 成功则返回0,失败则返回-1,错误原因存于errno。
错误代码
 EBADF 参数fd文件描述词为无效的或该文件已关闭。
EPERM 进程的有效用户识别码与欲修改权限的文件所有者不同,而且也不具root权限,或是参数owner、group不正确。
EROFS 欲写入的文件存在于只读文件系统内。
ENOENT 指定的文件不存在
EIO I/O存取错误
范例
 #include<sys/types.h>
#include<unistd.h>
#include<fcntl.h>
main()
{
int fd;
fd = open (“/etc/passwd”,O_RDONLY);
chown(fd,0,0);
close(fd);
}
 

fstat(由文件描述词取得文件状态)
相关函数
 stat,lstat,chmod,chown,readlink,utime
表头文件
 #include<sys/stat.h>
#include<unistd.h>
定义函数
 int fstat(int fildes,struct stat *buf);
函数说明
 fstat()用来将参数fildes所指的文件状态,复制到参数buf所指的结构中(struct stat)。Fstat()与stat()作用完全相同,不同处在于传入的参数为已打开的文件描述词。详细内容请参考stat()。
返回值
 执行成功则返回0,失败返回-1,错误代码存于errno。
范例
 #include<sys/stat.h>
#include<unistd.h>
#include<fcntk.h>
main()
{
struct stat buf;
int fd;
fd = open (“/etc/passwd”,O_RDONLY);
fstat(fd,&buf);
printf(“/etc/passwd file size +%d\n “,buf.st_size);
}
执行
 /etc/passwd file size = 705
 

ftruncate(改变文件大小)
相关函数
 open,truncate
表头文件
 #include<unistd.h>
定义函数
 int ftruncate(int fd,off_t length);
函数说明
 ftruncate()会将参数fd指定的文件大小改为参数length指定的大小。参数fd为已打开的文件描述词,而且必须是以写入模式打开的文件。如果原来的文件大小比参数length大,则超过的部分会被删去。
返回值
 执行成功则返回0,失败返回-1,错误原因存于errno。
错误代码
 EBADF 参数fd文件描述词为无效的或该文件已关闭。


引自:http://www.diybl.com/course/6_system/linux/Linuxjs/2008831/139151.html

相关文章推荐



Linux部分精彩文章推荐

★Linux系统初学者的常见问题解决集结

★Linux挂载U盘

★linux 下的挂载

★redhat和ubuntu系统下挂载ntfs文件系统的方法(转载)

★疯狂挂载:Linux连接常用外部设备的方法

★ubuntu 重装系统备份数据   ubuntu安装kde桌面

★ubuntu全局配置文件

★ubuntu安装rpm的方法

★ubuntu设置全攻略

★Linux 常用C函数说明-文件权限控制篇

★rpm deb命令集合

★rc.local自启动学习

★init.d,rc.d详解 Linux运行时详解

★linux下tar gz bz2 tgz z等众多压缩文件的解压方法

★tar命令用法详述

★使用tar进行磁带备份的命令汇总

★LINUX:解压问题tar: Child returned status 1

★Linux系统服务自启动设置_Tomcat

★Linux操作系统下SSH默认22端口修改方法

★Linux启动级别:init 0,1,2,3,4,5,6

★linux服务开机启动和运行级别

★linux服务自动启动功能

★新手学堂:Linux操作系统的启动步骤说明

★xinit启动X Window System过程初探

★构建小型Linux跟文件系统镜像(Ext2 或 Ext3)

★linux内核源码目录结构

★简述 Linux 文件系统的目录结构

★Linux目录结构及解释

★Linux 内核源代码的结构

★linux文件系统的目录结构

★linux 端口 操作

★Linux操作系统下软件的安装与卸载

★vim 实用的经验

★网络管理:超级详细Tcpdump 的用法

★Linux系统下网卡网络配置基础

★用vsFTPd自架Linux网络安装服务器,以及Redhat局域网安装的解决办法

★网络管理:超级详细Tcpdump 的用法

★[转]tcpdump 教程 用法 使用

★Linux下telnet配置

★linux 任务计划 cron

★YUM 库的安装

★Linux环境变量的设置和查看方法

★Linux命令速查手册

★关于linux系统中命令的使用详解

★简单而常用的shell 命令

★rpm常用命令集合

★[常用命令]diff

★vi指令大全

★LINUX/UNIX vi全屏幕编辑器

★Linux操作系统Ifconfig命令详细解析

★linux top命令详解

★chmod命令使用详解

★Linux主要shell命令详解

★linux ps命令使用详解

★Linux下设置和修改IP

★Linux中find用法整理

★Fedora 中的 Yum 命令详解

★rpm常用命令集合

★Linux cat 命令用法

★chmod命令详细用法

★linux redhat命令大全

★Linux操作系统下/etc/hosts文件

★LINUX PATH环境变量

★如何安装无签名认证的rpm包

★LINUX关于休眠、待机和睡眠的问题

★initrd.img处理

★Linux字符集的修改方法

★Awk学习笔记

★shell取得文件行数6法

★正则表达式

★shell中单引号、双引号、反引号、反斜杠的使用

★Linux开机过程(转)

★LINUX中注销其他已登陆帐户

★学习 Linux LVM

★shell 中的参数替换

mkswap 把一个分区格式化成为swap交换区

★rsh的配置

修复GRUB

★Linux自动注销登录的帐户

★linux下的/dev/shm/  以及与swap目录的区别

★Redhat Linux配置远程桌面

★Linux截图工具import使用说明

★Linux、UNIX下磁带机的管理和使用

★Linux 磁带机备份完全攻略

★gnome桌面环境 kde桌面环境的区别

★linux i18n修改,中文版英文版体现

★linux命令-locale字符显示

★linux命令-locale字符显示

★RedHat 8.0软件包组--桌面类

★让英文版的LINUX 支持中文显示

★Linux  shell内核使用

★在RedHat Enterprise Linux 上Oracle 9i的安装配置与调优

★Linux下安装mysql后无法启动的解决方法

★百度最全的LINUX和Redhat学习教程下载帖大全

★Redhat linux 安装 gcc编译器,Gcc源码包,rpm包安装方法!

★RHCE题库

★Redhat Enterprise Linux 6 正式版已经发布!

★VMWare虚拟机安装RedHat Linux全过程

 

Linux 常用C函数说明-文件权限控制篇相关推荐

  1. linux添加目录命令权限,linux chmod命令设置目录/文件权限详解

    首页 > Linux教程 > 常用命令 > chmod 文件权限 linux chmod命令设置目录/文件权限详解 linux中chmod命令用于改变系统文件或目录的访问权限,用数字 ...

  2. linux c数字转字符串函数,Linux常用C函数—字符串转换篇

    Linux 常用C 函数-字符串转换篇 atof (将字符串转换成浮点型数) 相关函数 atoi ,atol ,strtod ,strtol ,strtoul 定义函数 double atof(con ...

  3. linux使用模板函数,Linux常用C函数

    Linux常用C函数Tag内容描述: 1.Linux常用C函数 接口处理篇 accept(接受socket连线) 相关函数 socket,bind,listen,connect 表头文件 #inclu ...

  4. Linux 之用户管理与文件权限

    Linux 之用户管理与文件权限 一. 1.查看系统版本    uname       uname -a      uname -r      uname -m 2.特点 :              ...

  5. linux 常用命令03--修改文件的权限与归属

    chmod 命令 改变文件权限 第一种: chmod [u|g|o|a] [+|-] [r|w|x] filename 比如: chmod u+x filename 给所属用户增加执行的权限 第二种: ...

  6. linux常用c函数(中文版)

    都是linux的c函数东西略多,用页面搜索来查找吧. << Back to man.ChinaUnix.net isalnum(测试字符是否为英文或数字) 相关函数 isalpha,isd ...

  7. linux下用chmod修改文件权限详解(文件权限与特殊权限)

    chmod 是一条在Unix系统中用于控制用户对文件的权限的命令(change mode单词前缀的组合)和函数.只有文件所有者和超级用户可以修改文件或目录的权限.可以使用绝对模式,符号模式指定文件的权 ...

  8. Linux常用命令:用户、权限管理

    目录 一.运行模式 二.用户管理(重点) 1.添加用户 2.修改用户 3.设置密码 4.删除用户 5.查看当前用户:whoami 6.查看登录用户:who 7.查看登录用户:w 8. 退出登录账户: ...

  9. linux特殊权限是e,linux下用chmod修改文件权限详解(文件权限与特殊权限)

    chmod是一条在Unix系统中用于控制用户对文件的权限的命令(changemode单词前缀的组合)和函数.只有文件所有者和超级用户可以修改文件或目录的权限.可以使用绝对模式,符号模式指定文件的权限. ...

最新文章

  1. 给你一些点与线,只用动画就能看懂张量乘法,还能证明迹循环定理
  2. C#与Java的比较(转)
  3. 优秀的服务器托管服务商的必备要素
  4. ORB SLAM学习--跑自己数据集图片序列或摄像头或视频(转)
  5. OpenCASCADE可视化:应用交互服务之本地选择
  6. ionic安装插件常用命令
  7. MinIO Server config.json (v18) 指南
  8. SPSS问卷或量表调查研究需要多少份或要求多大的样本量?【SPSS 062期】
  9. 高校图书馆管理系统 php 漏洞,Libsys图书管理系统 V5.5 变量覆盖漏洞
  10. Windows下【AxureRP】原型设计工具破解码与安装包
  11. C#中调用PDFCreator生成PDF文件
  12. 车道线定位及拟合:直方图确定车道线位置
  13. 魔兽世界服务器TrinityCore源码学习
  14. 软件测试怎么测微信朋友圈,面试题:软件测试,如何测微信的朋友圈?
  15. echarts饼图 外圈转动动画 pie
  16. mysql 怎样解锁表_mysql一键解锁表
  17. 20162316刘诚昊 第二周博客作业
  18. 快速学习-视频点播解决方案
  19. 【3】python二级——操作题
  20. USB数据线上的“疙瘩”

热门文章

  1. 如何数分钟创建并成功运行数千台云主机?
  2. 写了 300000 行基础设施代码,我学到了这五条经验
  3. 如何避免腾讯云彻底搞丢“天价数据”事件再次发生?
  4. 北漂的程序员们,这寒冬你是否“有枝可依”?
  5. java+ext.ajax,[转载]Ext Ajax:怎么调用Ext.Ajax.request方法和使用Java Servlet进行处理
  6. php 类定义抽象方法吗,如何理解php的抽象类跟抽象方法
  7. Elasticsearch基础(五)搜索匹配
  8. java方法的重载 编程题,java面试编程题:重载方法
  9. dns文件传输服务器,MOOC云计算 - DNS三部曲之DNS区域传输限制
  10. oracle数据库字段的值加一_天天面试--数据库乐观锁和悲观锁