Linux之权限

1.1,什么是权限?

权限是用来约束用户能对系统所作的操作。或者说权限是指某个特定的用户具有特定的系统资源的使用权力。

1.2权限的作用

linux是一个多用户系统,对于每一个用户来说,个人隐私的保护十分重要,所有需要进行权限划分。

  • 1,安全性:降低误删除风险,减少人为造成故障以及数据泄露等风险。
  • 2,数据隔离:不同的权限能看到,以及操作不同的数据。
  • 3,职责明确划分。

1.3 权限与用户的关系

  • linux系统中,权限是用户来定义用户能做什么,不能做什么。
  • 1,针对文件定义了三种身份,分别是属主owner、属组gruop、其他他人others
  • 2.每种身份又对应三种权限,读read、写write、执行execute

  • 当一个用户访问文件流程
  • 先判断用户是否为文件属主,如果是则按属主权限进行访问。否则判断用户是否为文件属组,如果是则按属组权限进行访问。如果访问者既不是文件属主也不是文件属组,则按其他人权限访问。

1.4 权限中rwx的含义

  • linux中权限是由rwxr-xr-x这9为字符来表示的。主要控制文件的属主User,属组Group,其他用户Other
字母 含义 二进制 八进制权限表示法
r-- 读取权限 100 4
-w- 写入权限 010 2
--x 执行权限 001 1
--- 没有权限 000 0

2,修改文件权限

  • 命令:chmod(change mode) ps:root用户可以修改任何人的文件权限,普通用户只能变更属于自己的文件权限

2.1,UGO方式

  • 给文件所有人添加读写执行权限
[root@Linux.net: ~]##chmod a=rwx file

  • 取消文件的所有权限
[root@Linux.net: ~]##chmod a=-rwx file

  • 属主读写执行,属组读写,其他人无权限
[root@Linux.net: ~]##chmod u=rwx,g=rw,0=- file
  • 属主属组读写执行,其他人读权限
[root@Linux.net: ~]##chmod ug=rwx,o=r file

2.2,NUM方式

  • 设定文件权限644,rw-r--r--
[root@Linux.net: ~]##chmod 644 file
  • 设定文件权限600,rw-------
[root@Linux.net: ~]##chmod 600 file
  • 设定目录权限为755,递归授权rwxr-xr-x
[root@Linux.net: ~]##chmod -R 755 dir

2.3权限对文件的影响
linux中去权限设定读文件和目录的影响是有区别的。

权限 对文件的影响 对目录的影响
r 浏览目录内容
w 增加,删除,修改
x 执行 进入目录

3,修改文件所属关系

  • 可以使用chown(change owner)、chagrp(change group)命令实现
  • chown 可以变更文件的属主和属组
  • chgrp仅能变更文件的属组

3.1 chown(change owner)

# 1,创建文件和目录
[root@Linux.net: ~]#mkdir /data
#2,修改所属主为`bin`
[root@Linux.net: ~]#mkdir bin /data

[root@Linux.net: ~]#chown -R root.root dir

3.2 chgrp(change group)

# 1,创建文件和目录
[root@Linux.net: ~]#mkdir /data2
#2,修改所属组为`adm`
[root@Linux.net: ~]#mkdir ,adm /data
#3,修改目录所属主为`root`,所属组为`root`,并进行递归授权
  • 进程能够以一种什么样的方式去访问一个文件,取决与这个进程所运行的身份对这个文件或者目录有什么样的权限。

4,文件特殊权限
linux中,每个普通用户都可以更改自己的密码,这是合理的设置;但是用户的密码信息存储在/etc/shadow文件中,也就是说,普通用户在更改自己的面膜时会跟新/etc/shadow文件的内容。
/etc/shadow文件是不允许任何人修改的,那为什么普通用户可以修改自己的权限呢?

[root@Linux.net: ~]#ll /etc/shadow
----------. 1 root root 1158 Jul 18 15:01 /etc/shadow

其实,普通用户可以修改自己的密码在于passwd命令本身,该命令拥有特殊权限SetUID也就是在属主的权限位的执行权限上是s。我们可以这样理解特殊权限SetUID:当一个执行文件设置SetUID后,用户在执行这个文件时将以文件所有者的身份来执行。

4,1,SUID配置语法

[root@Linux.net: ~]#chmod u+s /usr/bin/cat
[root@Linux.net: ~]#chmod 4755/usr/bin/cat

SUID作用总结

  • 1,让普通用户对可执行的二进制文件,临时拥有二级制文件的所属主权限
  • 2,如果设置的二进制文件没执行权限,那么SUID的权限就大S
  • 3,特殊权限suid仅对二进制可执行程序有效,其他文件或目录无效
  • 4,suid 相对危险,不建议对vim和rm进行suid设定操作

4.2特殊权限SGID

  • SGID:
  • 1,设置二进制可执行文件,命令在执行的过程中,会以命令的属组身份运行命令。
  • 2,设置在目录上,这时候在该目录下新建的文件/目录自动继承父目录属组

4.2.1 SGID配置语法

