精华内容
下载资源
问答
  • Linux文件属性

    千次阅读 2019-04-10 16:05:02
    Linux文件属性1.Linux中常见文件类型2.常用文件属性获取2.1stat命令获取文件信息2.2 系统调用(stat、fstat、lstat)获取文件信息3.文件权限管理3.1文件权限位3.2access函数3.3chmod函数4.读取目录文件4.1opendir与...

    1.Linux中常见文件类型

    • 普通文件- regular file)
    • 目录文件d directory)
    • 字符设备文件c character)
    • 块设备文件b block)
    • 管道文件p pipe)
    • 套接字文件s socket)
    • 符号链接文件l link)

    2.常用文件属性获取

    2.1stat命令获取文件信息

    stat :display file or file system status
    样例:

    peco@ubuntu:~/linux_pro$ stat a.out 
      File: 'a.out'
      Size: 8912      	Blocks: 24         IO Block: 4096   regular file
    Device: 801h/2049d	Inode: 1983571     Links: 1
    Access: (0755/-rwxr-xr-x)  Uid: ( 1000/    peco)   Gid: ( 1000/   aston)
    Access: 2019-04-08 15:34:43.295173788 +0800
    Modify: 2019-04-08 15:34:41.807173752 +0800
    Change: 2019-04-08 15:34:41.807173752 +0800
     Birth: -
    

    其中size是文件大小,Access是文件最后一次被访问(打开,读取,修改等)的时间,Modify是文件内容最后一次被修改的时间,Change是文件属性最后一次被改变的时间。

    2.2 系统调用(stat、fstat、lstat)获取文件信息

    stat, fstat, lstat : get file status

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <unistd.h>
    
    int stat(const char *pathname, struct stat *buf);
    int fstat(int fd, struct stat *buf);
    int lstat(const char *pathname, struct stat *buf);
    

    struct stat是内核定义的一个结构体,在<sys/stat.h>中声明,该结构体中的所有元素加起来就是文件属性信息。
    struct stat

    struct stat {
    	dev_t  st_dev;         /* ID of device containing file */
    	ino_t  st_ino;         /* inode number */
    	mode_t  st_mode;        /* protection */
    	nlink_t  st_nlink;       /* number of hard links */
    	uid_t  st_uid;         /* user ID of owner */
    	gid_t  st_gid;         /* group ID of owner */
    	dev_t  st_rdev;        /* device ID (if special file) */
    	off_t  st_size;        /* total size, in bytes */
    	blksize_t st_blksize;     /* blocksize for filesystem I/O */
    	blkcnt_t  st_blocks;      /* number of 512B blocks allocated */
     /* Since Linux 2.6, the kernel supports nanosecond
    	precision for the following timestamp fields.
    	For the details before Linux 2.6, see NOTES. */
    
    	struct timespec st_atim;  /* time of last access */
    	struct timespec st_mtim;  /* time of last modification */
    	struct timespec st_ctim;  /* time of last status change */
    
    	#define st_atime st_atim.tv_sec      /* Backward compatibility */
    	#define st_mtime st_mtim.tv_sec
    	#define st_ctime st_ctim.tv_sec
    };
    

    三个API的区别:

    • stat()让内核将要查找属性文件的属性信息结构体的值放入传递给stat函数的buf中,stat调用成功从内核返回时buf中就被填充了文件的正确属性信息,然后通过查看buf结构体变量的元素就可以得知文件的各种属性了。
    • fstat()是由一个已经打开的文件fd出发得到一个文件的属性信息。所以如果文件没有打开(即不想打开文件而只想得到文件属性)那就用stat,如果文件已经被打开然后想得到属性那就用fstat,这样效率会更高(因为stat从磁盘去读取文件,fstat是从内存读取动态文件)。
    • lstat():对于符号链接文件,stat和fstat查阅的是符号链接文件指向的文件的属性,而lstat查阅的是符号链接文件本身的属性。

    3.文件权限管理

    3.1文件权限位

    一个具有9个权限位,3个一组。比如:

    -rwxr-xr-x 1 peco aston 8912 Apr  8 15:34 a.out
    

    第一组三个(rwx)表示文件的属主(owner、user)对该文件的可读、可写、可执行权限;第2组3个位(r-x)表示文件的属主所在的组(group)对该文件的权限;第3组3个位(r-x)表示其他用户(others)对该文件的权限。

    3.2access函数

    access函数可以测试得到当前执行程序用户在当前环境下对目标文件是否具有某种操作权限。

    access: check user's permissions for a file
    
    #include <unistd.h>
    int access(const char *pathname, int mode);
    

    其中参数pathname 是文件的路径名,参数 mode指定access的作用,取值如下:

    mode含义
    F_OK (0)判断对文件是可执行权限
    X_OK (1)判断对文件是否有写权限
    W_OK(2)判断对文件是否有写权限
    R_OK (4)判断对文件是否有读权限

    后三种可以一起使用,如W_OK|R_OK。
    access示例:

    #include <stdio.h>
    #include <unistd.h>
    
    int main(int argc,char**argv)
    {
       int ret = -1;
       char* file_path="./test.txt";
       
       ret = access(file_path, F_OK);
       if (ret < 0){
       	printf("%s is not exist! \n",file_path);
       	return -1;
       }
       else{
       	printf("%s exist! \n",file_path);
       }
       
       ret = access(file_path, R_OK);
       if (ret < 0){
       	printf("can not read %s !\n",file_path);
       }
       else{
       	printf("can  read %s !\n",file_path);
       }
    
       ret = access(file_path, W_OK);
       if (ret < 0){
       	printf("can not write %s !\n",file_path);
       }
       else{
       	printf("can  write %s !\n",file_path);
       }
    
       ret = access(file_path, X_OK);
       if (ret < 0){
       	printf("can not excute %s ! \n",file_path);
       }
       else{
       	printf("can excute %s \n",file_path);
       }		
       return 0;
    }
    

    3.3chmod函数

    chmod是一个用来修改文件的各种权限属性的命令。chmod命令只有root用户才有权利去执行修改,它内部是用linux的一个叫chmod的API实现的。

    chmod: change permissions of a file
    
    #include <sys/stat.h>
    int chmod(const char *pathname, mode_t mode);
    

    4.读取目录文件

    4.1opendir与readdir函数

    opendir:

    #include <sys/types.h>
    #include <dirent.h>
    DIR *opendir(const char *name);
    

    readdir:

    #include <dirent.h>
    struct dirent *readdir(DIR *dirp);
    

    struct dirent:

    struct dirent {
    	ino_t d_ino;       /* inode number */
    	off_t d_off;       /* not an offset; see NOTES */
    	unsigned short d_reclen;    /* length of this record */
    	unsigned char  d_type;      /* type of file; not supported
                                       by all filesystem types */
    	char d_name[256]; /* filename */
    };
    
    • opendir()打开一个目录后得到一个DIR类型的指针给readdir使用。
    • readdir()调用一次就会返回一个struct dirent类型的指针,这个指针指向一个记录了一个目录项(目录中的一个子文件)的结构体变量。
    • readdir()调用一次只能读出一个目录项,要想读出目录中所有的目录项必须多次调用readdir函数。readdir函数内部会记住哪个目录项已经被读过了哪个还没读,所以多次调用不会重复返回已经返回过的目录项。当readdir函数返回NULL时就表示目录中所有的目录项已经读完了。

    4.2可重入函数介绍

    • 有些函数是可重入的有些是不可重入的,具体概念见此博客Linux:可重入函数与不可重入函数
    • readdir函数和前面接触的一些函数是不同的,首先readdir函数直接返回了一个结构体变量指针,因为readdir内部申请了内存并且返回了地址。多次调用readdir其实readir内部并不会重复申请内存而是使用第一次调用readdir时分配的那个内存。这个设计方法是readdir不可重入的关键。
    • readdir在多次调用时是有关联的,这个关联也标明readdir函数是不可重入的。 库函数中有一些函数当年刚开始提供时都是不可重入的,后来意识到这种方式不安全,所以重新封装了C库,提供了对应的可重复版本(一般是不可重入版本函数名_r)
    展开全文
  • Linux文件属性02. Linux文件权限图解03. inode节点04. 附录 01. Linux文件属性 Linux 文件或目录的属性主要包括:文件或目录的节点、种类、权限模式、链接数量、所归属的用户和用户组、最近访问或修改的时间等...

    00. 目录

    01. Linux文件属性

    Linux 文件或目录的属性主要包括:文件或目录的节点、种类、权限模式、链接数量、所归属的用户和用户组、最近访问或修改的时间等内容。

    执行如下命令,可以查看文件所有的信息

    [deng@localhost ~]$ ls -lhi
    总用量 55M
        35137 drwxrwxr-x  7 deng deng   61 1月  22 09:47 bak
       699957 drwxrwxr-x  8 deng deng   73 3月  28 11:14 bj34
     68572839 drwxr-xr-x  4 deng deng 4.0K 2月  25 09:21 instantclient_11_2
    201327693 -rwxrwxr-x  1 deng deng  55M 1月  22 15:55 oracle_client_11gR2.tar.gz
      2990321 drwxrwxr-x  3 deng deng   18 1月  22 16:27 oradiag_deng
      2571438 drwxrwxr-x  7 deng deng  109 7月  10 17:08 projects
    204099456 -rwxrwxr-x  1 deng deng 2.1K 6月  30 15:14 scott_data.sql
     69201454 drwxrwxr-x  4 deng deng   28 7月  11 09:47 share
     68498053 drwxrwxr-x  8 deng deng   73 3月  10 09:16 sz12
    204061021 drwxrwxr-x  3 deng deng   15 7月  12 11:39 test
    204970206 -rwxrwxr-x  1 deng deng  599 6月  17 16:22 test.c
    204085793 -rwxrwxr-x  1 deng deng 1.7K 6月  28 17:16 test.cpp
    134315957 drwxr-xr-x. 2 deng deng    6 11月  8 2018 公共
     68237221 drwxr-xr-x. 2 deng deng    6 11月  8 2018 模板
    134315958 drwxr-xr-x. 2 deng deng    6 11月  8 2018 视频
     68237222 drwxr-xr-x. 2 deng deng    6 11月  8 2018 图片
    201330176 drwxr-xr-x. 2 deng deng    6 11月  8 2018 文档
      2899834 drwxr-xr-x. 2 deng deng    6 11月  8 2018 下载
      2899835 drwxr-xr-x. 2 deng deng    6 11月  8 2018 音乐
    201330175 drwxr-xr-x. 2 deng deng    6 2月  21 09:27 桌面
    [deng@localhost ~]$
    

    相关说明:

    第一列:inode节点
    第二列:文件种类和权限
    第三列: 硬链接个数
    第四列:文件所属者
    第五列:文件所属组
    第六列:文件或目录的大小
    第七列:最后访问或修改时间
    第八列:最后访问或修改时间
    第九列:文件名或目录名

    在这里插入图片描述

    Linux文件属性和权限图形说明
    在这里插入图片描述

    02. Linux文件权限图解

    [deng@localhost ~]$ ls -l test.c 
    -rwxrwxr-x 1 deng deng 599 6月  17 16:22 test.c
    [deng@localhost ~]$ 
    

    第二列为文件的类型和权限,详细图解如下:
    在这里插入图片描述

    03. inode节点

    inode概述:

    一个硬盘需要存放数据,首先分区,再格式化(格式化会创建文件系统类型),最后就可以存储数据。
    Linux的文件系统类型一般有ext2/ext3/ext4等类型。在每个linux存储设备或存储分区被格式化创建成ext4(CentOS 6.7)文件系统后,创建文件系统一般生成两部分:第一部分inode,第二部分是block。inode用来存储文件属性及信息索引(指向文件实体,但文件名称不包含在inode),block用来存放实际的数据使用(例如文字、照片、视频等普通文件数据)。inode是一块存储空间,CentOS 6非启动分区inode默认大小为256字节,CentOS 5 默认大小为128字节。正常情况下,一个文件只能占用一个inode,如果两个文件的inode相同则说明是这两个文件是互为硬链接,也可以是多个文件。inode节点的总数一般在格式化时就给定。

    inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘等等)被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数 据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令, 能通过inode值最快的找到相对应的文件。

    做个比喻,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页,inode 就相当于这本书前面的目录,一本书有很多的内容,如果想查找某部份的内容,我们可以先查目录,通过目录能最快的找到我们想要看的内容。虽然不太恰当,但还是比较形象。
    在这里插入图片描述

    04. 附录

    参考:【Linux】一步一步学Linux系列教程汇总

    展开全文
  • Linux 文件属性详解

    千次阅读 2017-04-13 03:21:30
    Linux 文件属性详解   Linux 文件或目录的属性主要包括:文件或目录的节点、种类、权限模式、链接数量、所归属的用户和用户组、最近访问或修改的时间等内容。具体情况如下: 命令:  ...


                                                                                                                   

                                                                                                                           Linux 文件属性详解


     

    Linux 文件或目录的属性主要包括:文件或目录的节点、种类、权限模式、链接数量、所归属的用户和用户组、最近访问或修改的时间等内容。具体情况如下:


    命令: 


    ls -lih


    输出:


    [root@localhost test]# ls -lih

    总计 316K

    2095120 lrwxrwxrwx 1 root root   11 11-22 06:58 linklog.log -> log2012.log

    2095112 -rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log

    2095110 -rw-r--r-- 1 root root   61 11-13 06:03 log2013.log

    2095107 -rw-r--r-- 1 root root    0 11-13 06:03 log2014.log

    2095117 -rw-r--r-- 1 root root    0 11-13 06:06 log2015.log

    2095118 -rw-r--r-- 1 root root    0 11-16 14:41 log2016.log

    2095119 -rw-r--r-- 1 root root    0 11-16 14:43 log2017.log

    2095113 drwxr-xr-x 6 root root 4.0K 10-27 01:58 scf

    2095109 drwxrwxr-x 2 root root 4.0K 11-13 06:08 test3

    2095131 drwxrwxr-x 2 root root 4.0K 11-13 05:50 test4


    说明:


    第一列:inode

    第二列:文件种类和权限;

    第三列: 硬链接个数;

    第四列: 属主;

    第五列:所归属的组;

    第六列:文件或目录的大小;

    第七列和第八列:最后访问或修改时间;

    第九列:文件名或目录名


    我们以log2012.log为例:


    2095112 -rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log


    inode 的值是:2095112 


    文件类型:文件类型是-,表示这是一个普通文件; 

    文件权限:文件权限是rw-r--r-- ,表示文件属主可读、可写、不可执行,文件所归属的用户组不可写,可读,不可执行,其它用户不可写,可读,不可执行;


    硬链接个数: log2012.log这个文件没有硬链接;因为数值是1,就是他本身;


    文件属主:也就是这个文件归哪于哪个用户 ,它归于root,也就是第一个root;


    文件属组:也就是说,对于这个文件,它归属于哪个用户组,在这里是root用户组;


    文件大小:文件大小是296k个字节;


    访问可修改时间 :这里的时间是最后访问的时间,最后访问和文件被修改或创建的时间,有时并不是一致的;


    当然文档的属性不仅仅包括这些,这些是我们最常用的一些属性。


    关于inode:


    inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘等等)被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数 据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令, 能通过inode值最快的找到相对应的文件。


    做个比喻,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页,inode 就相当于这本书前面的目录,一本书有很多的内容,如果想查找某部份的内容,我们可以先查目录,通过目录能最快的找到我们想要看的内容。虽然不太恰当,但还是比较形象。


    当我们用ls 查看某个目录或文件时,如果加上-i 参数,就可以看到inode节点了;比如我们前面所说的例子:


    [root@localhost test]#  ls -li log2012.log 

    2095112 -rw-r--r-- 1 root root 302108 11-13 06:03 log2012.log


    log2012.log 的inode值是 2095112 ; 查看一个文件或目录的inode,要通过ls 命令的的 -i参数。


    展开全文
  • 1.2 linux文件系统介绍 2.更改目录/文件权限 2.1 用户和用户组的相关指令 2.2 chgrp命令 2.3 chown命令 2.4 chmod命令 2.5 umask命令  1.文件属性 1.1 ls命令 ls命令是我们最常用的命令之一,用来查看当前目录下的...
  • 一、查看当前目录下文件属性 ll:显示当前目录下所有(包括隐藏文件)文件及文件夹权限 ls -l:显示当前目录下未隐藏文件权限 每个文件的属性有最左边的十个字符来确定: d开头表示为目录 -开头表示为文件 接...

    一、查看当前目录下文件属性

    ll:显示当前目录下所有(包括隐藏文件)文件及文件夹权限

    ls -l:显示当前目录下未隐藏文件权限

    每个文件的属性有最左边的十个字符来确定:

    d开头表示为目录

    -开头表示为文件

    接下来三个一组,r为可读,w为可写,x为可执行,如果没有该权限,为-

    1-3位为属主(文件的所有者)拥有该文件的权限

    4-6位为属组(所有者的同组用户)拥有的权限

    7-9为其他用户的权限

     之后为用户名

    用户名后为组名

    组名后为文件大小(字节数)

    文件最后修改时间

    文件名称

    二、更改文件属性

    1.chgrp(change group):改变文件的属组

    对单个文件改变属组,chgrp 改变之后的属组 文件

    如:chgrp sam test.txt

     对一个目录整体改变属组,返回上一级目录,使用-R命令,递归更改文件属组

    如:chgrp -R sam test

    2.chown(change owner):更改文件的属主和属组

    chown [-R]递归 属主:属组 文件

    如:chown [-R] sam test.txt

    chown [-R] sam:dec test

    3.chmod(change mode):更改文件的权限

    使用数字:chmod [-R] xyz三位数字 文件

    r:4   w:2   x:1  读写执行分别为421,加起来的三位数字分别为属主、属组和其它用户的执行权限,777即三者均拥有所有权限

    如:chmod 777 test.txt

     使用字母:如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用 chmod u=rwx,g=rx,o=r 文件名 来设定

    chmod u=rwx,g=rx,o=r 文件名

     

    展开全文
  • Linux文件属性更改命令

    千次阅读 2018-08-23 19:29:59
    Linux文件属性更改命令 chown:  当我们要改变一个文件的属主,我们所使用的用户必须是该文件的属主而且同时是目标属组成员,或超级用户root,只有root用户才能改变文件的属主  使用方法:  chown 用户 文件...
  • Linux文件属性和更改文件权限

    千次阅读 热门讨论 2017-11-29 15:37:05
    Linux文件属性当用ls -l命令查看当前目录下的文件时,共显示9列内容。drwxr-xr-x. 6 1001 1001 4096 11月 11 08:36 auto -rw-r--r--. 1 1001 1001 278202 10月 17 21:16 CHANGES -rw-r--r--. 1 1001 1001 423948 10...
  • Linux文件属性与文件权限

    千次阅读 2020-02-15 19:34:51
    我们在Linux中经常看到文件属性中包含类似于“-rwxr--r--”的字符串,这些有什么含义?文件的属性又包含什么内容?如何修改文件属性呢?
  • linux 查看文件属性 查看隐藏文件

    千次阅读 2013-02-18 14:27:53
    linux的隐藏文件 如在某一目录下有隐藏文件(.a.c) 用ls-a命令查看 用ls -al 文件名 查看文件属性
  • Linux文件属性修改及权限

    千次阅读 2018-10-12 10:53:30
    Linux文件属性修改及权限 文件权限解读: 第0位确认文件类型, 0位为【d】是目录 0位为【-】是文件 0位为【l】是链接文档 0位为【b】是装置文件里面的可供储存的接口设备(可随机存取装置) 0位为【c】是装置文件...
  • linux文件属性查看

    千次阅读 2021-01-26 15:33:51
    Linux中第一个字符代表这个文件是目录、文件或链接文件等等: 当为[ d ] 则是目录 当为[ - ] 则是文件; 若是[ l ] 则表示为链接文档 ( link file ); 若是[ b ] 则表示为装置文件里面的可供储存的接口设备 ( 可...
  • linux文件属性 修改权限

    千次阅读 2020-11-23 21:00:02
    ll或者ls -l 查看当前目录文件属性第一个属性所代表的意思及其他的属性 当为 d 则是目录 当为 - 则是文件; 若是 l 则表示为链接文档(link file); 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取...
  • Linux文件属性查看

    千次阅读 2018-07-19 09:40:06
    1.每个文件有三个方面...2.查看文件命令:ls  输出最前面的一行字符串意义依次为:  文件格式,用户权限,用户组权限,其他用户权限,文件所有者,  文件所属用户组,文件大小,文件最后被改变时间,文件名 ...
  • Linux文件属性详解

    千次阅读 2019-05-05 12:05:16
    文件存储在硬盘上,硬盘的最小存储单位叫做"扇区"(sector)。每个"扇区"的大小为512字节(byte), ,操作系统读取硬盘的时候,不会一个个扇区的读取,这样效率太慢。他是一次性读取多个扇区,即一次性读取一个...
  • linux文件属性详解

    千次阅读 2012-07-19 17:09:47
    1.第1列对应的是文件属性,这一列其实共有10个属性    第一个属性表示这个文件是“目录、文件或连接文件等”: [d]:目录, [-]:文件, [l]:链接文件(link file),[b]:设备文件中可供存储
  • ls与linux文件属性

    2018-08-10 21:55:59
    ls与文件属性 ls:代表list,显示文件的文件名与相关属性 选项: -a:列出所有的文件及目录的详细权限及属性 -l:每个文件用单行输出 -d:仅显示目录名 其他的用到时再补充 如图所示,为用ls -l列出的文件...
  • Linux文件属性、权限设置

    千次阅读 2013-08-13 10:05:47
    来源:... Linux文件属性、权限设置 文件属性和权限 [root@daf root]# ls -al total 64 drwxr-x--- 4 root root 4096 Feb 14 22:02 . drwxr-xr
  • Linux文件属性及操作

    千次阅读 2016-07-18 09:01:55
    LINUX 中一切皆文件,时刻记住你在哪,你是谁,你的权限是什么?
  • linux文件属性、权限

    千次阅读 2016-07-31 18:45:45
    文件权限 1 读写执行权限的意义 2 读写执行权限的修改 3 文件默认权限 4 文件特殊权限及修改 5 文件隐藏权限及修改 文件属主属组修改 文件时间戳1 .命令ls命令ls,用于列出(list)各文件。 默认仅显示非隐藏文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 439,884
精华内容 175,953
关键字:

linux查看文件属性

linux 订阅