设为首页 收藏本站
查看: 766|回复: 0

[经验分享] Linux权限管理详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-12-6 13:19:28 | 显示全部楼层 |阅读模式
1、Linux 的基本权限:(1)Linux的基本权限说明
-rw-r--r-- 1 root root 08-11 01:45 aa.txt
权限位是十位
第一位:代表文件类型
-   普通文件
d   目录文件
l   链接文件
b   块设备文件
c   字符设备文件
s   套接字
p   管道

其余九位
读 写 执行       读 写 执行      读 写 执行
r   w  x         r   w  x        r  w  x
4   2  1         4   2  1        4  2  1
文件所有者(u) 文件所属组(g) 其他用户(o)

读 r(4):允许查看文件内容;允许显示目录内的文件列表
写 w(2):允许修改文件内容;允许对目录内的文件进行添加、删除、移动
执行 x(1):允许文件文件执行;允许目录的切换

(2)文件归属所有者(属主):拥有该文件或目录的用户
所属组(属组):用户改文件或目录的组

(3)修改文件权限的命令及用法命令名称:chmod
命令英文原意:change the permissions mode of a file
命令所在路径:/bin/chmod
功能描述:修改文件的权限
例:
chmod u+x aa       给aa文件的所有者添加x权限
chmod g+w,o+w aa   给aa文件的所属组和其他人添加w权限
chmod u=rwx aa     给aa文件的所有者赋予rwx权限
chmod 644 aa       修改aa文件的权限为644,对应为rw-r--r—
chmod -R 777 aa     递归修改aa目录及其子目录和文件权限为777
-R 递归修改目录下子选项的权限
说明:对文件有写权限,只代表可以修改这个文件;要想删除文件,需要对文件所在目录有写权限,只要对目录有写权限,目录中的文件,就算是 root 创建的,普通用户一样能删
除。目录一般都同时有 r-x 权限,如果一个目录只有 r 却没有 x,你能用 ls 查看,却
不能 cd 进去!   

(4)文件或目录的所有者和所属组修改命令名称:chown
命令英文原意:change file ownership
命令所在路径:/bin/chown
功能描述:修改文件或目录的所有者、所属组
例:
chown user1 aa        将aa文件的所有者修改为user1用户
chown user1:user1 aa   将aa文件的所有者修改为user1用户并且所属组修改为user1组
chown :user1 aa       将aa文件的所属组修改为user1组
chown -R  [属主:属组]  目录   递归修改目录和文件的所有者和所属组


命令名称:chgrp
命令英文原意:change file group ownership
命令所在路径:/bin/chgrp
功能描述:改变文件或目录的所属组
语法:chgrp 用户组文件或目录
例:chgrp adm file1     改变文件file1的所属组为adm


命令名称:umask
功能描述:显示和设置默认掩码值
777
-022
--------------
755
就是创建文件的默认权限
总结:Linux的安全机制,不给新建文件x权限。

2、ACL 权限(1)ACL权限的介绍Linux基本的权限控制仅可以对所属用户、所属组、其他用户进行的权限控制,而不能精确地控制每个用户的权限。ACL规则就是用来解决这个问题的。使用ACL规则,我们可以针对单一账户设置文件及目录的访问权限。在centos7中xfs文件系统中默认开启了ACL权限
(2)ACL 权限的使用
格式:setfacl  [选项] {-m|-x} {u:username:rwx} 文件或目录
选项:
-m :添加 ACL 权限
-x :删除某项 ACL 权限
-b :清空所有 ACL 权限
-R :实现目录上 ACL 权限的递归
d  :设置默认 ACL 权限

例 1:添加 ACL 权限
setfacl –m u:u1:rwx a.txt      添加 u1 用户对 a.txt 文件的 rwx 权限

例 2:删除某项 ACL 权限
setfacl -x u:u1 a.txt      删除 u1 用户在 a.txt 文件上的 ACL 权限

