一、文件权限的基本认识
[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权限: 具有进入该目录的权限
预设的文件和目录的权限
用户 | 文件权限 | 目录权限 |
root | 644 (rw-r--r--) | 755 (rwxr-xr-x) |
其他用户 | 664 (rw-rw-r--) | 775 (rwxrwxr-x) |
默认权限与umask有关,可用umask修改或者修改配置文件~/.bashrc,文件最大权限666,目录最大权限777,root用户的权限设定更为严格,所有用户在文件计算权限时要去掉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内容 | x | r | - | 首先是进入/test1目录,然后读取abc文件 |
修改abc内容 | x | rw | - | 首先是进入/test1目录,然后读取abc文件,再修改abc内容 |
执行abc内容 | x | rx | - | 首先是进入/test1目录,然后读取abc文件,再执行abc内容 |
删除abc文件 | wx | - | - | 首先是进入/test1目录,然后删除abc文件 |
将abc文件复制到/test2 | x | r | wx | 首先是进入/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设置文件权限
后续添加
本文出自 “不朽字” 博客,请务必保留此出处http://buxiuzi.blog.51cto.com/11124867/1740164
原文地址:http://buxiuzi.blog.51cto.com/11124867/1740164