上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 59 下一页
摘要: 本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。这两个函数使我们可以更改现有文件的访问权限:#include int chmod( const char *pathname, mode_t mode );int fchmod( int filedes, mode_t mode );两个函数返回值:若成功则返回0,若出错则返回-1chmod函数在指定的文件上进行操作,而fchmod函数则对已打开的文件进行操作。为了改变一个文件的权限位,进程的有效用户ID必须等于文件的所有者ID,或者该进程必须具有超级用户 阅读全文
posted @ 2014-01-02 20:08 ITtecman 阅读(6072) 评论(0) 推荐(0) 编辑
摘要: 本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。umask函数为进程设置文件模式创建屏蔽字,并返回以前的值。(这是少数几个没有出错返回函数中的一个。)#include mode_t umask( mode_t cmask);返回值:以前的文件模式创建屏蔽字其中,参数cmask是由S_IRUSR、S_IWUSR、S_IXUSR、S_IRGRP、S_IWGRP、S_IXG、S_IROTH、S_IWOTH及S_IXOTH这9个常量中的若干个按位“或”构成的。在进程创建一个新文件或新目录时,就一定会使用文件模式 阅读全文
posted @ 2014-01-02 18:14 ITtecman 阅读(1316) 评论(0) 推荐(0) 编辑
摘要: 本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。当用open函数打开一个文件时,内核以进程的有效用户ID和有效组ID为基础执行其访问权限测试。有时,进程也希望按其实际用户ID和实际组ID来测试其访问能力。例如当一个进程使用设置用户ID或设置组ID特征作为另一个用户(或组)运行时,就可能会有这种需要。即使一个进程可能已经因设置用户ID以超级用户权限运行,它仍可能想验证其实际用户能否访问一个给定的文件。access函数是按照实际用户ID和实际组ID进行访问权限测试的。(该测试也分成四步,这与http://w 阅读全文
posted @ 2014-01-02 17:15 ITtecman 阅读(631) 评论(0) 推荐(0) 编辑
摘要: 首先需要明确的是,新目录的所有权规则与新文件所有权规则相同。 新文件的用户ID设置为进程的有效用户ID。关于组ID,POSIX.1允许实现选择下列之一作为新文件的组ID。 (1)新文件的组ID可以是进程的有效组ID。 (2)新文件的组ID可以是它所在目录的组ID。 使用POSIX.1所允许的第二个选项(继承目录的组ID)使得在某个目录下创建的文件和目录都具有该目录的组ID。于是文件和目录的... 阅读全文
posted @ 2014-01-02 16:42 ITtecman 阅读(473) 评论(0) 推荐(0) 编辑
摘要: st_mode值也包含了针对文件的访问权限位。所有文件类型(目录文件、字符特殊文件等)都有访问权限(access permission)。每个文件有9个访问权限位,可将它们分成三类,见表4-5:表4-5 9个访问权限位,取自st_mode屏蔽意义S_IRUSR用户-读S_IWUSR用户-写S_IXUSR用户-执行S_IRGRP组-读S_IWGRP组-写S_IXGRP组-执行S_IROTH其他-读S_IWOTH其他-写S_IXOTH其他-执行在表4-5开头三行中,术语用户指的是文件所有者(owner)。chmod(1)命令用于修改这9个权限位。该命令允许我们用u表示用户(所有者),用g表示组,用 阅读全文
posted @ 2014-01-02 16:27 ITtecman 阅读(1723) 评论(0) 推荐(0) 编辑
摘要: 与一个进程相关联的ID有6个或更多,它们如表4-4所示:表4-4 与每个进程相关联的用户ID和组ID实际用户ID 我们实际上是谁 实际组ID 有效用户ID 用于文件访问权限检查 有效组ID 附加组ID 保存的设置用户ID 由exec函数保存 保存的设置组ID 实际用户ID和实际组ID标识我们究竟是谁(执行这个程序的用户和组)。这两个字段在登录时取自口令文件中的登录项。通常,在一个登录会话间这些值并不改变,但是超级用户进程有方法改变它们。有效用户ID,有效组ID以及附加组ID决定了我们的文件访问权限。保存设置用户ID... 阅读全文
posted @ 2014-01-02 14:24 ITtecman 阅读(1481) 评论(0) 推荐(0) 编辑
摘要: 本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。UNIX系统的大多数文件是普通文件或目录,但是也有另外一些文件类型。文件类型包括如下几种:(1)普通文件(regular file)。这是最常见的文件类型,这种文件包含了某种形式的数据。至于这种数据是文本还是二进制数据对于UNIX内核而言并无区别。对普通文件的解释由处理该文件的应用程序进行。一个值得注意的例外是二进制可执行文件。为了执行程序,内核必须理解其格式。所有二进制可执行文件都遵循一种格式,这种格式使内核能够确定程序文本和数据的加载位置。(2)目录文 阅读全文
posted @ 2014-01-02 11:15 ITtecman 阅读(1996) 评论(0) 推荐(0) 编辑
摘要: #include int stat( const char *restrict pathname, struct stat *restrict buf );int fstat( int filedes, struct stat *buf );int lstat( const char *restrict pathname, struct stat *restrict buf );三个函数的返... 阅读全文
posted @ 2014-01-02 10:00 ITtecman 阅读(2605) 评论(0) 推荐(0) 编辑
摘要: 一些基本系统数据类型可以在多个头文件中定义。例如,在FreeBSD5.2.1中,size_t在26个不同的头文件中都有定义。由于一个程序可能包含这26个不同的头文件,并且ISO C不允许对同一个名字进行多次类型定义,那么我们该如何编写这些头文件呢?下面是FreeBSD中使用的技术: 首先,在头文件中定义可在多个头文件中出现的基本数据类型。例如: #ifndef _MACHINE__TYP... 阅读全文
posted @ 2014-01-02 09:06 ITtecman 阅读(725) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.csdn.net/lmh12506/article/details/6803847 首先要明白不带缓冲的概念:所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用。系统内核对磁盘的读写都会提供一个块缓冲,当用write函数对其写数据时,直接调用系统调用,将数据写入到块缓冲进行排队,当块缓冲达到一定的量时,才会把数据写入磁盘。因此所谓的不带缓冲... 阅读全文
posted @ 2014-01-02 08:43 ITtecman 阅读(1143) 评论(1) 推荐(1) 编辑
上一页 1 ··· 32 33 34 35 36 37 38 39 40 ··· 59 下一页