例 3:清空所有 ACL 权限
setfacl -b a.txt      清空在 a.txt 文件上的所有 ACL 权限

例 4:实现目录上 ACL 权限的递归(目录)
setfacl -R –m u:u2:rwx aa      添加 u1 用户对 aa 目录以及目录内子选项的 rwx 权限

例 5:设置默认 ACL 权限(目录)
空目录:
setfacl -m d:u:u3:rwx bb
添加 u3 用户对目录 bb 的 rwx 权限,并且在 bb 目录里新建的文件 u3用户都有 rwx 权限
非空目录:
setfacl –m d:u:u3:rwx bb
setfacl -R –m u:u3:rwx  bb
第一条设置默认权限,第二条递归设置 ACL 权限

注:前五个例子使用的 u 均可换成 g,然后实现特殊组对文件的 ACL 权限

例 6:设置最大有效权限 mask(目录)
setfacl -m m:rx cc    为 cc 目录添加默认最大权限为 rx,其他 ACL 权限不得超出此权限


3、sudo 授权(1)sudo授权的介绍在企业实践中,不是每一个系统管理员都能用 root 来管理服务器,所以需要给普通用户赋予一部分超级管理员权限。然后普通用户在使用超级管理员的命令时前面加上sudo 命令就可以正常使用超级管理员的命令了。/sbin和/usr/sbin里面的命令只有超级管理员才能执行,这个时候,就需要root来使用sudo授权普通用户使用部分超级用户才能使用的命令了。

(2)sudo授权的系统验证步骤
1. 当普通用户执行/sbin 或/usr/sbin 下的命令时,系统会查询/etc/sudoers 文件中是否有 root 给的授权
2. 当查询普通用户已拥有授权后,需要输入普通用户的密码来确认用户身份
3. 若密码输入成功后,则执行对应已经授权的命令

(3)sudo授权的方法
给普通用户授权使用超级用户命令方法一般是使用visudo命令来打开/etc/sudoers这个配置文件来给普通用户授权,普通用户使用这些被授权的超级用户命令时,只需在命令的前面添加上sudo加空格即可执行这些授权的超级用户命令。

注意:/etc/sudoers 文件内有固定语法结构,使用其它文档编辑器可能会造成配置文件出现错误,所以必须使用 visudo 命令打开该配置文件

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL
a1      192.168.115.0/24=(ALL)     ALL

上面的元素介绍:
root或a1:系统的哪个用户能使用 sudo 命令,即被授权者。也可以是组,组要在前面加%表示

ALL或某个网段:可以被管理的服务器的网络地址,写自己或 ALL 代表任何来源地址都可以管理本台服务器,192.168.115.0/24代表这个网段的服务器可以执行sudo授权的命令。

(ALL)或某个权限较大的用户:是以谁的身份来执行,ALL:ALL 就代表 root 可以任何人的身份来执行命令。

ALL或命令的绝对路径:可以使用什么命令,多条命令用逗号隔开(必须写绝对路径)

例 1:给 admin 用户赋予 root 所有命令权限
admin ALL=(ALL) ALL

例 2:授权 zhangsan 用户可以重启服务器
zhangsan ALL=(root) /sbin/shutdown -r now

例 3:授权 web 用户可以管理 IP:192.168.110.39 的 web 服务器
NO.1:可以使用 Apache 管理脚本
web  192.168.110.39=(root) /etc/rc.d/init.d/httpd reload,/etc/rc.d/init.d/httpd configtest
reload 重新加载配置文件使之生效;configtest 检查配置文件是否有语法错误。

NO.2:可以修改 Apache 的配置文件
web  192.168.110.39=(root)  /bin/vi  /etc/httpd/conf/httpd.conf
sudo 不仅仅能授权超级管理员的命令,还能授权普通命令以及详细选项和参数。

NO.3:可以更新网页文件
设置合理权限即可(w),可以通过给/var/www/html目录设置ACL权限,让 web 用户对/var/www/html 有写权限即可。

