1、Linux权限管理
1.1 权限的介绍
。权限时用来约束用户能对系统所做的操作。
。进程能够以什么方式去访问一个文件目录,取决于进程所运行的用户对该文件有什么样的权限。
1.2 权限与用户的关系
linux中针对文件定义了三种身份,分别是属主owner、属组group、其他人others
每种身份也对应了三种权限,分别是读read写write、执行execute
当一个用户访问文件流程如下:
1、判断用户是否为文件属主,如果是则按照属主权限进行访问
2、判断用户是否为文件属组,如果是则按照属组权限进行访问
3、如果不是文件属主,也不是文件属组,则按照其他权限进行访问
1.4 权限中rwx的含义
字母 | 含义 | 二进制 | 八进制权限表示法 |
---|---|---|---|
r– | 读取权限 | 100 | 4 |
-w- | 写入权限 | 010 | 2 |
–x | 执行权限 | 001 | 1 |
— | 没有权限 | 000 | 0 |
2、修改文件权限
2.1 修改权限的意义
修改权限使用chmod命令
简单来说就是:赋予某个用户或组 --> 能够以何种方式(读写执行)–> 访问文件
root用户可以修改任何人的文件权限;普通用户只能变更自己的文件权限
2.2.1 UGO方式示例
给文件所有人添加执行权限
[root@localhost ~]# chmod a=rwx file
# a=all 所有(user+group+other)
取消文件的所有权限
[root@localhost ~]# ll file
----------. 1 root root 0 7月 15 00:53 file
# -(减号)表示减去权限
属主读写执行,属组读写,其他人无权限
[root@localhost ~]# chmod a=rwx,g=rw,o=- file
[root@localhost ~]# ll file
-rwxrw----. 1 root root 0 7月 15 00:53 file
#-表示没有权限
属主属组读写执行权限,其他人无权限
[root@localhost ~]# chmod ug=rwx,o=r file
[root@localhost ~]# ll file
-rwxrwxr--. 1 root root 0 7月 15 00:53 file
2.2.1 NUM方式(数字表示经常使用)
设定文件权限644
[root@localhost ~]# chmod 644 file
[root@localhost ~]# ll file
-rw-r--r--. 1 root root 0 7月 15 00:53 file
设定文件权限600
[root@localhost ~]# chmod 600 file
[root@localhost ~]# ll file
-rw-------. 1 root root 0 7月 15 00:53 file
设定目录权限755,递归授权-R
[root@localhost ~]# chmod -R 755 mulu
2.3 权限对文件的影响
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
读取权限(r) | 具有读取/阅读文件内容权限 | 具有浏览目录的权限 |
写入权限(w) | 具有新增、修改文件内容的权限 | 具有增加和删除目录内文件 |
执行权限(x) | 具有执行文件的权限 | 进入目录 |
一般我们使用rw和rx权限比较多一点
2.3.1 目录权限小结
。1、读取权限r:具有浏览目录及子目录,但同时也会提示权限拒绝
。2、写入权限(w):具有增加、删除或修改目录内文件名权限,需要x权限配合执行
。2.1)可以在目录内创建文件,删除文件(跟文件本身权限无关,删除是看上一级目录的权限)
。2.2)不可以进入目录、不能复制目录、不能移动目录
。3执行权限(x):具有执行文件的权限
。3.1)只能进入目录
。3.2)不能浏览、复制、移动、删除
2.3.2 文件与目录总结
。文件权限设定小结:
。文件r权限,只给用户查看,无其它操作
。文件rw权限,可以查看和编辑文件内容
。文件rx权限,允许查看和执行文件、但不能修改文件;文件rxw权限,能读、能写、能执行、不能删除;
。目录权限设定小结:
。目录 rx权限,允许浏览目录内文件以及子目录,不允许在该目录下创建文件
。目录rw权限,允许查看目录,能往目录写入文件,但无法进入目录(使用的情况太少)
。默认系统设定的安全权限:
。文件权限:644
。目录权限:755
2.3.3 修改文件所属关系
chown能变更文件的属主和属组
chgrp仅能变更文件的属组
2.5.1特殊权限SUID
我们的Linux系统中,每个普通的用户都可以修改自己的密码,但用户的密码存储在/etc/passwd文件中;
[root@localhost ~]# ll -d /etc/shadow
----------. 1 root root 2552 7月 15 22:47 /etc/shadow
#但是/etc/shadow文件不允许任何人更改,那么普通用户怎么修改自己的权限?
其实,普通用户可以修改自己的密码在于passwd命令本身,该命令拥有特殊权限SetUID也就是在属主的权限位的执行权限是s,那如何理解特殊权限SetUID:当一个执行文件设置SetUID后,用户在执行这个文件时将以文件所有者的身份来执行。
2.5.1.2SUID配置语法
[root@localhost ~]# chmod u+s /usr/bin/cat
[root@localhost ~]# chmod 4755 /usr/bin/cat
2.5.1.3 SUID作用总结
1、让普通用户对可执行的二进制文件,临时拥有二进制文件的所属主权限;
2、如果设置的二进制文件没有执行权限,那么suid的权限就是大S;
3、特殊权限suid仅对二进制文件可执行程序有效,其他文件或目录则无效;
。注意suid相对危险,不建议对vim或suid设定操作
2.5.2 特殊权限SGID
2.5.2.1 什么是SGID
SGID:
。设置二进制可执行文件,命令在执行的过程中,将会以命令的属组身份运行该命令;
。设置在目录上,这时候在该目录下新建的文件/目录自动继承父目录的属组
2.5.2.2 SGID配置语法
[root@localhost ~]# chmod g+s /dir
[root@localhost ~]# chmod 2755 /dir
2.5.2.3 SGID场景说明
2.5.3 特殊文件SBIT
一旦文件被赋予了粘滞(zhi)位,除了root用户可以删除目录中的所有文件,普通用户对该目录就算拥有w权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件。
2.5.3.3 配置SBIT示例
[root@localhost ~]# chmod 1755 /tmp
[root@localhost ~]# chmod o+t /tmp
2.5.3.3 SBIT使用场景
2.5.3.4 SBIT作用总结
1、让所有普通用户对该用户具有写入权限,并且能实现每个用户只能删自己的文件;
2、粘滞位目录表现在other的x位上,如果没有执行权限则显示T;
3、粘滞位目录的属主以及root用户有权删除目录中的内容,其他用户无权限删除
2.6 文件特殊属性
这种属性凌驾于rwx基础权限之上,是一种高级属性 [ ls -l 不可见 ],使用lsattr查看
2.6.1 特殊属性的作用
1、创建一个文件。不允许被修改、移动、删除,包括root用户,适合——》/etc/passwd
2、创建一个文件,仅允许往文件里追加数据,不允许修改,移动,删除,———》适合sudo审核日志
2.6.2 特殊权限如何配置
Linux系统通过chattr来实现特殊属性的配置
命令格式:chattr [±=]【选项】文件或目录名
a可对文件进行追加内容
i锁定文件。不允许其他操作。
6 、文件默认权限
- 默认权限是指用户载创建文件或目录时,默认分配的访问权限。
6.2默认权限的由来
- 背景
- 1、用户创建一个文件的默认访问权限为
rw-rw-rw-
(八进制666) - 2、用户创建一个目录的默认访问权限为:
rwxrwxrwx
(八进制777)
那么为什么创建出来的文件权限是644
,目录权限是755
,而不是666,777呢?
- 1、用户创建一个文件的默认访问权限为
- 因为系统创建文件 或目录受
umask
控制,默认属性要减去umask
的数值,系统默认的umask
值为022。 - 系统的
/etc/profile
有一条umask
的判断语句。
vim /etc/profile
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
if [ -r "$i" ]; then
if [ "${-#*i}" != "$-" ]; then
. "$i"
else
. "$i" >/dev/null
fi
fi
done
6.3 默认权限的计算公式
只针对文件,不针对目录,减去的权限为奇数就默认加一
#umask部分位为奇数时
#umask 023
#mkdir 新建的目录的权限为 777-023=754
#touch 新建的文件权限为 666-023=643 +001=644
#umask的值所有位为奇数时
#umask 035
#mkdir 新建的目录的权限为 777-035=742
#touch 新建的文件权限为 666-035=631 + 011 = 642