Linux文件管理

学习大纲:
Linux中文件的作用
Linux文件的命名规则
Linux中文件的相关信息
Linux文件类型
Linux文件权限
修改文件创建者身份
修改文件所属组
文件的访问控制列表(ACL)
Linux链接文件
 
 
1、Linux文件的作用
    在Linux系统中,它将所有的一切都以文件的方式存放在系统中(目录也是一个特殊的    文件)。
    因此对系统的管理,就是对文件进行管理。
 
 
2、Linux文件的命名规则
      文件名最大为255个字符。
      文件名中不能包括Linux特殊字符如“”、“/”等(如果在文件中使用这些特殊符号可通过转义符  “”将其转义)。
      以“.”开头的文件为隐藏文件。
           -如果要显示隐藏文件,则需要用户在ls指令后加上-a或-A来显示。
           -如果要创建隐藏文件则只需在文件名前加上“.”
 
 
3、linux中文件的相关信息
      当用户使用指令“ls  -l”以长列表方式查看文件的详细信息时,就会显示文件的下面的相关信息
           -rw-r--r-- 1 root lonny 12 Apr 19 19:50 file1
           - 文件类型、文件权限、硬连接数、文件创建者、文件所属组、文件大小、更动时间、文件名
           
 
           
 
4、Linux文件类型
        当用户查看文件详细时,第一个字符就这个文件的类型。
              -:一般文件
              d:目录文件
              b:块设备文件
              c:字符设备文件
              l:链接文件
              p:人工管道
              
        检查文件类型的其它方法
              file     <文件名>
              stat    <文件名>
 
5、文件权限
       能够操作文件的用户分类
       每类用户能够使用的权限
       修改文件权限一般方法
       通过数字来修改文件的权限
 
 
能够操作文件的用户分类
       对于每一个文件,Linux都提供了一套文件权限系统。
       在文件权限系统中,将可以操作文件的用户都分成三类:
              -- 文件的创建者 (u)
              -- 文件所属组的成员(g)
              -- 其他用户 (O)
 
 
每类用户能够使用的权限
       对于每一类用户,权限系统又分别给他们提供三种权限(rwx)
       针对文件而言,这三种权限的含义为:
           - 读(r) 用户是否有权力读文件的内容
           - 写(w) 用户是否有权利改变文件的内容
           - 执行(x)用户是否有权利执行文件
 
 
修改文件权限一般方法
      用户可使用chmod指令来改变文件的权限
          - 语法:chmod <权限><文件名>
      改变文件权限的方法:
           --通过“+”、“-”来为某类用户添加或去掉相关权限
                例:chmod  u+x   file //为文件的创建者添加一个执行的权限
           --通过“=”来为某用户赋于某权限
                例:chmod  g=rx  file //为文件所属组赋于一个读与执行的仅限
          
 
使用数字来改变文件权限
       chmod后还可以用三个数字来表示用户权限             
            - 第一位数字代表文件创建者权限
            - 第二位数字代表文件所属组成员权限
            - 第三位数字代表其他用户权限
        
       每一个数字都采用加和的方式得出。
            - 4 (读)   
            - 2 (写)
            - 1 (执行)
             例:chmod 755 file  //为文件赋于rwxr-xr-x权限
             分析:u(7=4+2+1 rwx) g(5=4+1 r-x) o(5=4+1 r-x)
   
        只有文件的拥有者和root用户才可以改变文件的权限。
 
 
6、修改文件创建者身份
        每一个文件都有一个拥有者。
        只有root用户才可以用“chown”指令来改变文件的拥有者。
        语法:chown <用户名>  <文件名>
        例:chown  student  file
 
 
7、修改文件的所属组
       每一个文件都属于并只能属于一个指定的组。
       文件的创建者与root用户,可以用“chgrp”指令来改变文件所属的组。
        注:当使用文件创建者来改变属组时,那么被改变的新组中必须包含此用户。
        语法:chgrp  <组名>  <文件名>
                例:chgrp  grp1  file
 
 
8、文件访问控制列表(ACL)
   ACL可以为某个文件单独设置该文件具体的某用户或组的权限。
    getfacl <文件名>      
           - 获取文件的访问控制信息
           
        setfacl设置文件的acl
           -m修改文件的acl
           -x取消用户或组对文件的权限
           
- 语法:
  •   setfacl –m  u:用户名:权限    <文件名>   //设置某用户名的访问权限
  •   setfacl –m  g:组    名:权限    <文件名>   //设置某个组的访问权限
  •   setfacl –x  u:用户名 <文件名>                //取消某用户名的访问权限
  •   setfacl –x  g:组名 <文件名>                   //取消某个组的访问权限
  •   setfacl    -m    m:[rwx]   <文件名>   
                【先设置文件的acl权限,再设置文件的umask】
 
 
9、软连接和硬链接
  软链接(符号链接)
       - 软链接就有一点像为原文件名创建了一个新的指针。当对软链接操作时,系统就会找到原文 件并对原文件进行操作(与Windows的快捷方式类似)。
       - 语法:ln  –s  <源文件>  <新建链接名>
 
   硬链接
    - 硬链接文件完全等同于原文件,原文件名和连接文件都指向相同的物理地址。
    - 语法:ln <源文件> <新建链接名>
    - 硬链接的描述
                   --不可跨文件系统创建硬连接,也不可为目录建立硬链接。
                   --文件在磁盘中的数据是唯一的,这样就可以节省硬盘空间
                   --由于只有当删除文件的最后一个节点时,文件才能真正从磁盘空间中消除,因此可以防止不必要的误删除。       
 
 
建立软链接和硬链接
创建硬链接: ln    原始文件或文件夹    目标文件或文件夹   
创建软链接: ln     -s    原始文件或文件夹    目标文件或文件夹   
 
[root@redhat ~]# touch test1                        创建文件test1
[root@redhat ~]#ln    test1   test2                为test1创建硬链接test2
[root@redhat ~]# ln  -s   test1   test3          为test1创建软链接test3
 
[root@redhat ~]# ls -li
1704073 -rw-r--r--. 2 root root     0 May 11 16:52 test1
1704073 -rw-r--r--. 2 root root     0 May 11 16:52 test2
1704076 lrwxrwxrwx. 1 root root     5 May 11 16:53 test3 -> test1   【test3表示软链接】
 
从上面可以看出:
硬连接文件test2与原文件test1的inode节点相同,均为1704073,然而符号连接文件的inode节点不同。
 
[root@redhat ~]# echo "im test1" >> test1
 
[root@redhat ~]# cat test1
im test1
[root@redhat ~]# cat test2
im test1
[root@redhat ~]# cat test3
im test1
 
[root@redhat ~]# rm -f test1
[root@redhat ~]# cat test2
im test1
[root@redhat ~]# cat test3
cat: test3: No such file or directory
 
通过上面的测试可以看出:当删除原始文件test1后,硬连接test2不受影响,但是符号连接test3文件无效。
 
 
删除软链接
rm    -rf symbolic_name    注意不是rm -rf   symbolic_name/ 
[root@redhat ~]# rm test3
rm: remove symbolic link `test3'? y
 
 
当删除链接文件时,如果不小心会把原始文件删掉
例:
ln    -s   /home/user/bak  /var/bak
rm     /var/bak/   会提示bak是一个文件夹无法删除这时千万不要用 rm -rf /var/bak/ 来删除, 否则你删除的并不是链接文件 而是真正的 /home/user/bak 文件夹
 
想要删除链接文件要用以下命令 rm   /var/bak 只是少了一个“ / ” ,删除的 就是链接文件, 也就是在文件的最后不要加上/  
原文地址:https://www.cnblogs.com/liuxing0007/p/10868170.html