目录
第六天
6.1 文件权限
文件的权限针对三类对象进行定义
owner 属主,缩写u
group 属组,缩写g
other 其他,缩写o
每个文件针对每类访问者定义了三种主要权限
r:Read 读
w:Write 写
x:eXecute 执行
另 X:针对目录加执行权限,文件不加执行权限(因文件具备执行权限有安全隐患)
注意:root账户不受文件权限的读写限制,执行权限受限制
对于文件和目录来说,r,w,x有着不同的作用和含义:
6.2 设置文件和目录的一般权限
1.修改文件或目录的权限—chmod(change mode)命令
命令格式 1:chmod [-选项] [ugoa] [+-=] [rwx] 文件或目录...
命令格式2:chmod [-选项] nnn 文件或目录...
其中:
ugoa——表示权限设置所针对的用户类别,可以是其中字母中的一个或组合,u(user)表示文件或目录的属 主(所有者);g(group)表示属组内的用户;o(others)表示其他任何用户;a(all)表示所有用户(即u+g+o)。
+|-|= ——表示设置权限的操作动作,+代表添加某个权限;-代表取消某个权限;=表示只赋予给定的权限,并 取消原有的权限。
rwx——用字符形式表示的所设置的权限,可以是其中字母中的一个或组合。
nnn——用三位八进制数字表示的所设置的权限。
常用的选项有: -R——递归修改指定目录下所有文件、子目录的权限。
权限值的表示方法1——使用3位的八进制数表示:
权限值的表示方法2——使用字符串表示
命令格式 :chmod [-R] {[ugoa][+-=][rwxst]} 文件名或目录名>
用户对象+|-|=权限符
用户对象
u——拥有者 g——拥有者所属的用户组
o——其他用户 a——所有的
+—增加某项权限 - —去掉某项权限
=—赋予某项权限。
权限符——r、w、x、s
若通过r、w、x、s表示方式来更改权限,则只需在chmod命令中表达出权限需要改变的部分即可,该方 法可视为是相对修改法。
2.修改文件或目录的属主和属组—chown(change owner)命令
(1) 修改文件或目录的拥有者
命令格式 :chown [-选项] 新属主[:[新属组]] 被改变归属的文件或目录
-R——可递归设置指定目录下的全部文件(包括子目录和子目录中的文件)的所属关系。
用空格分隔列表中多个文件名或目录名
(2)修改文件或目录的属组
命令格式:chown [-选项] :新属组 被改变归属的文件或目录
或者使用命令:chgrp [-选项] 新属组 被改变归属的文件或目录
6.3 文件和目录的特殊权限
在Linux系统中,用户对文件或目录的访问权限,除了r(读取)、w(写入)、x(执行)三种一般权限外,还有SET UID(SUID)、SET GID(SGID)、Sticky Bit(粘滞位)三种特殊权限,用于对文件或目录进行更加灵活方便的访 问控制。
(1)SET UID(SUID)
(2)SET GID(SGID)
(3)Sticky Bit(SBit,粘滞位)
SUID 权限的含义:
是为了让一般用户在执行某些程序的时候, 在程序的运行期间, 暂时获得该程序拥有者的权限。
分析:
student 要更改自己的密码:passwd
分祈:
■ student 在执行 passwd 修改自己的密码时, 其修改的密码, 最终是需要保存到 /etc/shadow这个文件中,而这个文件的权限是 ---------,它的拥有者是 root ,也只有 root 可以“ 强制” 存储,其他 用户连看都不行
■ 可偏偏 student 去执行 passwd (/usr/bin/passwd) ,却可以更新自己的密码。
■ 这 就 是 说 /etc/shadow,student 这个普通用户的身份可以去访问文件, 怎么可能? 明明
/etc/shadow 没 有student 可访问的权限。
这就是因为有 S 权限的存在。
当 S 权限在拥有者的权限位上时, 即如-rwsr-xr-x这样时, 称为 SUID。
SUID 即 Set UID , UID 指的是拥有者的的 ID, 而这个程序 (/usr/bin/passwd) 的拥有者(root) 。
注意:suid仅对二进制文件有效。
6.3.1设置修改文件的扩展属性
1.设置文件的扩展属性
命令格式 :chattr [ -RV ] [+-=acdijsuADS] 文件或目录名
-R --递归设置指定目录及其目录下的所有文件和子目录的属性;
-V --详细显示目录和文件的属性设置情况。
+--增加某项属性;
--取消某项属性;
= --设置文件或目录只具有哪些属性;
a --只允许向文件追加数据,不允许任何进程覆盖重写文件的内容。
A --设置不允许系统更新文件的最后访问时间
i --不可修改属性。具有该属性的文件不能被删除、更名或修改其内容。
c --压缩属性,写入或读取时,系统会自动进行压缩或解压缩。
s --安全删除属性。即在删除一个文件时,会使用0填充原文件所在的存贮区,以使恢复工具无法 恢复出文件的内容。
u --可恢复性的删除。对于具有该属性的文件,在删除时,系统会保留其数据块以便以后能恢复 该文件的内容
2.查看文件的扩展属性
命令格式 :lsattr [-adR] 文件名或目录名
-a --列出目录中的所有文件(包括隐藏文件)。
-d --以与文件相同的方式列出目录的扩展属性。
-R --以递归的方式列出目录的属性及其内容。
6.4 进程掩码 mask umask
文件权限管理: 进程umask
进程 新建文件、目录的默认权限会受到umask的影响,umask表示要减掉的权限
==shell (vim,touch) =umask> 新文件或目录权限
vsftpd =umask> 新文件或目录权限
samba =umask> 新文件或目录权限
useradd =umask> 用户HOME==
在shell进程中创建文件
[root@localhost ~]# umask //查看当前用户的umask权限
0022
[root@localhost ~]# touch file800
[root@localhost ~]# mkdir dir800
[root@localhost ~]# ll -d dir800 file800
drwxr-xr-x. 2 root root 4096 3月 11 19:40 dir800
-rw-r--r--. 1 root root 0 3月 11 19:40 file800
6.5 什么是 ACL 权限?
我们给指定的用户指定目录分配指定的权限,也就是 ACL 权限分配。
6.6 设定 ACL 权限
1) ACL权限管理命令
命令如下:
[root@localhost ~]# getfacle 文件名
#查看ACL权限
[root@localhost ~]# setfacl 选项 文件名
#设定ACL权限
选项:
-m:设定 ACL 权限。如果是给予用户 ACL 权限,则使用"u:用户名:权限"格式赋予;如果是给予 组 ACL 权限,则使用"g:组名:权限" 格式赋予;
-x:删除指定的 ACL 权限;
-b:删除所有的 ACL 权限;
-d:设定默认 ACL 权限。只对目录生效,指目录中新建立的文件拥有此默认权限;
-k:删除默认 ACL 权限;
-R:递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效;
2) 给用户和用户组添加ACL权限
①、给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名
②、给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名
注意:我们给用户或用户组设定 ACL 权限其实并不是真正我们设定的权限,是与 mask 的权限“相与”之 后的权限才是用户的真正权限,一般默认mask权限都是rwx,与我们所设定的权限相与就是我们设定的权限。
3)最大有效权限 mask
我们给用户或用户组设定 ACL 权限其实并不是真正我们设定的权限,是与 mask 的权限“相与”之后的权限 才是用户的真正权限,一般默认mask权限都是rwx,与我们所设定的权限相与就是我们设定的权限
setfacl -m m:权限 文件名
4)删除acl权限
①、删除指定用户的 ACL 权限
setfacl -x u:用户名 文件名
②、删除指定用户组的 ACL 权限
setfacl -x g:组名 文件名
③、删除文件的所有 ACL 权限
setfacl -b 文件名
5)递归 ACL 权限
通过加上选项 -R 递归设定文件的 ACL 权限,所有的子目录和子文件也会拥有相同的 ACL 权限
setfacl -m u:用户名:权限 -R 文件名
6)默认 ACL 权限
如果给父目录设定了默认的 ACL 权限,那么父目录中所有新建的子文件会继承父目录的ACL权限
setfacl -m d:u:用户名:权限 文件名
6.7nmcli使用方法
nmcli使用方法非常类似linux ip命令、cisco交换机命令,并且支持tab补全(详见本文最后的Tips),也 可在命令最后通过-h、--help、help查看帮助。在nmcli中有2个命令最为常用:
➡ nmcli connection
译作连接,可理解为配置文件,相当于ifcfg-ethX。可以简写为nmcli c
➡ nmcli device
译作设备,可理解为实际存在的网卡(包括物理网卡和虚拟网卡)。可以简写为nmcli d
在NM里,有2个维度:连接(connection)和设备(device),这是多对一的关系。
想给某个网卡配ip,首先NM要能纳管这个网卡。设备里存在的网卡(即 nmcli d 可以看到的),就是NM纳管的。接 着,可以为一个设备配置多个连接(即 nmcli c 可以看到的),每个连接可以理解为一个ifcfg配置文件。同一时刻,一个设备只能有一个连接活跃。可以通过 nmcli c up 切换连接
connection有2种状态:
▷ 活跃(带颜色字体):表示当前该connection生效
▷ 非活跃(正常字体):表示当前该connection不生效
device有4种常见状态:
▷ connected:已被NM纳管,并且当前有活跃的connection
▷ disconnected:已被NM纳管,但是当前没有活跃的connection
▷ unmanaged:未被NM纳管
▷ unavailable:不可用,NM无法纳管,通常出现于网卡link为down的时候
nmcli常用命令一览:
# 查看ip(类似于ifconfig、ip addr)
nmcli
# 创建connection,配置静态ip(等同于配置ifcfg,其中BOOTPROTO=none,并ifup启动)
nmcli c add type ethernet con-name ethX ifname ethX ipv4.addr 192.168.1.100/24
ipv4.gateway 192.168.1.1 ipv4.method manual
# 创建connection,配置动态ip(等同于配置ifcfg,其中BOOTPROTO=dhcp,并ifup启动)
nmcli c add type ethernet con-name ethX ifname ethX ipv4.method auto
# 修改ip(非交互式)
nmcli c modify ethX ipv4.addr '192.168.1.200/24'
nmcli c up ethX
# 修改ip(交互式)
nmcli c edit ethX
nmcli> goto ipv4.addresses
nmcli ipv4.addresses> change
Edit 'addresses' value: 192.168.1.200/24
Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes
nmcli ipv4> save nmcli ipv4> activate nmcli ipv4> quit
# 启用connection(相当于ifup)
nmcli c up ethX
# 停止connection(相当于ifdown)
nmcli c down
# 删除connection(类似于ifdown并删除ifcfg)
nmcli c delete ethX
# 查看connection列表
nmcli c show
# 查看connection详细信息
nmcli c show ethX
6.8 配置网络
网络接口是指网络中的计算机或网络设备与其他设备实现通讯的进出口。这里,主要是指计算机的网络接口即网卡设备。
从RHEL7开始引入了一种新的“一致网络设备命名”的方式为网络接口命名,该方式可以根据固件、设备拓扑、设备类型和位置信息分配固定的名字。
网络接口的名称的前两个字符为网络类型符号。如:
en——示以太网(Ethernet)、wl表示无线局域网(wlan)、ww表示无线广域网(wwan);
接下来的字符根据 设备类型或位置选择,如:
o——表示内置(onboard)于主板上的集成设备(即集成网卡)及索引号;
s——表示是插在可以热拔插的插槽上的独立设备及索引号;
x——表示基于MAC地址命名的设备;
p——表示PCI插槽的物理位置及编号。
网络连接则是为网络接口实施配置的设置集合。在同一个网络接口上,可以有多套不同的设置方案,即一个网络接口可以有多个网络连接,但同一时间只能有一个网络连接处于活动状态。
在rhel8上,有3种方法进行网络配置
▷ 1. 手工配置ifcfg,通过NM来生效
▷ 2. 通过NM自带工具配ip,比如nmcli
▷ 3. 手工配置ifcfg,通过传统network.service来生效
方法1:使用nmtui配置
[root@kongd ~]# nmcli c reload
[root@kongd ~]# nmcli c up ens160
方法2:使用nmcli设置
[root@kongd ~]# nmcli c mo ens160 ipv4.method manual ipv4.addresses 192.168.150.200/24 ipv4.gateway 192.168.150.2 ipv4.dns 223.5.5.5 autoconnect yes
[root@kongd ~]# nmcli c reload
[root@kongd ~]# nmcli c up ens160
方法3:修改配置文件
[root@kongd ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.150.200
PREFIX=24
GATEWAY=192.168.150.2
DNS1=223.5.5.5 [root@kongd ~]# nmcli c reload
[root@kongd ~]# nmcli c up ens160
方法4:cockpit配置示意图
[root@kongd ~]# systemctl start cockpit.service
[root@kongd ~]# firewall-cmd --permanent --add-service=cockpit
[root@kongd ~]# firewall-cmd --reload
1.使用ip命令配置临时生效的网络连接
2.测试网络的连通性
(1)使用ping命令测试网络的连通性
命令一般格式为:
ping [选项] 目标主机名或IP地址>
常用选项:
-c 数字——用于设定本命令发出的ICMP消息包的数量,若无此选项,则会无限次发送消息包直到用户按下 【Ctrl+C】组合键才终止命令。
-s 字节数——设置ping命令发出的消息包的大小,默认发送的测试数据大小为56字节;自动添加8字节的
ICMP协议头后,显示的是64字节;再添加20字节的IP协议头,则显示的为84字节。最大设置值为65507B。
-i 时间间隔量——设定前后两次发送ICMP消息包之间的时间间隔,无此选项时,默认时间间隔为1秒。为了 保障本机和目标主机的安全,一般不要小于0.2秒。
-t——设置存活时间TTL(Time To Live)。
(2)使用tracepath命令跟踪并显示网络路径
命令一般格式为: tracepath [选项] 目标主机名或目标IP地址>
常用选项:
-n——对沿途各主机节点, 仅仅获取并输出IP地址,不在每个IP 地址的节点设备上通过DNS查找其主机名,以此来加快测试速度。
-b——对沿途各主机节点同时显示IP地址和主机名。
-l 包长度——设置初始的数据包的大小。
-p端口号——设置UDP传输协议的端口(缺省为33434)。
6.9 设置主机名
1. 查看主机名
查看主机名的命令一般格式如下:
hostnamectl [status] [--static|--transient|--pretty]
选项说明如下:
status——可同时查看静态、瞬态和灵活三种主机名及其相关的设置信息。
--static——仅查看静态(永久)主机名。
--transient——仅查看瞬态(临时)主机名。
--pretty——仅查看灵活主机名。
2. 修改主机名
修改主机名的命令一般格式如下:
hostnamectl [--static|--transient|--pretty] set-hostname 新主机名>
查看在设置新的静态主机名后,会立即修改内核主机名,只是在提示符中“@”后面的主机名还未自动刷新,此 时,只要执行重新开启Shell登录命令,便可在提示符中显示新的主机名。
配置静态解析
为Linux主机指派域名解析
(1)通过/etc/hosts文件实现域名解析
(2)通过/etc/resolv.conf文件指派域名解析服务的地址
(3)指定域名解析的顺序
/etc/hosts和/etc/resolv.conf文件均可响应域名解析的请求,其响应的先后顺序可在文 件/etc/nsswitch.conf中设置,其默认解析顺序为hosts文件、resolv.conf文件中的DNS服务器。