文中有借鉴鸟哥j_0002.gif的部分内容,然后加上了自己的一些理解。


一、文件权限的基本认识

[root@study ~]# ls -al
total 48
dr-xr-x---. 5    root     root   4096  May 29 16:08 .
dr-xr-xr-x. 17    root    root    4096  May  417:56 ..
-rw-------. 1    root     root   1816  May  4 17:57 anaconda-ks.cfg
-rw-------. 1    root     root    927  Jun  2 11:27 .bash_history
-rw-r--r--. 1    root     root     18  Dec 29  2013 .bash_logout
-rw-r--r--. 1    root     root    176  Dec 29  2013 .bash_profile
-rw-r--r--. 1    root     root    176  Dec 29  2013 .bashrc
drwxr-xr-x. 3    root     root     17  May  6 00:14 .config
drwx------. 3    root     root     24  May  4 17:59 .dbus
-rw-r--r--. 1    root     root   1864  May  4 18:01 initial-setup-ks.cfg


第一部分:文件的类型和权限

 第一个字符代表文件类型:

  当为[ - ]代表为普通文件,分为3类

   纯文字文件(ASCII):linux系统最多的文件类型,用cat可以查看内容

   二进制文件(binary):系统仅认识且可以执行的二进制文件,shell scripts不算,cat是

   数据文件(date):程序运行过程读取文件,比如/var/log/wtmp可以用last查看,但是cat为乱码

  当为[ d ]代表为目录

  当为[ l ]代表为链接文件(symboliclink file)

  当为[ b ]代表为块设备文件(block)

   硬盘和光盘等随即存储的设备

  当为[ c ]代表为字符设备文件(character)

   鼠标键盘等串行设备

  当为[ p ]代表为命名管道文件(pipe)

  当为[ s ]代表为套接字文件(socket)


 之后的九个字符代表文件权限:

  rwxrwxrwx三位一组分别代表拥有者,同组,其他人权限


第二部分:文件的硬链接数

 文件默认为1

 目录默认为2

 

第三部分:拥有者

 

第四部分:拥有组所属的组

 

第五部分:文件大小

 单位为bytes

 

第六部分:文件的最近时间

 

第七部分:文件名

 .开头代表隐藏文件

 

相关命令

 chown 修改文件拥有者和所属组

 chown 帐号名称 文件

 chown 帐号名称:组名称 文件

  -R 递归修改

  --reference=路径 以某个文件为参考做修改

 

 chmod 修改权限

 chmod 权限 文件

  -R 递归修改

  --reference=路径 以某个文件为参考做修改


 权限有两种表示方法:

 字符型 : rwxr—r--

 数字型 : 744


 权限的修改有三种方法:

 chmod 744 filename         #一定是个三位数,三位8进制,r=4,w=2,x=1

 chmod u=rwx,g=r,o=r filename   #可单个修改,u,g,o,a

 chmod u+x,g+r,o+r filename    #可单个修改,u,g,o,a

 

 chgrp 修改文件所属组

 chgrp 组名称 文件

  -R 递归修改

  --reference=路径 以某个文件为参考做修改

 

二、权限对文件的重要性:

 r权限: 读取该文件的内容

 w权限: 更改编辑该文件的内容(不含删除该文件)

 x权限: 使文件具有被系统执行的权限

 

三、权限对目录的重要性:

 r权限: 具有读取目录结构列表的权限

 w权限: 具有异动该目录结构列表的权限,包括1、建立新文件 2、删除文件 3、修改文件名 4、移动文件位置

 x权限: 具有进入该目录的权限

 

预设的文件和目录的权限

用户文件权限目录权限
root644 (rw-r--r--)755 (rwxr-xr-x)
其他用户664 (rw-rw-r--)775 (rwxrwxr-x)

  默认权限与umask有关,可用umask修改或者修改配置文件~/.bashrc,文件最大权限666,目录最大权限777root用户的权限设定更为严格,所有用户在文件计算权限时要去掉x权限,而且最好不要直接与umask进行加减。

[root@study ~]# umask
0022
[root@study ~]# umask -S
u=rwx,g=rx,o=rx


四、最小权限设定

 假设存在/test1/test2目录,并且存在/test1/abc文件

操作/test1/test1/abc/test2解释
读取abc内容xr-首先是进入/test1目录,然后读取abc文件
修改abc内容xrw-首先是进入/test1目录,然后读取abc文件,再修改abc内容
执行abc内容xrx-首先是进入/test1目录,然后读取abc文件,再执行abc内容
删除abc文件wx--首先是进入/test1目录,然后删除abc文件
将abc文件复制到/test2
xrwx首先是进入/test1目录,然后读取abc文件,再然后进去/test2目录,最后写入文件

 由上可得,文件最小需要r权限,目录最小需要x权限。

 

五、文件特殊权限(建立在具有x权限之上)

 SUID(set UID)

  权限代码为4,拥有者存在x权限则显示为 s ,为空的x则为 S

 SGID(set GID)

  权限代码为2,拥有者存在x权限则显示为 s ,为空的x则为 S

 SBIT(Sticky Bit)

  权限代码为1,拥有者存在x权限则显示为 t , 为空的x则为 T



 SUID

  1、SUID权限仅对二进制程序(binary program)有效

  2、执行者对该程序需要有x的可执行权限

  3、本权限仅在执行该程序的过程中有效(run-time)

  4、执行者将具有该程序拥有者(owner)的权限


 例子:

[root@ ~]# ls -ld /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Dec 29  2019 /usr/bin/passwd
[root@ ~]# ls -ld /etc/shadow
---------. 1 root root 1051 Dec 29  2019 /etc/shadow
#首先,普通用户对passwd具有x可执行权限
#当普通用户去修改自己密码时需要读取修改到/etc/shadow,是没有权限的
#但是passwd命令具有SUID权限,所以在用户使用passwd命令的过程中暂时具有root的权限,再去修改/etc/shadow,是可以的。


 SGID

  1、SGID权限对二进制程序(binary program)有效

  2、执行者对该程序需要有x的可执行权限

  3、执行者将在执行的过程中获取该程序拥有者所在组的权限


 当一个目录设定了SGID的权限之后,将具有如下功能:

  1、使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录;

  2、使用者在此目录下的有效群组(effective group)将会变成目录的群组

  3、若使用者在此目录下具有 w 的权限(可以新建档案),则使用者所建立的新档案,该新档案的群组与此目录的群组相同


 SBIT(只对目录有效)

  1、当使用者对于此目录具有w,x权限,亦即具有写入的权限时;

  2、当使用者在该目录下建立档案或目录时,自己root才有权力删除该档案


  如果将 A 目录加上了 SBIT 的权限项目时,则甲只能够针对自己建立的档案或目录进行删除/更名/移动等动作,而无法删除他人的档案。


 例子

[root@ ~]# ls -ld /tmp
drwxrwxrwt. 11 root root 4096 Dec 29  2019 /tmp


六、文件隐藏权限

chattr 设置文件隐藏属性

+ :增加一个特殊参数

- :减少一个特殊参数

= :等于某些特殊阐述

 a 设置后,该文件只能增加内容,不能删除也不能修改

 i 设置后,该文件不能做任何改动,包括删除、改名、链接、写入、新增,root也是,但是可以-i取消


lsattr 显示文件隐藏属性

 -a :将隐藏文件的属性也列出来

 -d :同ls -d,仅列出目录本身

 -R :递归查看,包括子目录


七、ACL设置文件权限

后续添加