[root@Linux.net: ~]chmod g+s  /dir
[root@Linux.net: ~]chmod 2755  /dir

4.2.2SGID场景模拟

  • 需求:

系统用户有两个用户,分别位ex1,ex2,这两个用户都拥有example
1,这两个用户需要共同拥有/data/code目录的开发权;
2,互相之间能修改彼此的文件,且该目录不允许其他人进入查阅

[root@Linux.net: ~]#groupadd example
[root@Linux.net: ~]#useradd ex1 -G example
[root@Linux.net: ~]#useradd ex2 -G example


[root@Linux.net: ~]#mkdir /data/code
[root@Linux.net: ~]#chgrp project /data/code/
[root@Linux.net: ~]#chmod 770 /data/code/ #可省略
[root@Linux.net: ~]#chmod 2770 /data/code/

4.3特殊权限SBIT

  • 什么是SBIT

一旦目录被赋予了粘滞位sticky(SI TI KI),普通用户对该文件拥有w权限,也只能删除自己创建的文件,不可以删除别人创建的文件。root可以删除目录中的所有文件

4.3.1SBIT配置示例

  • 需求:默认情况下/mnt不是粘滞位,如何将此目录设置为粘滞位;
[root@Linux.net: ~]#chmod o+t /mnt
[root@Linux.net: ~]#chmod 1755 /mnt

4.3.1 SBIT作用总结

  • 1,让所有普通用户对该目录具有写入权限,并且能实现每个用户只能删自己的我文件

  • 2,粘滞位目录表现在othersx位,用t表示,如果没有执行权限则表示为T

  • 3,粘滞位目录的属主以及root用户有权限删除目录中的内容,其他用户无权限删除。

5,特殊属性

  • 什么是特殊属性:这类文件属性凌驾于rwx基础权限之上,是一种高级属性

5.1 特殊属性的作用

  • 1,创建一个文件,不允许被修改、移动、删除、包括root也不行--->适合/etc/passwd
  • 2,创建一个文件,仅允许往文件里追加数据,不允许修改、移动、删除、--->适合sudo审计日志。

5.2 特殊属性如何配置

  • linux系统通过chattr来实现特殊属性的配置
  • 命令格式: chattr[+-=] [选项] 文件或者目录名
  • a:可对文件进行追加内容;
  • i:锁定文件,不允许其他操作;

#配置`/etc/passwd`文件,不可改,不可追加,不可删除

[root@Linux.net: ~]# chattr +i /etc/passwd
[root@Linux.net: ~]#rm -f /etc/passwd
rm: cannot remove ‘/etc/passwd’: Operation not permitted

#配置`/var/log/secure`文件,只能追加写入日志,不允许手动修改,也不允许删除
[root@Linux.net: ~]#chattr +a /var/log/secure
[root@Linux.net: ~]#lsattr /var/log/secure
-----a---------- /var/log/secure

#追加试试
[root@Linux.net: ~]#echo "test" >> /var/log/secure
[root@Linux.net: ~]#echo "test" >> /var/log/secure
#删除,修改操作都不可以
[root@Linux.net: ~]#rm -f /var/log/secure
rm: cannot remove ‘/var/log/secure’: Operation not permitted

  • 5.3取消特殊属性
[root@Linux.net: ~]#chattr -i /etc/passwd
[root@Linux.net: ~]#chattr -a /var/log/secure

6,文件默认权限

  • 默认权限: 指用户在创建文件或目录时,默认分配给文件或目录的访问权限;
  • 默认权限有什么用

6.1系统默认权限配置文件

  • 为什么默认root用户的UMASK022

1,当用户登录系统时,会加载/etc/profile环境变量文件;
2.在该配置文件中有一条UMASK的判断语句;如果用户UID小于199,将UMASK初始化为022
如果用户UID大于199并且组名称和用户名称一致,那么就将UMASK初始化为002

  • UMASK判断语句如下:

[root@Linux.net: ~]vim /etc/profile


if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi


6.2 默认权限的计算公式

#1,假设umask值为:022(所有位为偶数)
#文件的起始权限值
 666 - 022 = 644
 777 - 022 = 755


#2.假设umask值为:045(其他用户组位为奇数)
#计算出来的权限。由于umask的最后一位数字是5,所以。在其他用户组位再加1.
666 - 045 = 621 + 1 = 622
777 - 045 = 732

#umask所有位全位偶数
#umask 044
#mkdir d044 目录权限为 777 -044 =733
#touch f044 文件权限为 666 - 044 = 622



#umask所有位全位奇数
#umask 023
#mkdir d023  目录权限为 777 -023 =754
#touch f023文件权限为 666 - 023 = 643+001 = 644


#umask部分位全位为偶数时

#umask 032
#mkdir d032  目录权限为 777 -023 =745
#touch f032  文件权限为 666 - 023 = 634+010 = 644

#umask所有位全位为奇数时

#umask 035
#mkdir d035  目录权限为 777 -035 =742
#touch f035 文件权限为 666 - 035 =631 + 011 =642

posted @ 2021-07-18 13:48  Carol-z  阅读(140)  评论(0编辑  收藏  举报