106权限和归属
使用虚拟机
教学环境介绍
使用虚拟机
• 每个学员机上有三台预先配置好的虚拟机
– server —— 作为练习用服务器
– desktop —— 作为练习用客户机
– classroom —— 提供网关/DNS/软件素材/dhcp服务器等资源

真机使用rht-vmctl辅助工具
• 控制教学用虚拟机
– 格式:rht-vmctl 控制指令 虚拟机名 #优先开机classroom
– 常用控制指令:
]# rht-vmctl reset classroom #先重置资源服务器
]# rht-vmctl reset server
]# rht-vmctl reset desktop #再重置答题虚拟机
虚拟机server:用户root的密码redhat
1.查看系统版本:RHEL 7.0 //cat /etc/redrat-release
2.查看eth0的IP地址:172.25.0.11/24 //ifconfig | head -2
3.查看系统的主机名:server0.example.com //hostname
虚拟机desktop:用户root的密码redhat
1.查看系统版本:RHEL 7.0
2.查看eth0的IP地址:172.25.0.10/24
3.查看系统的主机名:desktop0.example.com
##################################################
终端字体放大: Ctrl shift +
终端字体变小: Ctrl -
##################################################
真机进行远程管理虚拟机server与虚拟机desktop
远程管理的命令:ssh 用户名@对方的主机IP地址
1.真机测试通信
[student@room9pc01 ~]$ ping 172.25.0.11
[student@room9pc01 ~]$ ping 172.25.0.10
2.真机远程管理
[student@room9pc01 ~]$ ssh root@172.25.0.11
[student@room9pc01 ~]$ ssh root@172.25.0.10
ctrl + shift + t : 新开一个终端
3.远程管理时开启对方的图形程序: -X
[root@server0 ~]# exit #退出远程管理
登出
Connection to 172.25.0.11 closed.
[student@room9pc01 ~]$ ssh -X root@172.25.0.11 #大写X表示开启对方的图形程序
[root@server0 ~]# firefox #火狐浏览器
[root@server0 ~]# firewall-config #防火墙图形程序
远程管理常见提示: dconf服务 图形桌面服务
(process:30418): dconf-WARNING **: failed to commit changes to dconf: 无法连接:拒绝连接
# dconf-WARNING 不是远程失败,是启用这个服务失败。
[root@desktop0 ~]#
###################################################
真机:定义永久别名 ~/.bashrc(永久别名的配置文件)新开一个终端生效
#本题在student下home家目录下有一个隐藏的.bashrc文件,是永久别名的配置文件
[student@room9pc01 ~]$ vim /home/student/.bashrc
# .bashrc
alias gos='ssh -X root@172.25.0.11'
alias god='ssh -X root@172.25.0.10'

#################################################
权限和归属
基本权限
• 访问方式(权限)
– 读取:允许查看内容-read r #能够ls浏览此目录内容
– 写入:允许修改内容-write w #能够执行rm/mv/cp/mkdir/touch/...等等
– 可执行:允许运行和切换-execute x #能够cd切换到此目录
对于文本文件:
r:cat less head tail grep
w:vim能够保存 > >>
x:Shell脚本 Pyhton脚本
• 权限适用对象(归属)
– 所有者(属主):拥有此文件/目录的用户-user u
– 所属组(属组):拥有此文件/目录的组-group g
– 其他用户:除所有者、所属组以外的用户-other o
zhangsan zhangsan组 1.txt
查看权限
• 使用 ls -l 命令
– ls -ld 文件或目录...

