Linux--权限管理
Posted 0715mmmm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux--权限管理相关的知识,希望对你有一定的参考价值。
权限的基本概念
谈到权限管理,我们需要知道一下两点:
用户分为普通用户和超级用户(管理员)。
Linux下对于一个目录或者文件来说,操作对象也分为三种:owner: 属主, u ;group: 属组, g ;other: 其他 ,o。
接下来解释四种权限类型,分别是:
1.读权限,r,用数字表示是4。
2.写权限,w,用数字表示是2。
3.执行权限,x,用数字表示是1。
4.特殊权限。
然而对于目录和文件,r、w、x代表着不同的权限。
文件:
r: 可使用文件查看类工具获取其内容
w: 可修改其内容
x: 可以把此文件提请内核启动为一个进程
目录:
r: 可以使用ls查看此目录中文件列表
w: 可在此目录中创建文件,也可删除此目录中的文件
x: 可以使用ls -l查看此目录中文件列表,可以cd进入此目录
X:只给目录x权限,不给文件x权限
现在让我们先看看基本三种权限的不同搭配情况,这需要结合操作对象以及被操作对象类型来说明。
首先在这里,前提为同一个文件或者目录,我们使用 ll 命令查看 /etc/ 下文件的权限。
会发现文件权限的格式如下:
[[email protected] bin]# ll /etc/
total 2048
drwxr-xr-x. 3 root root 4096 Jul 24 17:02 abrt
drwxr-xr-x. 4 root root 4096 Jul 24 17:07 acpi
-rw-r--r--. 1 root root 44 Jul 24 09:40 adjtime
-rw-r--r--. 1 root root 1512 Jan 12 2010 aliases
由于对象分为三种,而权限则是三种,排列组合则是九种。某权限位上 — 则表示无该权限。
从代码行可以看出,一共是十位,除后九位为权限位以外,第一位则是表示文件类型,在这里不做讨论。
举例来说,abrt文件的权限位为:rwxr-xr-x,数字读为755。
解释便是owner拥有读写执行权限,组成员为读、执行权限,其他人权限为读、执行。
所以根据操作对象即当前系统用户的类型不同,当前用户是否为超级用户(root)、是否为属主、
是否为属组中的成员或者为其他人,操作权限都是不一样的。
其次,我们需要了解权限之于文件和目录是不同的。
在这里,前提是同个用户,对目录以及文件的权限的不同:
对文件:
当仅r权限作用在文件上的时候,表示可以读取该文件的内容 cat less
当仅w权限作用在文件上的时候,表示可以修改该文件的内容 gedit vi vim nano > >>
当仅x权限作用在文件上的时候,无作用
当rw权限同时作用在文件上的时候,表示可以读写该文件
当rx权限同时作用在文件上的时候,表示可以读并能执行该文件
当wx权限同时作用在文件上的时候,权限等同于仅w权限
当rwx权限同时作用在文件上时,表示可以读写并执行该文件
对目录:
当仅r权限作用在目录上的时候,可以短列出目录的内容(子文件,子目录名)
当仅w权限作用在目录上的时候,无作用
当仅x权限作用在目录上的时候,可以进入该目录
当rw同时作用在目录上的时候,权限等同于仅r
当rx同时作用在目录上的时候,表示可以长列出,可以进入
当wx同时作用在目录上的时候,可以创建及删除文件或目录。
当rwx同时作用在目录上的时候,可以列出可以创建删除可以进入。
基本权限管理
介绍过权限的基本概念之后,我们需要学习了解权限的使用方法。其实需要用到权限的地方很多,比如后期学习脚本,最基本需要给脚本执行权限,
又或者说,有一些文件我们可以设置、修改权限来保护文件安全或者对文件进行一些修改完善等等。
权限设置
这里我们需要学习一个新命令----chmod
基本格式: chmod [选项]... 权限 文件名
选项: -R: 表示修改权限
由于上面解释过,权限分为字符模式、数字模式,相对的。chmod使用时也可分为两种情况。
字符模式:
ugo +-= rwx :表示给属主、属组、其他人加上或者减去读写执行权限
a=ugo 或=左边省略 :表示给所有人用户 左边的权限
当 =右边省略表示---,即什么权限都没有
数字模式
1:x
2:w
3:wx
4:r
5:rx
6:rw
7:rwx
特殊权限
1.SUID、SGID、STICKY
suid:当对于一个可执行的二进制文件作用了suid之后,任何人在执行该文件时,临时拥有其所有人的权限
使用的方法: chmod u+s
sgid则要分情况:使用方法: chmod g+s
1.当对于一个可执行的二进制文件作用了sgid之后,任何人在执行该文件时,临时拥有其所有组的权限
2.当对于一个目录作用了sgid权限之后,任何人在该目录下所创建的文件的所属组,均与该目录的所属组相同
sticky: 对于一个目录作用了sticky权限,该目录下的文件仅其所属人和目录的所属人及root可以删除。
具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权 限或拥有权
sticky 设置在文件上无意义
同理地,特殊权限表示也分为两种:
(1) suid:4
sgid:2
sticky:1
SUID SGID STICKY
000 0 :无特殊权限
001 1 :sticky
010 2 :sgid
011 3 :sgid + sticky
100 4 :suid
101 5 :suid + sticky
110 6 :suid + sgid
111 7 :suid +sgid +sticky
chmod 4777 /tmp/a.txt :表示suid + rwx
(2) SUID: user,占据属主的执行权限位
s: 属主拥有x权限
S:属主没有x权限
SGID: group,占据属组的执行权限位
s: group拥有x权限
S:group没有x权限
Sticky: other,占据other的执行权限位
t: other拥有x权限
T:other没有x权限
但是有些时候我们会发现即使时root用户,仍然有些文件或目录不能进行操作,这里就涉及到新命令:
chattr以及lsattr这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,
更底层的属性控制是由chattr来改变的。
相关用法:
chattr :对指定文件进行属性修改
+a 表示不能删除,不能覆盖,可以追加
+i 表示不能删除,不能覆盖,不能追加
lsattr 查看attr权限
2.acl
acl可以实现灵活的权限管理 ,除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
其生效顺序:所有者,自定义用户,自定义组,其他人
(1)开启acl的方式
centos7 默认支持acl
centos6及之前,操作系统安装时所创建的文件系统默认支持acl,而操作安装之后使用mkfs格式化的文件系统默认未开启acl,需要手工开启,方法如下:
1.tune2fs -o acl /dev/sda5
2.mount -o acl /dev/sda5 /app 需要挂载之后再开启
(2)设置ACL
setfacl -m u:liubei:rwx testdir
使用文件设置acl
1.cat acl.txt
u:liubei:rwx
g:shuguo:---
g:weiguo:r-x
2.setfacl -M acl.txt testdir/
(3)设置默认权限
setfacl -Rm u:liubei:rwx testdir/ 设置当前的权限
setfacl -Rm d:u:liubei:rwx testdir/ 设置未来文件的权限
(4)删除权限
[[email protected](nanyibo) app]# setfacl -x u:liubei testdir/
[[email protected](nanyibo) app]# setfacl -x u:guanyu testdir/
[[email protected](nanyibo) app]# setfacl -x g:weiguo testdir/
(5)删除所有权限,清空acl属性
setfacl -b testdir
批量删除acl权限
1.cat aclrm.txt
u:liubei
g:shuguo
g:weiguo
2.setfacl -X acl.txt testdir/
删除默认权限
setfacl -k testdir
删除所有权限,清空acl结构
setfacl -b testdir
3.umask
mask 为权限的阀值,即权限上限。
ACL文件上的group权限是mask 值(自定义用户,自定义组,拥有组的最大 权限),而非传统的组权限。
mask只影响除所有者和other的之外的人和组的最大权限 Mask需要与用户的权限进行逻辑与运算后,
才能变成有限的 权限(Effective Permission) 用户或组的设置必须存在于mask权限设定范围内才会生效
例如:setfacl -m mask::rx file --set选项会把原有的ACL项都删除,用新的替代,需要注 意的是一定要包含UGO的设置,不能象-m一样只是添加ACL 就可以的。
以上是关于Linux--权限管理的主要内容,如果未能解决你的问题,请参考以下文章