教学环境介绍

1、预装虚拟机说明

• 每个学员机上有三台预先配置好的虚拟机
– server —— 作为练习用服务器
– desktop —— 作为练习用客户机
– cla***oom —— 提供网关/DNS/软件素材/DHCP等资源

开机时优先虚拟机cla***oom,所有的服务随机自启动

2、真机:使用rht-vmctl辅助工具

• 控制教学用虚拟机
– 格式:rht-vmctl 控制指令 虚拟机名
– 常用控制指令:
]$ rht-vmctl reset cla***oom #先重置资源服务器
]$ rht-vmctl reset server
]$ rht-vmctl reset desktop #再重置练习虚拟机

1.查看系统版本:RHEL7.0
[root@server0 ~]# cat /etc/redhat-release

2.查看主机名:server0.example.com
[root@server0 ~]# hostname

3.查看IP地址:172.25.0.11/24
[root@server0 ~]# ifconfig
[root@server0 ~]# ifconfig | head -2

3、 利用真机远程管理虚拟机

1.通信测试
[student@room pc01 ~]$ ping 172.25.0.11

[student@room pc01 ~]$ ping 172.25.0.10

2.Linux平台进行远程管理
[student@room pc01 ~]$ ssh 用户@对方的IP地址
[student@room pc01 ~]$ ssh root@172.25.0.11

[root@server0 ~]# hostname #查看主机名
[root@server0 ~]# ifconfig | head -2 #查看IP地址信息
[root@server0 ~]# exit
登出
Connection to 172.25.0.11 closed.
[student@room pc01 ~]$

补充:Ctrl + shift + t 新开一个终端
Ctrl + PgUp = Alt + 1
Ctrl + PgDn = Alt + 2

3.远程管理的选项 -X(大写):在远程管理时开启对方的图形程序
[root@server0 ~]# exit

[student@room pc01 ~]$ ssh -X root@172.25.0.11

[root@server0 ~]# firefox #运行火狐浏览器
[root@server0 ~]# firewall-config #防火墙的图形程序

常见的报错提示:
dconf:Linux桌面背景服务,与远程管理无关

[student@room pc01 ~]$ ssh -X root@172.25.0.10
(process:3045): dconf-WARNING : failed to commit changes to dconf: 无法连接:拒绝连接
[root@desktop0 ~]#

在真机定义永久的别名,修改配置文件 ~/.bashrc
[student@room pc01 ~]$ vim /home/student/.bashrc
#.bashrc
alias gos='ssh -X root@172.25.0.11'
alias god='ssh -X root@172.25.0.10'

在真机新开一个终端,才会生效

[student@room pc01 ~]$ gos
[student@room pc01 ~]$ god

4、权限和归属

基本权限

• 访问方式(权限)
– 读取:允许查看内容-read(r)
– 写入:允许修改内容-write(w)
– 可执行:允许运行和切换-execute(x)

针对文本文件:

 读取权限 r: cat  less  head  tail 
 写入权限 w: vim(可以保存)  >  >>
 可执行权限 x: Shell脚本   Python脚本

• 权限适用对象(归属)
– 所有者:拥有此文件/目录的用户-user(u)
– 所属组:拥有此文件/目录的组-group(g)
– 其他用户:除所有者、所属组以外的用户-other(o)

zhangsan zhangsan 1.txt

查看权限

• 使用 ls -l 命令
– ls -ld 文件或目录...

以-开头:文本文件
以d开头:目录
以l开头:快捷方式

[root@server0 ~]# ls -ld /etc
[root@server0 ~]# ls -l /etc/passwd
[root@server0 ~]# ls -l /etc/shadow

[root@server0 ~]# ls -ld /home/student
[root@server0 ~]# ls -ld /opt
[root@server0 ~]# ls -ld /tmp
[root@server0 ~]# ls -ld /root

设置基本权限

• 使用 chmod 命令
– chmod [-R] 归属关系+-=权限类别 文档...

[root@server0 ~]# mkdir /nsd01
[root@server0 ~]# ls -ld /nsd01

[root@server0 ~]# chmod g+w /nsd01 #所属组添加写入权限
[root@server0 ~]# ls -ld /nsd01

[root@server0 ~]# chmod g-w /nsd01 #所属组去掉写入权限
[root@server0 ~]# ls -ld /nsd01

[root@server0 ~]# chmod u-w /nsd01 #所有者去掉写入权限
[root@server0 ~]# ls -ld /nsd01

[root@server0 ~]# chmod u=rwx,g=rwx,o=--- /nsd01
[root@server0 ~]# ls -ld /nsd01