{
(drwxr-xr-x. 4 root root 32 May 7 2014 /usr/src)
(权限位 硬连接数 属主 属组 大小 最后修改时间 文件\目录名称)
}
{
( d rwx r-x r-x.
(类型 User(属主) Group(属组) Other(其他人))
(d r w x r - x r - x )
}
类型:
以-开头为文本文件
以d开头为目录
以l开头为快捷方式
[root@server0 ~]# ls -ld /etc/
[root@server0 ~]# ls -l /etc/passwd
[root@server0 ~]# ls -ld /root
[root@server0 ~]# ls -ld /tmp
[root@server0 ~]# ls -l /etc/shadow
[root@server0 ~]# ls -ld /home/student
设置基本权限
• 使用 chmod 命令
– chmod [-R] 归属关系+-=权限类别 文档...
[-R]:递归设置权限
[root@server0 ~]# mkdir /nsd01 #创建目录nsd01
[root@server0 ~]# ls -ld /nsd01 #查看nsd01的权限信息
[root@server0 ~]# chmod u-w /nsd01 #修改所有者权限,去掉w写入
[root@server0 ~]# ls -ld /nsd01 #重新查看修改是否成功
[root@server0 ~]# chmod g+w /nsd01 #修改所属组的权限,增加w写入
[root@server0 ~]# ls -ld /nsd01 #重新查看修改是否成功
[root@server0 ~]# chmod o=--- /nsd01 #修改其他人的权限,将读取、写入、执行权限都取消
[root@server0 ~]# ls -ld /nsd01 #查看修改是否成功
[root@server0 ~]# chmod ugo=rwx /nsd01 #修改所有者、所属组、其他人的权限,将读取、写入、执行权限都拥有。
[root@server0 ~]# ls -ld /nsd01 #查看修改是否成功
[root@server0 ~]# chmod u=rx,g=rwx,o=--- /nsd01 #分别修改所有者(读取、执行)、所属组(读取、执行、写入)、其他人(无)的权限
[root@server0 ~]# ls -ld /nsd01 #查看修改是否成功
[root@server0 ~]# mkdir -p /opt/aa/bb/cc #递归创建目录/opt/aa/bb/cc
[root@server0 ~]# ls -ld /opt/aa/ #查看/opt/aa/ 权限信息
[root@server0 ~]# ls -ld /opt/aa/bb/ #查看/opt/aa/ 权限信息
[root@server0 ~]# ls -ld /opt/aa/bb/cc/ #查看 /opt/aa/bb/cc/ 权限信息
[root@server0 ~]# chmod -R o=--- /opt/aa #递归给与/opt/aa/ 下所有目录其他人的权限(无)
根目录不可以给其他人W权限,一旦给了,其他人可以随意改变根下内容。
目录必须要WX权限,才可以写入。文件只需要W就可以写入。
###################################################
Linux判断用户权限: 匹配及停止
1.判断用户针对该数据处于的角色 所有者>所属组>其他人 #
2.查看相应身份的权限位表示
Permission denied:权限不足
目录的 r 权限:能够 ls 浏览此目录内容
目录的 w 权限:能够执行 rm/mv/cp/mkdir/touch/等更改目录内容的操作
目录的 x 权限:能够 cd 切换到此目录
以root用户新建/nsddir目录,在此目录下新建readme.txt文件
useradd lisi
mkdir nsddir
cd /nsddir
touch readme.txt
并进一步完成下列操作
1)使用户lisi能够在此目录下创建子目录 切换用户 su - lisi
chmod o+w /nsddir/
2)使用户lisi不能够在此目录下创建子目录
chmod o-w /nsddir/
3)使用户lisi能够修改readme.txt文件内容
chmod o+w /nsddir/readme.txt
4)调整此目录的权限,使所有用户都不能cd进入此目录
chmod u-x,g-x,o-x /nsddir/
5)为此目录及其下所有文档设置权限 rwxr-x---
chmod -R u=rwx,g=rx,o=--- /nsddir/
-R:递归设置权限,目录下及目录下所有
####################################################
设置文档归属
• 使用 chown 命令
– chown [-R] 属主 文档...
– chown [-R] :属组 文档...
– chown [-R] 属主:属组 文档...
[root@server0 ~]# mkdir /nsd03 #创建目录nsd03
[root@server0 ~]# ls -ld /nsd03 #查看nsd03的权限信息 一级所有者、所属组
[root@server0 ~]# groupadd tedu #创建新组tedu
[root@server0 ~]# chown lisi:tedu /nsd03 #修改所有者与所属组信息,前提修改的所有者与所属组都存在。
[root@server0 ~]# ls -ld /nsd03 #再次查看,是否修改成功
[root@server0 ~]# chown student /nsd03 #只修改所有者
[root@server0 ~]# ls -ld /nsd03
[root@server0 ~]# chown :root /nsd03 #只修改所属组 :所属组
[root@server0 ~]# ls -ld /nsd03
(要注意,一个用户的身份改变,如原来是其他人,没有读写执行权限,修改为所有者,它的权限可能就会改变,所有者默认的权限为读写执行,
所有者未必比其他人的权限多,这要取决于root的心情(设置)。)
####################################################
利用root用户新建/nsd06目录,并进一步完成下列操作
1)将属主设为gelin01,属组设为tarena组
[root@server0 /]# useradd gelin01
[root@server0 /]# useradd gelin02
[root@server0 /]# groupadd tarena
[root@server0 /]# chown gelin01:tarena /nsd06
2)使用户gelin01对此目录具有rwx权限
除属主与属组之外的人,对此目录无任何权限
[root@server0 /]# chmod o=--- /nsd06
3)使用户gelin02能进入、查看此目录内容
[root@server0 /]# gpasswd -a gelin02 tarena
4)将gelin01加入tarena组, 将nsd06目录的权限设为rw-r-x---
再测试gelin01用户能否进入此目录
[root@server0 /]# gpasswd -a gelin01 tarena
[root@server0 /]# chmod u=rw,g=rx /nsd06
####################################################
设置/etc/shadow文件权限,使用户lisi具备读取权限,您有几种办法?
首先:
[root@server0 /]#ls -l /etc/shadow
----------. 1 root root 1314 8月 5 15:02
/etc/shadow
#这个文件所有权限都禁用,除了root能看,其他都不能看。
1.利用其他人进行权限设置
chmod o+r /etc/shadow
2.利用所属组进行权限设置
chown :lisi /etc/shadow
chmod g+r /etc/shadow
3.利用所有者进行权限设置
chown lisi /etc/shadow
chmod u+r /etc/shadow
4.利用acl访问控制列表
setfacl -m u:lisi:r /etc/shadow
###################################################
附加权限(特殊权限)
Set GID
• 附加在属组的 x 位上
– 属组的权限标识会变为 s #s表示set Gid,所有组执行权限位x被覆盖,以前所有者有x执行权限,查看是s,没有添加后是S,从新添加x,再次查看s。
– 适用于目录,Set GID可以可以让使用者具有文件属主的身份及部分权限。
[root@server0 ~]# mkdir /nsd08
[root@server0 ~]# ls -ld /nsd08
[root@server0 ~]# chown :tedu /nsd08 #修改所属组
[root@server0 ~]# ls -ld /nsd08
[root@server0 ~]# mkdir /nsd08/abc01
[root@server0 ~]# ls -ld /nsd08/abc01
[root@server0 ~]# chmod g+s /nsd08/ #添加Set GID特殊权限 如果所属组本身拥有执行权限X,直接赋予set GID,则所属组执行权限位x被覆盖,s是小写,如果先把所属组的执行权限X - ,取消掉,在赋予set GID, S便是大写。可以通过大小写S,判断是否有执行权限。
[root@server0 ~]# ls -ld /nsd08/
[root@server0 ~]# mkdir /nsd08/abc02
[root@server0 ~]# ls -ld /nsd08/abc02 #abc02所属组自动和父目录nsd08一致,必须父目录有Set GID特殊权限,必须是在拥有Set GID特殊权限以后新增的数据
#####################################################
/tarena/2022-8-5.txt
/tarena/2022-8-6.txt
/tarena/2022-8-7.txt #每日员工打卡的时间的信息文件
chmod o=--- /tarena #其他人都不能看目录数据
groupadd caiwu #老板要迟到扣钱,需要财务知道,能查看数据,创建一个财务组
chown :caiwu /tarena #将tarena目录的所属组修改为caiwu
chmod g+s /tarena #给所属组添加附加,表示新增数据也是属于这个组
[root@server0 ~]# ls -ld /nsd08
#显示nsd08所属组属于tedu
[root@server0 ~]# touch /nsd08/1.txt
[root@server0 ~]#ls -ld /nsd08/1.txt
#显示1.txt所属组也属于tedu,是有继承关系
使目录下新增的文档自动设置与父目录相同的属组。
[root@server0 ~]#hostname #查看计算机名,并非就是执行程序,而是一个需要解释器解释的调用“查看计算机名”的命令,相当于windows里面的快捷键。
[root@server0 ~]#ls /usr/bin/hostname #显示一个绿色可执行程序
###################################################
Set UID
• 附加在属主的 x 位上
– 属主的权限标识会变为 s
– 适用于可执行文件,Set UID可以让使用者具有文件属主的身份及部分权限
[root@server0 ~]# /usr/bin/mkdir /opt/xixi #mkdir 是创建目录的命令,以绝对路径直接使用它的程序是可以的。
[root@server0 ~]# ls /opt/
[root@server0 ~]# cp /usr/bin/mkdir /usr/bin/hahadir #拷贝这个创建程序,到另一个地方,并且改名为hahadir
[root@server0 ~]# /usr/bin/hahadir /opt/xixi02 #此改名程序也拥有创建目录的能力
[root@server0 ~]# ls /opt/
[root@server0 ~]# chmod u+s /usr/bin/hahadir
[root@server0 ~]# ls -l /usr/bin/hahadir #显示执行程序的颜色为红色,表示特殊性。
[root@server0 ~]# ls -l /usr/bin/mkdir
[root@server0 ~]# su - lisi
[lisi@server0 ~]$ /usr/bin/mkdir abc01
[lisi@server0 ~]$ ls -l
[lisi@server0 ~]$ /usr/bin/hahadir abc02 #使用者lisi在使用带有Set UID的程序,因为
(Set UID可以让使用者具有文件属主的身份及部分权限),在运行一瞬间,没有把它当成lisi,而是
root.即当使用者拥有Set UID,在使用瞬间,拥有root身份。
[lisi@server0 ~]$ ls -l
[lisi@server0 ~]$ exit
[lisi@server0 ~]$ /usr/bin/mkdir /nsd10 #lisi没有权限在根下创建
[lisi@server0 ~]$ /usr/bin/hahdir /nsd10 #可以创建
[lisi@server0 ~]$ ls / #能查到nsd10
####################################################
Sticky Bit
• 附加在其他人的 x 位上
– 其他人的权限标识会变为 t
– 适用于开放w权限的目录,可以阻止用户滥用w写入权限(禁止操作别人的文档)
[root@server0 ~]# mkdir /home/public
[root@server0 ~]# chmod ugo=rwx /home/public
[root@server0 ~]# ls -ld /home/public
[root@server0 ~]# chmod o+t /home/public/ #可以使得其他人没有操作别人的文档,只可以操作自己的文件
[root@server0 ~]# ls -ld /home/public #可以查看到有T权限
####################################################
案例2:配置附加权限
– 创建一个共用目录 /home/admins,要求如下:
[root@server0 ~]# mkdir /home/admins
[root@server0 ~]# groupadd adminuser
– 此目录的组所有权是 adminuser
[root@server0 ~]# chown :adminuser /home/admins/
[root@server0 ~]# ls -ld /home/admins/
– adminuser 组的成员对此目录有读写和执行的权限,
除此以外的其他所有用户没有任何权限(root用户能
够访问系统中的所有文件和目录)
[root@server0 ~]# chmod g=rwx,o=--- /home/admins/
[root@server0 ~]# ls -ld /home/admins/
– 在此目录中创建的文件,其组的所有权会自动设置为属于 adminuser 组
[root@server0 ~]# chmod g+s /home/admins/
[root@server0 ~]# ls -ld /home/admins/
#####################################################
acl访问控制列表
acl策略的作用:能够对个别用户、个别组设置独立的权限
• 文档归属的局限性
– 任何人只属于三种角色:属主、属组、其他人
– 无法实现更精细的控制
• acl访问策略
– 能够对个别用户、个别组设置独立的权限
– 大多数挂载的EXT3/4、XFS文件系统默认已支持
[root@server0 ~]# mkdir /nsd11
[root@server0 ~]# chmod o=--- /nsd11
[root@server0 ~]# ls -ld /nsd11
[root@server0 ~]# su - lisi
[lisi@server0 ~]$ cd /nsd11
-bash: cd: /nsd11: Permission denied
[lisi@server0 ~]$ exit
[root@server0 ~]# setfacl -m u:lisi:rx /nsd11 #为lisi设置ACL
[root@server0 ~]# getfacl /nsd11 #查看ACL策略
[root@server0 ~]# su - lisi
[lisi@server0 ~]$ cd /nsd11 #测试切换成功
[lisi@server0 nsd11]$ pwd
[lisi@server0 nsd11]$ exit
[root@server0 ~]#
####################################################
• 使用 getfacl、setfacl 命令
– getfacl 文档... #显示
– setfacl [-R] -m u:用户名:权限类别 文档... #(m:mend 修理)
– setfacl [-R] -m g:组名:权限类别 文档...
– setfacl [-R] -x u:用户名 文档... #删除指定的ACL
– setfacl [-R] -b 文档... #删除所有的ACL
[root@server0 ~]# mkdir /nsd12
[root@server0 ~]# setfacl -m u:lisi:rwx /nsd12 #u:代表lisi这个用户,而非所有者,lisi用户对nsd12拥有读写执行的权限
[root@server0 ~]# setfacl -m u:dc:rwx /nsd12
[root@server0 ~]# setfacl -m u:gelin01:rx /nsd12
[root@server0 ~]# setfacl -m u:gelin02:rwx /nsd12
[root@server0 ~]# getfacl /nsd12 #查看nsd12的用户权限
[root@server0 ~]# setfacl -x u:lisi /nsd12 #删除指定ACL
[root@server0 ~]# getfacl /nsd12
[root@server0 ~]# setfacl -x u:dc /nsd12 #删除指定ACL
[root@server0 ~]# getfacl /nsd12
[root@server0 ~]# setfacl -b /nsd12 #删除所有的ACL
[root@server0 ~]# getfacl /nsd12
####################################################
单独的拒绝
[root@server0 ~]# mkdir /nsd13
[root@server0 ~]# chmod ugo=rwx /nsd13
[root@server0 ~]# ls -ld /nsd13
[root@server0 ~]# setfacl -m u:lisi:--- /nsd13
[root@server0 ~]# getfacl /nsd13
###################################################
家目录的补救
]# useradd nsd20 #创建用户nsd20
]# grep nsd20 /etc/passwd
]# ls /home/
]# usermod -d /mnt/stu20 nsd20 #修改nsd20用户的家目录
]# grep nsd20 /etc/passwd
]# ls /mnt
]# cp -r /home/nsd20/ /mnt/stu20
]# ls -lA /mnt/stu20/
]# chown -R nsd20:nsd20 /mnt/stu20/ #递归修改归属关系
]# ls -lA /mnt/stu20/
###################################################
文件看权限可以 ls -l
目录看权限 ls -ld

浙公网安备 33010602011771号