第六天
系统中文件默认的权限值
**权限掩码:(权限过滤符) umask = 022 033
目录最高权限:777 755 744
文本文件的权限: 666 644 644
6 6 6
rw- rw- rw-
0 3 3 0 4 4 0 5 5
--- -wx -wx r-x r-x
rw- r-- r--
6 4 4
权限修改:chmod
chmod 权限 FILENAME(管理员可以更改所有用户创建文件的权限;但是普通用户只能更改自己创建的文件(文件的所属用户是当前用户))
字符形式: chmod u=rwx,g+wx,o-x a chmod ugo=rw FILENAME == chmod a=rw FILENAME
数值形式: chmod 644 FILENAME chmod 66 FILENAME 066
chown 更改文件所属用户 chown 所属用户名 FILENAME chown u1 a chown u2:u2 a chown :u4 a
chgrp 更改文件的所属组 chgrp 所属组(组名) FIELNAME
权限匹配规则:(没有扩展权限时)
标准定义: 安全上下文
通过发起者用户执行一个可执行文件(命令),匹配一个目标文件时,判断执行文件的发起者身份是否是目标文件的的所属用户,如果是直接匹配所属用户权限,如果不是开始匹配是否是文件所组的用户如果是直接匹配所属组权限,不是则直接匹配其他用户的权限。
(首先判断发起用户,是否是文件的所属用户,如果是直接匹配所属用户权限,如果不是开始匹配是否是文件所组的用户如果是直接匹配所属组权限,不是则直接匹配其他用户的权限。)
文件权限字符含义
d目录: r 查看(列出)目录下的文件信息 ls
w 能够在指定目录中创建文件 touch > >> vim nano mkdir mv cp (对于普通用户如果没有写权限,则不能删除该目录下的文件)
x 打开该目录 cd
-文本文件: r 查看该文件的内容
w 编辑文件内容
x 运行文本内容(命令文件)
x [redhat@162 ~]$ cd /root-bash: cd: /root: Permission denied
作为redhat对于/root目录没有执行权限[root@162 /]# ll /root -d redhat用户对于/root是其他用户,需要其他用户位加上执行权限
dr-xr-x---. 18 root root 4096 Feb 16 21:35 /root
[root@162 /]# chmod o+x /root[root@162 /]# su - redhat
[redhat@162 ~]$ cd /root
[root@162 /]# touch file
[root@162 /]# ll
-rw-r--r--. 1 root root 0 Feb 16 22:03 file
[redhat@162 /]$ cat file
[redhat@162 /]$ echo this is red1 >file
-bash: file: Permission denied
[root@162 /]# chmod o+w file
[redhat@162 /]$ echo this is red1 > file
[redhat@162 /]$ cat file
this is red1
[redhat@162 /]$ ./file
-bash: ./file: Permission denied
[root@162 /]# chmod o+x file
[redhat@162 /]$ ./file
./file: line 1: this: command not found
特殊权限
chmod u+s,o+s,o+t FILENAME 是在文件对应的执行位显示,如果文件默认没有执行权限特殊权限大写标识,如果有特殊权限特殊权限字符小写标识。
chmod 7644 FILENAME 特殊权限是7(u+s=4,g+s=2.o+t=1) 644标准权限
u+s =4 所属用户的强制位(对于可执行文件的所属用户禁锢) ---1.对可执行文件设置有意义
g+s =2 所属组的强制位(对于可执行文件的所属组禁锢)(对目录文件设置--目录文件的所属组禁锢;表示任何用户创建文件的所属组都是当前目录的所属组)
o+t =1 sticky冒险位(对一个目录文件存在冒险位,用户只能删除自己文件不能删除别人的文件)
[root@162 /]# ll /usr/bin/touch
-rwxr-xr-x. 1 root root 109776 Feb 14 03:07 /urs/bin/touch
[redhat@162 ~]$ touch red1 // 通过当前用户redhat,执行可执行文件touch,所以touch进程文件的所属用户就是当前用户,根据当前进程创建目标文件,所以目标文件的所属用户以及所属组和进程文件的所属用户和所属组一样。
[redhat@162 ~]$ ll red1
-rw-rw-r--. 1 redhat redhat 0 Feb 16 22:40 red1
root@162 /]# chmod u+s /usr/bin/touch
[root@162 /]# ll /usr/bin/touch 对可执行文件设置u+s
-rwsr-xr-x. 1 root root 109776 Feb 14 03:07 /usr/bin/touch
[redhat@162 ~]$ touch red2 //通过当前用户redhat执行可执行文件touch,touch进程文件的所属用户取决于文件自身的用户root,所属组取决于发起者身份redhat的基本组,所以目标文件的所属用户是root:redhat
[redhat@162 ~]$ ll red2
-rw-rw-r--. 1 root redhat 0 Feb 16 22:46 red2
root@162 /]# chmod g+s /usr/bin/touch
[root@162 /]# ll /usr/bin/touch 对可执行文件设置u+s,g+s
-rwsr-sr-x. 1 root root 109776 Feb 14 03:07 /usr/bin/touch
[redhat@162 ~]$ touch red3 //通过当前用户redhat执行可执行文件touch,touch进程文件的所属用户取决于文件自身的用户root,所属组取决于文件自身的所属组root,所以目标文件的所属用户是root:root
[redhat@162 ~]$ ll red3
-rw-rw-r--. 1 root redhat 0 Feb 16 22:46 red2
实际案例:
[root@162 /]# ll /etc/shadow
----------. 1 root root 1812 Feb 16 03:21 /etc/shadow
为什么用户能够通过passwd修改密码命令对密码文件有写权限
[root@162 /]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 34512 Aug 12 2018 /usr/bin/passwd
[redhat@162 ~]$ passwd 通过发起者身份redhat,运行passwd可执行文件,可执行文件进程的所属用户取决于文件自身用户root,通过root用户对密码文件进行操作。
g+s 对目录设置
[root@162 /]# chmod o+w /pub
[redhat@162 pub]$ touch aa
[redhat@162 pub]$ ll
total 0
-rw-rw-r--. 1 redhat redhat 0 Feb 17 01:12 aa
[root@162 /]# chmod g+s /pub -目录所属组禁锢
[root@162 /]# ll -d /pub
drwxr-srwx. 2 root root 16 Feb 17 01:12 /pub
[redhat@162 pub]$ touch bb --任何用户在该目录下创建的任意文件的所属组都和目录的所属组一样
[redhat@162 pub]$ ll
total 0
-rw-rw-r--. 1 redhat redhat 0 Feb 17 01:12 aa
-rw-rw-r--. 1 redhat root 0 Feb 17 01:13 bb
目录o+t
[root@162 /]# mkdir /test
[root@162 /]# ll -d /test
drwxr-xr-x. 2 root root 6 Feb 17 01:21 /test
[root@162 /]# chmod o+w /test
[u1@162 zuoye]$ cd /test
[u1@162 test]$ touch u1
[u1@162 test]$ touch u2
[u1@162 test]$ touch u3
[redhat@162 ~]$ cd /test
[redhat@162 test]$ touch red1
[redhat@162 test]$ touch red2
[redhat@162 test]$ touch red3
[root@162 test]# touch root1
[root@162 test]# touch root2
[root@162 test]# touch root3
[redhat@162 test]$ rm root1 ---对于当前目录没有特殊权限,但对当用户拥有写权限,所以用户可以删除任意用户创建的文件
rm: remove write-protected regular empty file 'root1'? y
[root@162 test]# chmod o+t /test --设置特殊权限
[root@162 test]# ll -d /test
drwxr-xrwt. 2 root root 98 Feb 17 01:25 /test
[redhat@162 test]$ rm red1
redhat@162 test]$ rm root2
rm: remove write-protected regular empty file 'root2'? y
rm: cannot remove 'root2': Operation not permitted ---用户只能删除自己文件不能删除别人的文件
注:对于管理员,目录文件有特殊权限该用户也可以删除任何用户创建的文件
扩展权限:
getfacl FILENAME 查看文件的权限列表
setfacl -m u:USERNAME:prem FILENAME
g:GROUPNAME:prem FILENAME
setfacl -x u:USERNAME: FILENAME 删除文件的一条扩展权限
setfacl -b FILENAME 清空指定文件的扩展权限
应用场景(对于系统中的文件,只要求对某一个或者某一些用户对文件由不同的权限可以通过扩展权限来实现)
网络管理
三种网络模式
仅主机: 虚拟机都为仅主机模式,多台虚拟可以互ping; 物理机 --ping ---->虚拟机
nat: 虚拟机都为nat模式,多台虚拟可以互ping; 物理机 <-----ping ---->虚拟机 只要物理能访问外网虚拟机就能上网
桥接: 虚拟机都为桥接模式,多台虚拟可以互ping;物理机 <-----ping ---->虚拟机 (同一网段的地址);可以访问外网(当前主机的地址能不能访问外网)
网卡动态和静态地址配置
1.虚拟图形界面
2.nmtui 连接图形化界面进行配置(键盘)
3.nm-connection-editor 鼠标控制
4.网卡配置文件
[root@162 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet 网卡类型 Ethernet真实网卡
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp 网卡模式dhcp动态模式 none 静态模式
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens160 网卡配置文件名
UUID=29a02f09-4754-4f2f-a91b-b0fd3cbf7987
DEVICE=ens160 网卡设备名
ONBOOT=no 网卡开机后是否自动连接
IPV6_PRIVACY=no
注:RHEL7- 一个网卡设备可以对应多个网卡配置文件,但是当前网卡默认只能连接一个网卡配置
*5.nmcli 网络管理工具
nmcli device show 显示主机所有网络设备详细信息
status 显示主机设备和会话(网卡配置文件)
connect 将设备和指定会话文件链接
nmcli connection show
modify
edit
add
delete
up
down
nmcli配置静态ip地址
[root@162 ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.220.111/24 ipv4.dns 114.114.114.114 ipv4.gateway 192.168.220.2 connection.autoconnect yes
--修改ens160会话文件参数 网络模式=manual ipv4.地址= connection.autoconnect yes 设置网卡开机自动连接
[root@162 ~]# nmcli connection up ens160 ---激活ens160网卡配置
[root@162 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens160
UUID=29a02f09-4754-4f2f-a91b-b0fd3cbf7987
DEVICE=ens160
ONBOOT=yes
DNS1=114.114.114.114
IPV6_PRIVACY=no
IPADDR=192.168.220.111
PREFIX=24
GATEWAY=192.168.220.2
[root@162 ~]# nmcli connection edit ens160 --进入编辑网卡配置文件
===| nmcli interactive connection editor |===
Editing existing '802-3-ethernet' connection: 'ens160'
Type 'help' or '?' for available commands.
Type 'print' to show all the connection properties.
Type 'describe [<setting>.<prop>]' for detailed property description.
You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli> tab
activate describe help print remove set
back goto nmcli quit save verify
nmcli> goto ipv4 进入iPv4模式
You may edit the following properties: method, dns, dns-search, dns-options, dns-priority, addresses, gateway, routes, route-metric, route-table, routing-rules, ignore-auto-routes, ignore-auto-dns, dhcp-client-id, dhcp-timeout, dhcp-send-hostname, dhcp-hostname, dhcp-fqdn, never-default, may-fail, dad-timeout
nmcli ipv4>
activate describe help print remove set
back goto nmcli quit save verify
nmcli ipv4> set method
auto disabled link-local manual shared
nmcli ipv4> set method auto 将网络模式改为自动模式
Do you also want to clear 'ipv4.addresses'? [yes]: yes
nmcli ipv4> save
Error: connection verification failed: ipv4.gateway: gateway cannot be set if there are no addresses configured
You may try running 'verify fix' to fix errors.
nmcli ipv4> remove
addresses dhcp-send-hostname dns-search method routing-rules
dad-timeout dhcp-timeout gateway never-default
dhcp-client-id dns ignore-auto-dns route-metric
dhcp-fqdn dns-options ignore-auto-routes routes
dhcp-hostname dns-priority may-fail route-table
nmcli ipv4> remove ipv4.gateway
nmcli ipv4> remove ipv4.dns
nmcli ipv4> save
Connection 'ens160' (29a02f09-4754-4f2f-a91b-b0fd3cbf7987) successfully updated.
nmcli ipv4> quit
[root@162 ~]# nmcli connection up ens160
[root@162 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens160
UUID=29a02f09-4754-4f2f-a91b-b0fd3cbf7987
DEVICE=ens160
ONBOOT=yes
IPV6_PRIVACY=no
[root@162 ~]# nmcli connection add type ethernet ifname ens160 con-name work
Connection 'work' (dcab47ad-1250-458f-ad64-7471f4bb41e0) successfully added.
[root@162 ~]# vim /etc/sysconfig/network-scripts/ifcfg-work
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=work
UUID=dcab47ad-1250-458f-ad64-7471f4bb41e0
DEVICE=ens160
ONBOOT=yes
[root@162 ~]# nmcli connection modify work ipv4.method manual ipv4.addresses 192.168.220.111/24 ipv4.dns 114.114.114.114 ipv4.gateway 192.168.220.2
[root@162 ~]# nmcli connection up work
root@162 ~]# nmcli connection delete work