您的位置:首页 > 其它

第三章、文件权限

2016-01-31 13:43 183 查看
文中有借鉴鸟哥

的部分内容,然后加上了自己的一些理解。

一、文件权限的基本认识
[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,目录最大权限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内容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设置文件权限
后续添加
本文出自 “不朽字” 博客,请务必保留此出处http://buxiuzi.blog.51cto.com/11124867/1740164
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: