3.RedHat认证-Linux权限管理

3.RedHat认证-Linux权限管理

用户管理也是和权限相关的知识点

权限的作用

权限对于普通文件和目录文件作用是不一样的

权限对普通文本文件的作用

-rw-rw-r--. 2 kiosk kiosk 31943 May 29 2019 ClassPrep.txt
9列权限,前三列表示文件拥有者对该文件具有的权限,中间三列表示文件的所属组对该文件具有的权限,后三列表示其他人对该文件具有的权限
这三种人就分别是owner(拥有者),group(所属组),others(其他人)

一般来说(并不强行规定),owner的权限>group的权限>others的权限,注意一点,文件的owner不一定属于该文件的所属组。
权限列常见的内容有4个,分别是r,w,x,-。总共9列,分割成3个3列。分别表示对三类人的权限。
第一列要么是r,要么是-,如果是r,则表示该类人对该文件具有读(read)权限。
第二列要么是w,要么是-,如果是w,则表示该类人对该文件具有写(write)权限。
第三列要么是x,要么是-,如果是x,就表示该类人对该文件有执行execute(x)权限

-----------------------------------------------------------------------------
r=read读
w=write写
x=execute执行

普通文件和目录权限的区别

对于普通文件来说,r,w,x权限表达的意义是什么呢?

如果一个普通文件有r权限,就表示该文件的内容可以被查看到。

如果一个普通文件有w权限,就表示该文件的内容可以被修改(加内容,删内容,修改内容)

如果一个普通文件有x权限,就表示该文件可以当做脚本一样执行。


对于目录文件来说,r w x 权限表达的意义是什么呢?

如果一个目录文件有r权限,就表示该目录下的文件可以被查看属性(查看文件属性的命令ls)

如果一个目录文件有r权限,能否查看这个目录下的普通文件的内容(不一定)

一个普通文件能否查看它的内容和它所在的目录没有任何关系,而是和它自己是否具备r权限有关系。


如果一个目录文件有w权限,就表示可以在该目录下创建或删除或修改文件属性

如果一个目录文件有w权限,是否能修改这个目录下的普通文件的内容?(不一定)

一个普通文件能否修改它的内容和它自己是否具备w权限有关系,而和它是否在具备w权限的目录没有任何关系。


如果一个目录文件有x权限,就表示可以进入该目录,如果一个目录连x权限都没有,这个目录是无法进入的。

一个目录没有x权限,能不能在该目录下创建删除文件,或者查看文件属性?(可以)

如果一个目录没有执行权限,那么即使有r权限或者w权限,也表示该目录是一个问题目录。

针对一个文件设置权限

useradd hcj
useradd zk
你想理解一个文件的权限,你必须要知道,一个文件的权限和文件的owner和group息息相关。
如何修改文件的owner和group
[root@foundation0 zk]# touch women
[root@foundation0 zk]# ls -l
total 0
-rw-r--r--. 1 root root 0 Apr 15 21:03 women
[root@foundation0 zk]# chown hcj women
[root@foundation0 zk]# ls -l
total 0
-rw-r--r--. 1 hcj root 0 Apr 15 21:03 women
[root@foundation0 zk]# chgrp zk women
[root@foundation0 zk]# ls -l
total 0
-rw-r--r--. 1 hcj zk 0 Apr 15 21:03 women
[root@foundation0 zk]# chown zk:hcj women
[root@foundation0 zk]# ls -l
total 0
-rw-r--r--. 1 zk hcj 0 Apr 15 21:03 women
[root@foundation0 zk]# chown :zk women
[root@foundation0 zk]# ls -l
total 0
-rw-r--r--. 1 zk zk 0 Apr 15 21:03 women

使用chmod设置文件权限

chmod u/g/o
u=user (owner)
g=group
o=others
[root@foundation0 zk]# chmod u=rwx,g=rwx,o=rwx women
[root@foundation0 zk]# ls -l
total 0
-rwxrwxrwx. 1 zk hcj 0 Apr 15 21:03 women
表示将拥有人的权限设置为rwx,所属组的权限设置为rws,其他人的权限设置为rwx
-----------------------------------------------------------------------
[root@foundation0 zk]# chmod u-x,g-wx,o-rwx women
[root@foundation0 zk]# ls -l
total 0
-rw-r-----. 1 zk hcj 0 Apr 15 21:03 women
表示将文件的拥有人减去x权限,文件的所属组减去wx权限,文件的其他人减去rwx权限
-----------------------------------------------------------------------

重点

对于目录来说,只有以下三种权限有意义

---
r-x
rwx

Linux三种特殊权限

Linux的三种特殊权限,考试只考一种,实际在生产环境当中,用的并不是特别多
①SET UID
SET UID 应用于可执行的普通文件,当一个文件被设置SET UID特殊权限时,任何人一旦执行该文件,都会临时获得文件拥有人的权限。
[zk@foundation0 dir-test]$ ls -l /bin/passwd
-rwsr-xr-x. 1 root root 34512 Aug 13 2018 /bin/passwd
在文件拥有者的权限列的执行权限位置,如果该位置是s或者S,就表示该文件被设置了set UID特殊权限。
[root@foundation0 ~]# chmod u-s /bin/passwd
[root@foundation0 ~]# ls -l /bin/passwd
-rwxr-xr-x. 1 root root 34512 Aug 13 2018 /bin/passwd
[root@foundation0 ~]# chmod u+s /bin/passwd
[root@foundation0 ~]# ls -l /bin/passwd
-rwsr-xr-x. 1 root root 34512 Aug 13 2018 /bin/passwd

-----------------------------------------------------------------------------------------------
②SET GID(考试要考的)
SET GID特殊权限应用于目录文件,当一个目录被设置SET GID特殊权限时,任何用户在该目录下创建文件,文件的所属组都会变成被设置SET GID那个目录的所属组。
[zk@foundation0 dir-test]$ chmod g+s zk-dir1
[zk@foundation0 dir-test]$ ls -ld zk-dir1
drwxrwsrwx. 2 zk zk 23 Apr 15 23:07 zk-dir1
在文件所属组的权限列的执行权限位置,如果该位置是s或者S,就表示该文件被设置了set GID特殊权限。

------------------------------------------------------------------------------------------------------
③Sticky(粘置位)
针对有写权限的目录设置的特殊权限位,当一个有写权限的目录被设置了sticky特殊权限,那么任何人
在该目录下创建的文件就只有自己和root可以删除。该特殊权限位,限制了目录的写权限。
对于目录的写权限来说,该权限有点太大了,sticky就是限制目录写权限的。

[hcj@foundation0 tmp]$ ls -l /tmp/ -d
drwxrwxrwt. 17 root root 4096 Apr 15 23:19 /tmp/
如果其他人权限列的执行权限位置被设置为t或者T,就表示该文件被设置了stiky特殊权限。
[root@foundation0 zk]# chmod o-t /tmp/
[root@foundation0 zk]# ls -ld /tmp/
drwxrwxrwx. 17 root root 4096 Apr 15 23:21 /tmp/
[root@foundation0 zk]# chmod o+t /tmp/
[root@foundation0 zk]# ls -ld /tmp/
drwxrwxrwt. 17 root root 4096 Apr 15 23:21 /tmp/
[zk@foundation0 ~]$ touch /tmp/zk2
[hcj@foundation0 tmp]$ rm -rf zk2
rm: cannot remove 'zk2': Operation not permitted
[hcj@foundation0 tmp]$ ls -ld /tmp/
drwxrwxrwt. 17 root root 4096 Apr 15 23:23 /tmp/
[hcj@foundation0 tmp]$ ls -l /bin/passwd
-rwsr-xr-x. 1 root root 34512 Aug 13 2018 /bin/passwd
[hcj@foundation0 tmp]$ ls -ld /tmp/dir-test/zk-dir1
drwxrwsrwx. 2 zk zk 40 Apr 15 23:09 /tmp/dir-test/zk-dir1

-----------------------------------------------------------------------------------------
当设置特殊权限时,执行权限会被“覆盖”,如果是小写字母的特殊权限,那么执行权限就还在
如果是大写字母的特殊权限,那么执行权限就不在了

系统缺省权限设置umask(相当有用)

[root@localhost opt]# umask
0022
[zk@foundation0 ~]$ umask
0002
# 一般来说umask只看后3位

umask能帮助用户修改创建文件的默认权限。
创建目录的最终权限,就是目录777减去umask的后3位
创建普通文件的最终权限,就是666减去umask的后3位


umask可以修改的。
[root@foundation0 ~]# umask 0033
[root@foundation0 ~]# umask
0033
命令行的修改只是临时修改,只在当前shell有效。如果想永久修改
cat .bashrc
找到umask 修改即可

ACL权限控制

ACL(访问控制列表 Access Control List)

针对文件设置ACL权限
一个文件只有三类人的权限(user、group、other),但如果,第四个人,第五个人也要访问此文件,要单独设置权限,应该怎么办?
这里就要用到ACL权限控制
ACL就是对访问进行控制的一张表
文件的ACL设置可以通过ACL让指定的某个用户或用户组对某个文件设置特别的权限(后门)

[root@foundation0 test]# setfacl   # set(设置),f(文件file),acl(访问控制列表)

[root@foundation0 test]# setfacl -m u:hzz:--- file
上面命令的意义就是设置hzz用户对file没有任何权限。
-m参数表示modify(修改)
u表示针对用户设置特殊的权限
u后面的"hzz"就是那个设置特殊的特殊权限的用户
hzz后面的"---"就表示针对hzz用户设置的权限
最后面就是要设置的文件名
------------------------------------------------------------------------------------

-rwxrw-r--+ 1 tgb lxs 0 Apr 18 20:14 file
一旦针对文件设置了acl权限,那么该文件的9列权限后就会变成+,此时该文件表面上看到的权限全都
不一定生效。如果想看到该文件的真实权限,需要使用 getfacl 来查看

[hzz@foundation0 test]$ getfacl file
# file: file
# owner: tgb
# group: lxs
user::rwx
user:hzz:---
group::rwmask::rwother::r--


如何看一个文件的acl权限
#开头的有三列,分别表示的是文件的名字,文件的拥有人,文件的所属组。
#file:文件名
#owner:文件的拥有者
#gorup:文件的所属组
前三列之后,全部都是acl的表格内容。
表格的内容主要有两类,一类是user开头,一类是group开头,user开头表示该行是针对用户设置的
权限 group开头表示该行是针对用户组设置的权限

格式如下:
user:user1:rwx
user:user2:rw
group:group1:rwx
group:group2:rw
上面4行表示的意思是user1对该文件有rwx权限,user2对该文件有rw权限,group1组的用户对该
文件有rwx权限,group2组内的用户对该文件有rw权限。

我们都能清晰的看出来,“冒号”将3列分隔开了。
如果第一列是user,第二列没有值,就表示该行设置的是owner的权限。
如果第一列是group,第二列没有值,就表示该行设置的是group的权限
如果第一列是others,那么该行就表示对其他人的权限,others行总在最后一行。
-----------------------------------------------------------------------------------------
acl权限的添加,删除,修改,查看
[root@foundation0 test]# setfacl -x u:hzz file
[root@foundation0 test]# getfacl file
# file: file
# owner: tgb
# group: lxs
user::rwx
group::rwgroup:hzz:r--
mask::rwother::r--
[root@foundation0 test]# setfacl -x g:hzz file
[root@foundation0 test]# getfacl file
# file: file
# owner: tgb
# group: lxs
user::rwx
group::rwmask::rwother::r--
[root@foundation0 test]# ls -l
total 0
-rwxrw-r--+ 1 tgb lxs 0 Apr 18 20:14 file
[root@foundation0 test]# setfacl -b file
[root@foundation0 test]# ls -l
total 0
-rwxrw-r--. 1 tgb lxs 0 Apr 18 20:14 file



针对目录设置ACL权限
针对目录设置acl权限意义不大。
*** 针对目录设置acl权限,目的不在于访问控制,而是在目录创建文件的时候acl权限的继承。****
目录的权限只有3种组合才有意义
--- tgb
r-x xzz
rwx lxs
针对目录设置acl权限,意义不大。
因为普通的权限设置,只是针对3类人的,恰好,目录只有三种权限有意义,那么针对三类人分别设置这
3种权限就ok了。

权限委派(生产环境必备)

权限委派就是让普通用户能获得管理员权限的一种方式
我们在权限委派部分只会讲/etc/sudoers文件操作,不会将pam模块高级设计。
## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.
sudoers文件允许特定的用户在运行某些命令的时候能将权限提升到和root一样,甚至不需要使用root密码。

tgb ALL=(ALL) ALL
表示tgb用户能在任何地方运行任何命令
%tgb ALL=(ALL) ALL
表示tgb用户组内的用户能在任何地方运行任何命令
tgb ALL=/sbin/useradd
表示tgb用户只能运行useradd管理命令
%tgb ALL=(ALL) NOPASSWD: ALL
表示tgb用户组内的用户能在任何地方运行任何命令,且不需要输入tgb自己的密码
后面讲到ansible,所有的被管理主机都不能使用root权限操作,都需要使用普通用户提权到root来进行自动化操作。

post installation,都会修改/etc/sudoes
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值