例 4:授权 add 用户可添加普通用户
add  ALL=/usr/sbin/useradd        让 add 用户可以添加普通用户
add  ALL=/usr/bin/passwd [A-Za-z]* , !/usr/bin/passwd“”,!/usr/bin/passwd root
让 add 用户可以给新添加用户修改密码,不允许修改 root 用户的密码


4、文件特殊权限(1)SetUID 权限1、当一个具有执行权限的文件设置 SetUID 权限后,用户执行这个文件时将以文件所有者的身份执行
特点:

2、只有可以执行的二进制程序才能设定 SUID 权限

3、命令执行者要对该程序拥有 x(执行)权限

4、命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主)

5、SetUID 权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效

例:普通用户使用/usr/bin/passwd命令修改自己的密码
普通用户使用/usr/bin/passwd 的那一瞬间临时调用了 root 的身份,进行对/etc/passwd 和/etc/shadow 进行了修改,当信息修改完成后,立即释放 root 身份变回了自己普通用户的身份。

注意:如果取消了/usr/bin/passwd 的 SetUID 权限,则普通用户无法修改密码

危险的 SetUID:如果给/usr/bin/vim这个命令设置 SetUID 权限后,普通用户即可使用/usr/bin/vim命令来修改/etc/passwd等系统文件,使普通用户成为超级用户。

(2) SetGID 权限(文件和目录)1、针对文件的作用:
(1)只有可执行的二进制程序才能设置 SGID 权限
(2)命令执行者要对该程序拥有 x(执行)权限
(3)命令执行在执行程序的时候,组身份升级为该程序文件的属组
(4)SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效

2、针对目录的作用:
(1)普通用户必须对此目录拥有 r 和 x 权限,才能进入此目录
(2)普通用户在此目录中的有效组会变成此目录的属组
(3)普通用户对此目录拥有 w 权限时,新建的文件的默认属组是这个目录的属组

例:创建long目录,并给long目录SetGID权限,让普通用户有写权限。
[iyunv@localhost ~]# mkdir /long            
[iyunv@localhost ~]# chmod g+s /long/
[iyunv@localhost ~]# chmod 777 /long/
[iyunv@localhost ~]# ls -ld /long/
drwxrwsrwx 2 root root 6 11月 29 15:56 /long/
[iyunv@localhost ~]# su - a1     切换到普通用户a1
[a1@localhost ~]$ cd /long/    让普通用户进入/long目录创建文件
[a1@localhost long]$ touch 1.txt
[a1@localhost long]$ ls -l
总用量 0
-rw-rw-r-- 1 a1 root 0 11月 29 16:04 1.txt
最后发现普通用户创建的1.txt文件的所属组不是a1,而是 root

(3)Sticky BIT 权限Sticky BIT 粘着位,也简称为 SBIT。SBIT 目前仅针对目录有效,它的作用如下:
1、粘着位目前只对目录有效,普通用户对该目录拥有 w 和 x 权限,即普通用户可以在此目录拥有写入权限

2、如果没有粘着位,因为普通用户拥有 w 权限,所以可以删除此目录下所有文件,包括其他用户建立的文件。一但赋予了粘着位,除了 root 可以删除所有文件,普通用户就算拥有 w 权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。

5、总结SetUID 权限,SetGID 权限,Sticky BIT 权限的设置(1)各种特殊权限所对应的权限数值
权限名称
对应的权限数值
SetUID
4
SetGID
2
Sticky   BIT
1
读(r)
4
写(w)
2
执行(x)
1
注意:权限值由4位数字组成,从左往右第一位是特殊权限值,第二位是文件或目录所有者的权限值,第三位是文件或目录的所属组的权限值,第四位是文件或目录其他人的权限值。

