1.stat , fstat , lstat
int stat( const char * restrict pathname , struct stat * restrict buf ) ;
int fstat ( int filedes , struct stat* restrict buf ) ;
int lstat ( const char * restrict pathname , struct stat * restrict buf ) ;
以上三个函数均可以获取文件的相关信息,以stat的结构返回。其中,stat使用文件名进行获取,而且会跟踪链接,而lstat会显示链接文件的信息,不会跟踪。而fstat则是通过已经打开的文件描述符来获得相关的文件信息。
struct stat { mode_t st_mode; /* file type & mode (permissions) */ ino_t st_ino; /* i-node number (serial number) */ dev_t st_dev; /* device number (file system) */ dev_t st_rdev; /* device number for special files */ nlink_t st_nlink; /* number of links */ uid_t st_uid; /* user ID of owner */ gid_t st_gid; /* group ID of owner */ off_t st_size; /* size in bytes, for regular files */ time_t st_atime; /* time of last access */ time_t st_mtime; /* time of last modification */ time_t st_ctime; /* time of last file status change */ blksize_t st_blksize; /* best I/O block size */ blkcnt_t st_blocks; /* number of disk blocks allocated */ };
2.每个进程都有六个相关的用户ID值 :
real user ID real group ID
|
who we really are
|
effective user ID effective group ID supplementary group IDs
|
used for file access permission checks
|
saved set-user-ID saved set-group-ID
|
saved by exec functions,是effective user ID和effective group ID的复制。
|
|
3.文件访问权限
S_IRUSR
|
user-read
|
S_IWUSR
|
user-write
|
S_IXUSR
|
user-execute
|
S_IRGRP
|
group-read
|
S_IWGRP
|
group-write
|
S_IXGRP
|
group-execute
|
S_IROTH
|
other-read
|
S_IWOTH
|
other-write
|
S_IXOTH
|
other-execute
|
|
在访问相关的文件时,我们必须对于该路径上的所有的文件夹拥有运行权限。如果我们拥有read的权限,则可以以只读形式打开文件,
如果 拥有write权限,则可以以写的形式打开文件。要在一个目录下新建或者删除文件,我们必须对该目录拥有写与运行权限。
4.访问检查
int access( const char * pathname , int mode ) ;
5.sticky bit
通过设定stick bit,在该文件第一次被运行后,text的内容被复制到交换区,下一次可以快速地运行。
6.文件系统
因为每个i-node都是要同一个文件系统内部进行编号的,所以ln(1)无法在不同的文件系统中进行链接操作。
而在同一个文件系统中时,mv与rm操作都不需要搬运数据。
对于每个cylinder group,可以表示成以下形式:
打开该文件,如果该文件的link count为0,则为将该文件删除。
每个inode都会包含如下信息:
文件类型,文件权限,文件大小, 文件数据的指针
stat中的信息大部分都是保存在inode之中。
7.链接
硬链接,均指向同一个i-node
符号链接,通过存储指向的路径名实现,可以实现跨文件系统与指向目录。
Function
|
Does not follow symbolic link
|
Follows symbolic link
|
access
|
|
•
|
chdir
|
|
•
|
chmod
|
|
•
|
chown
|
•
|
•
|
creat
|
|
•
|
exec
|
|
•
|
lchown
|
•
|
|
link
|
|
•
|
lstat
|
•
|
|
open
|
|
•
|
opendir
|
|
•
|
pathconf
|
|
•
|
readlink
|
•
|
|
remove
|
•
|
|
rename
|
•
|
|
stat
|
|
•
|
truncate
|
|
•
|
unlink
|
•
|
|
|
8.文件时间:
Field
|
Description
|
Example
|
ls(1) option
|
st_atime
|
last-access time of file data
|
read
|
-u
|
st_mtime
|
last-modification time of file data
|
write
|
default
|
st_ctime
|
last-change time of i-node status
|
chmod, chown
|
-c
|
|
access time 与modification time 均可以使用下面的函数进行修改:
int utime( const char * pathname , const struct utimbuf * times ) ;
|