[root@server0 ~]# chmod ugo=rwx /nsd01
[root@server0 ~]# ls -ld /nsd01

[root@server0 ~]# chmod -R o=--- /opt/aa
[root@server0 ~]# ls -ld /opt/aa
[root@server0 ~]# ls -ld /opt/aa/bb/
[root@server0 ~]# ls -ld /opt/aa/bb/cc/

Linux判断用户具备的权限: 原则:匹配及停止
1.判断用户针对该数据所处身份 所有者>所属组>其他人
2.查看相应的权限位的表示

Permission denied:权限不足

1.所有人不能进入 1.杜老师可以进入 1.允许192.168.1.1
2.杜老师可以进入 2.所有人不能进入 2.拒绝所有

目录的 r 权限:能够 ls 浏览此目录内容
目录的 w 权限:能够执行 rm/mv/cp/mkdir/touch/等更改目录内容的操作
目录的 x 权限:能够 cd 切换到此目录

以root用户新建/nsddir目录,在此目录下新建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
[root@server0 ~]# ls -ld /nsd03

[root@server0 ~]# groupadd tarena #创建组
[root@server0 ~]# chown lisi:tarena /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用户新建/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

设置权限,使用户lisi可以读取/etc/shadow内容,您有几种办法?
1.利用其他人
[root@server0 ~]# chmod o+r /etc/shadow
2.利用所属组
[root@server0 ~]# chown :lisi /etc/shadow
[root@server0 ~]# chmod g+r /etc/shadow
3.利用所有者
[root@server0 ~]# chown lisi /etc/shadow
[root@server0 ~]# chmod u+r /etc/shadow
4.利用ACL
[root@server0 ~]# setfacl u:lisi:r /etc/shadow

5、附加权限(特殊权限)

Set GID

• 附加在属组的 x 位上
– 属组的权限标识会变为 s
– 适用于目录,Set GID可以使目录下新增的文档自动设置与父目录相同的属组

[root@server0 ~]# mkdir /nsd08
[root@server0 ~]# ls -ld /nsd08

[root@server0 ~]# chown :tarena /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权限
[root@server0 ~]# ls -ld /nsd08/

[root@server0 ~]# mkdir /nsd08/abc02
[root@server0 ~]# ls -ld /nsd08/abc02

[root@server0 ~]# touch /nsd08/1.txt
[root@server0 ~]# ls -l /nsd08/1.txt

chmod o=--- /nsd10
groupadd caiwu
chown :caiwu /nsd10
chmod g+s /nsd10

/nsd10/2019-10-8.txt
/nsd10/2019-10-9.txt
/nsd10/2019-10-10.txt
/nsd10/2019-10-11.txt
.......

6、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/ #设置t权限

7、acl访问控制列表

acl策略的作用
• 文档归属的局限性
– 任何人只属于三种角色:属主、属组、其他人
– 无法实现更精细的控制

• acl访问策略
– 能够对个别用户、个别组设置独立的权限

[root@server0 ~]# mkdir /nsd11
[root@server0 ~]# chmod o=--- /nsd11
[root@server0 ~]# ls -ld /nsd11
[root@server0 ~]# su - student
[student@server0 ~]$ cd /nsd11
-bash: cd: /nsd11: Permission denied
[student@server0 ~]$ exit
logout
[root@server0 ~]# setfacl -m u:student:rx /nsd11/
[root@server0 ~]# getfacl /nsd11/

[root@server0 ~]# su - student
[student@server0 ~]$ cd /nsd11
[student@server0 nsd11]$ pwd
[student@server0 nsd11]$ exit
logout
[root@server0 ~]#

设置acl访问控制策略

• 使用 getfacl、setfacl 命令
– getfacl 文档...
– setfacl [-R] -m u:用户名:权限类别 文档...
– setfacl [-R] -m g:组名:权限类别 文档...
– setfacl [-R] -x u:用户名 文档... #删除指定的ACL策略
– setfacl [-R] -b 文档... #删除所有的ACL策略

]# mkdir /nsd12
]# setfacl -m u:lisi:rwx /nsd12
]# setfacl -m u:harry:rwx /nsd12
]# setfacl -m u:dc:rx /nsd12
]# setfacl -m u:student:rwx /nsd12
]# setfacl -m u:gelin01:rwx /nsd12

]# getfacl /nsd12

]# setfacl -x u:student /nsd12 #删除student用户的ACL策略
]# getfacl /nsd12

]# setfacl -b /nsd12 #删除/nsd12所有的ACL策略
]# getfacl /nsd12