(2)SetUID 权限,SetGID 权限,Sticky BIT 权限的设置上面知道了这些特殊权限所对应的权限值,那么我们就可以使用chmod来进行设置。
例1:给文件/long/1.txt设置SetUID权限
方法1:
[iyunv@localhost long]# chmod u+s 1.txt    设置SetUID权限
[iyunv@localhost long]# ls -l
总用量 0
-rwSrw-r-- 1 a1 root 0 11月 29 16:04 1.txt
[iyunv@localhost long]# chmod u-s 1.txt    取消SetUID 权限
[iyunv@localhost long]# ls -l
总用量 0
-rw-rw-r-- 1 a1 root 0 11月 29 16:04 1.txt

方法2:
[iyunv@localhost long]# chmod 4755 1.txt   使用权限值设置SetUID权限
[iyunv@localhost long]# ls -l
总用量 0
-rwsr-xr-x 1 a1 root 0 11月 29 16:04 1.txt
[iyunv@localhost long]# touch 2.txt
[iyunv@localhost long]# chmod 755 1.txt     使用权限值取消SetUID权限
[iyunv@localhost long]# ls -l
总用量 0
-rwxr-xr-x 1 a1   root 0 11月 29 16:04 1.txt


例2:给/long/2.txt设置SetGID 权限。
方法1:
[iyunv@localhost long]# chmod g+s 2.txt    设置SetGID 权限
[iyunv@localhost long]# ls -l
总用量 0
-rw-r-Sr-- 1 root root 0 12月  1 16:27 2.txt
[iyunv@localhost long]# chmod g-s 2.txt     取消SetGID 权限
[iyunv@localhost long]# ls -l
总用量 0
-rw-r--r-- 1 root root 0 12月  1 16:27 2.txt

方法2:
[iyunv@localhost long]# chmod 2744 2.txt     使用权限值设置SetGID 权限
[iyunv@localhost long]# ls -l
总用量 0
-rwxr-Sr-- 1 root root 0 12月  1 16:27 2.txt
[iyunv@localhost long]# chmod 744 2.txt      使用权限值取消SetGID 权限
[iyunv@localhost long]# ls -l
总用量 0
-rwxr--r-- 1 root root 0 12月  1 16:27 2.txt

例3:给/long目录设置Sticky BIT 权限
方法1:
[iyunv@localhost long]# chmod o+t /long/      设置Sticky BIT 权限
[iyunv@localhost long]# ls -ld /long/
drwxr-xr-t 2 root root 19 12月  1 16:35 /long/
[iyunv@localhost long]# chmod o-t /long/       取消Sticky BIT 权限
[iyunv@localhost long]# ls -ld /long/
drwxr-xr-x 2 root root 19 12月  1 16:35 /long/

方法2:
[iyunv@localhost long]# chmod 1755 /long/       使用权限值设置Sticky BIT 权限
[iyunv@localhost long]# ls -ld /long/
drwxr-xr-t 2 root root 19 12月  1 16:35 /long/
[iyunv@localhost long]# chmod 755 /long/       使用权限值取消Sticky BIT 权限
[iyunv@localhost long]# ls -ld /long/
drwxr-xr-x 2 root root 19 12月  1 16:35 /long/


6、文件系统属性设置(chattr可以限制root)格式:chattr [+-=] [选项] 文件或目录
选项:
i:如果对文件设置 i 属性,那么不允许对文件进行删除、改名,也不能
添加和修改数据;如果对目录设置 i 属性,那么只能修改目录下文件的
数据,但不允许建立和删除文件

a:如果对文件设置 a 属性,那么只能在文件中增加数据,但是不能删
除也不能修改数据;如果对目录设置 a 属性,那么只允许在目录中建立
和修改文件,但是不允许删除

e:Linux 中绝大多数的文件都默认拥有 e 属性。表示该文件是使用 ext
件系统进行存储的,而且不能使用“chattr -e”命令取消 e 属性
查看文件系统属性
格式:lsattr  选项  文件名
选项:
-a 显示所有文件和目录
-d 若目标是目录,仅列出目录本身属性


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421316-1-1.html 上篇帖子: CentOS6.5部署Cobbler服务器 下篇帖子: linux同步工具rsync​
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表