附:【部分常用快捷键】
点击鼠标右键+e打开一个终端
ctrl+shift+t在同一个shell里又打开一个终端
ctrl+shift+d关闭一个终端
ctrl+shift+q关闭整个终端
ctrl+shift+f找到(find)查找
ctrl+shift+n再打开一个终端
ctrl+a行首
ctrl+e行尾
SECTION ONE
一.权限
1.umask值
输入umask,得0022(默认值)
umask值即为系统建立文件时默认保留的权力。
【对于目录而言w最重要,对于文件而言x最重要】
文件创建时的默认权限有以下几种情况:
1)可执行文件:通过编译程序生成的可执行文件,它的默认权限为777-掩码。(例如,若掩码为022,则新文件的权限就是755)
2)非可执行文件:对于非可执行文件(如文本文件、数据文件等),在创建时默认是没有x权限的,对于这类文件的x权限需要显式的赋予,即通过chmod命令将其改为可执行文件。因此新建文件的权限是(777-掩码)&666。这里的&是“按位与”运算,即先用777-掩码求出权限,在滤掉所有的x位。(例如,若掩码为022,则新文件的权限就是(777-022)&666=644。若掩码为033,则新文件的权限就是(777-033)&666=664)
3)目录:同可执行文件一样,新建目录的默认权限是777-掩码。
则:
系统目录默认权限:777-022=755
系统文件默认权限:755-111=644
- 临时修改umask值:
umask 077 临时设定系统预留权限为077 (临时更改当前shell中的umask值)
- 永久修改umask值:
【配置文件都在/etc中】
vim/etc/profile 系统配置文件
修改下图中60和62行的umask值
vim/etc/bashrc shell的配置文件
并修改下图中71和73行的umask值
source /etc/profile 让做出的更改立即生效
source /etc/bashrc 让做出的更改立即生效
2.特殊权限
1)sticky 粘制位
设定方式:chmod o+t dir(如果其他人-o关闭执行权限,则会表示为T)
chmod 1xxx dir
作用:
只针对目录生效。当一个目录上有sticky权限时,在这个目录中的文件只能被文件的属主删除。
要注意目录中文件的存储地址。
实验过程:
新建用户student和westos。在/home中新建file1和file2。更改file1属主为westos,file2属主为student。
切换用户为student,删除file1------>失败,报错。删除file2------>成功。
2)sgid 强制位
设定方式:chmod g+s file|dir
chmod 2xxx file|dir
作用:
对文件:只针对二进制可执行文件。当文件上有sgid时,任何人执行此文件产生的进程都属于此文件的属组。
实验过程:
对目录:当目录上有sgid时,任何人在此目录中建立的文件都属于目录的属组。
实验过程:
3)suid 冒险位
设定方式:chmod u+s file
chmod 4xxx file
作用:
只针对二进制可执行文件。当文件上有suid时,任何人执行此文件产生的进程都属于此文件的属主。(用户降级的作用,使得超级用户在使用很多命令时可以被阻止。)
实验过程:
更改/bin/rm文件属主为student,并加上冒险位。发现root用户也无法删除/etc/passwd。
3.acl权限列表
1)作用:让特定的用户对特定的文件拥有特定的权限
2)acl列表查看
-rw-rwxr--+ 1 root root 0 Oct 1 11:11 file
+(加号)表示acl开启
查看acl开启的文件的权限:getfacl file
类型样式以及每行含义如下:
#file:file 文件名称
#owner:root 文件所有者
#group:root 文件所有组
user::rw- 文件所有人的权限
user:tom:rwx指定用户的权限
group::r-- 文件所有组的权限
mask::rwx 能赋予用户的最大权力阈值
other::r-- 其他人权限
3)acl列表管理
setfacl -m u:username:rwx file 设定username对file拥有rwx权限
setfacl -m g:group:rwx file 设定group组成员对file拥有rwx权限
例题:
1.新建用户组,shengchan,caiwu,jishu。
2.新建用户要求如下:
tom是shengchan组的附加用户;
harry是caiwu组的附加用户;
leo是jishu组的附加用户;
新建admin用户,此用户不属于以上提到的三个部门。
3.新建目录要求如下:
/pub目录为公共存储目录,对所有用户可以读、写、执行;
/sc目录为生产部存储目录,只能对生产部人员可以写入,并生产部人员所建立的文件都自动归属到shengchan组中;
/cw目录为财务部存储目录,只能对财务人员可以写入,并财务部人员所建立的文件都自动归属到财务组中;
admin用户对/sc和/cw目录可以读写执行。
前两问与上一篇博客题目相同此处粘贴截图:
4.mask值
在权限列表中mask值表示能给用户赋予(能生效)的最大权力值;
当用chmod减小开启acl的文件权限时,mask值会发生变化;
chmod g-w file 查看当g(属组)减掉w(写权限)时的mask值;
setfacl -m m:rwx file 恢复mask值;
setfacl -m d:u:student:rwx /root/Desktop/anan/ acl默认权限只针对目录设定;
"acl权限只针对设定完成之后新建立的文件或目录生效,而已经存在的文件是不会继承默认权限的"(So what?)
二.系统进程及服务的控制
1.什么是进程
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
2.查看进程
1)图形方式查看
鼠标点击:系统工具里的系统监控器(System Tools里的System Monitor)
用命令查看进程:gnome-system-monitor
其中的swap为交换分区
2)进程命令(bash shell)
ps:静态
ps -A 所有进程
ps -a 当前环境中运行的进程,不包含环境信息
ps -u 显示进程用户信息
ps a 在当前环境中运行的进程
ps x 列出系统中所有运行的进程信息(TTY中?意为不占用终端)
ps f 显示进程的父子关系
ps e 显示进程的详细信息(系统的资源调用)
- 常用组合
ps aux 显示系统中所有进程并显示进程用户
ps ef 显示进程详细信息并显示进程父子关系
ps ax 显示当前系统中的所有进程
rom只读内存
ram随机存取寄存器
显示进程指定信息
ps -o xxx 显示进程的指定信息
comm 进程名称
user 进程所有人
group 进程所有组
%cpu 进程cpu使用率
%mem 进程内存使用率
pid 进程id
nice 进程优先级
- 进程排序
ps ax --sort=+%cpu (正序)(根据%cpu排序)
-%cpu (逆序)
+%mem|-%mem (根据内存占用大小排序)
例:选出当前最占cpu的前五的进程
ps ax --sort=-%cpu -o comm| head -n 6 | grep %CPU -v
(-v意为反向过滤,若不加-v输出为%CPU)
- STAT状态(ps ax查看):
S 进程状态
l 内存中有锁定空间(gedit为例,内存中保存字符)
N 优先级低
< 优先级高
+ 前台运行(占用你的终端了)
s 顶级进程
- 进程的优先级(ps ax查看)(优先级越小,优先级越高)(nice[具体] priority[high,low])
[1]优先级范围:
-20~19
[2]优先级查看:
ps ax -o nice,comm
[3]改变优先级:
格式:renice -n 优先级数字 进程id
renice -n -19 4140 (改变4140进程的优先级为-19)
[4]在启动时就设定好优先级(指定某个优先级开启进程):
格式:nice -n 优先级数字 进程名称
nice -n -13 vim&(开启vim并且指定程序优先级为-13)(&意思为让它在后台运行)
[5]环境中进程的前后台调用:
把占用终端的进程打入后台用ctrl+z
jobs命令 可以看到当前环境下打入后台的进程
bg jobnum 把前台进程调回后台(vim无用,因为vim必须占用终端使用)
fg jobnum 把后台暂停的进程运行
comm(命令) & 让命令直接在后台运行
注:若要同时编辑两个文件:可以用vim中,sp同时编辑两个文件;还可以ctrl+z将当前文件直接打入后台,然后再fg需要编辑的文件。
若fg不加job号,优先调用前带加号的进程,后是减号,最后是什么都没有的。
三.进程信号
1.常用进程信号
man 7 signal 查看信号详细信息
1 进程重新加载配置
2 (kill -2 5734) 删除进程在内存中的数据
3 (=ctrl+\ ) 删除鼠标在内存中的数据
9 (kill -9 5734) 强行结束单个进程(不可被阻塞,由shell打开的gedit不会关闭,shell与gedit之间父子进程关系,gedit变为孤儿进程,归为系统自带进程)
15(kill -15 5734) 正常关闭进程(可能会被阻塞)
18 运行暂停的进程
19 暂停某个进程(不能被阻塞)
20 把进程打入后台(可以被阻塞)
格式:kill -信号 进程id
killall -9 vim 一次关闭多个
格式:killall -信号 进程名称
pkill -u student -信号 先切换到student用户,用此条命令退出student用户
SECTION TWO
例题:
1.用一条命令在/mnt目录下创建文件westosX_fileY,X的取值范围为{a,b,c},Y的取值范围为8-13;
2.将westosX_fileY的文件均移动到/tmp目录下;
3.复制/etc/group文件到/mnt;
1)vim编辑该文件,复制前三行,粘贴到第5行
2)剪贴第5行,粘贴到最后一行
3)删除倒数第三行
4)在3-10行的最开始批量添加root单词
5)在左右分屏的情况下,将5-10行中的root替换为kiosk
6)退出左右分屏,在上下分屏的情况下替换全文中的kiosk为student
4.配置vim,使其在编辑文件时拥有以下功能:显示行号、鼠标可以操控光标位置;
5.用户与用户组操作
1)创建用户组phone,指定gid为888,下面新建用户均属于phone用户组;
2)创建用户mi,设置uid=1800,shell类型为/bin/sh;
3)创建用户iphone,设置uid=1801,用户描述为“User iphone”;
4)创建用户huawei,设置用户描述为“华为”,用户家目录为/huawei;
**因业务需要,执行以下操作:
5)修改用户mi的uid为1700,shell另外类型为/sbin/nologin;
6)修改用户iphone的用户描述为“苹果手机”;
7)修改用户huawei的用户家目录为/home/huawei;
6.(密码管理)某管理员建立一用来管理帐号的用户admin,清满足以下条件:
1)uid=7777,gid=7777,用户描述为“系统管理员”;
2)新建用户组bank1,bank2,是新建的用户组为admin用户的附加组;
3)设置admin用户的密码为“adminpassword”;
4)修改密码使用天数为0,使该用户首次登陆必须修改密码;
7.创建一公共目录/pubdir,使得所有用户均可向该目录写入内容,但只能删除属于自己的文件或目录;
8.显示cpu使用量排在前5的pid,并重定向到文件/mnt/pidfile中;
注意:
修改用户家目录用-md,因为-d只是更改了家目录的指向。
添加用户附加组,若想同时添加两个必须-aG。
一.ip地址
1.查看当前计算机ip地址:
ip addr show(红帽7以后版本推荐)
ifconfig
2.更改虚拟机ip:
输入nm-connection-editor
敲回车
点击System eth0,然后点击Delete。之后add。
点击Create。
设置如图。
设置如图,然后点击Save。
结束。。。
在此我们假定:server虚拟机ip号:server fundationnu+100;
desktop虚拟机ip号:desktop fundationnu+200。
查看物理机ip:br0里的两个ip地址都可以用;
查看虚拟机ip:eth0里的ip地址。
3.查看物理机能否与虚拟机进行通信:
物理机中输入ping+虚拟机ip号,查看是否有数据“传送”。
二.进程的动态监控
top
1 显示cpu每个核的负载(那一列?)
s 调整刷新频率
c cpu负载排序
m 内存使用量排序
h 查看帮助
u 查看指定用户进程
k 对指定进程发起信号(具体使用?)
q 退出
三.控制服务
1.什么是服务:
服务的开启对服务端是没有意义的,对客户端有意义。
2.用什么控制服务:
系统初始化进程可以对服务进行相应的控制
3.当前系统中的进程关系:
systemd 系统初始化进程(父进程)
pstree 显示系统中的进程树
4.控制服务命令:
服务: ssh(secure shell) sshd
相对应的端口:client server
systemctl 服务控制命令
systemctl status sshd 查看服务状态,inactive(不可用),active(可用)
systemctl start sshd 开启服务
systemctl stop sshd 关闭服务
systemctl restart ssh 重启服务(内部其实是:先关闭再打开,中间一次了暂停)
systemctl reload sshd 重新加载配置(和信号1一样)
5.安全连接虚拟机:
###思考为什么我们可以用desktop虚拟机连接上server虚拟机?###
答:desktop虚拟机能连接上server虚拟机是因为server这台虚拟机中提供了安全连接(sshd:secure shell daemon)的服务。只有虚拟机server开启sshd时,desktop才能通过ssh root@serveripnum连接上server,若关闭sshd服务则无法连接成功。
6.服务的管理:
systemctl
systemctl enable sshd 设定服务开机时启动sshd服务
systemctl disable sshd 设定服务开机时不启动sshd服务
systemctl list-units 列出已经开启服务的当前状态
systemctl list-unit-files 列出所有服务开机时的启动状态
systemctl list-dependencies 列出服务依赖
四.无图形模式与图形模式
在有图形模式中终端输入:init 3 进入无图形模式
启动图形的方法:init 5
或startx
systemctl set-default multi-user.target 设定系统启动级别为多用户模式(无图形)
systemctl set-default graphical.target 设定系统启动级别为图形模式
systemctl status firewalld
systemctl mask firewalld(注销) (注销这个服务,只有扯掉注销才能再打开,否则打不开)
unmask
五.配置两台服务器
修改主机名:
hostname 查看当前主机名
hostnamectl set-hostname client.example.com 或 hostnamectl set-hostname server.example.com 修改当前主机名
最后关闭当前终端再次打开就好啦。
六.sshd服务
1.sshd简介
可以通过网络在主机中开启shell的服务
客户端软件:ssh
连接方式: ssh username@ip 文本模式的连接
ssh -X username@ip 可以在连接成功后打开图形
tip:在闲暇时,尝试用物理机输入ssh -X root@隔壁机ip号,然后cheese,打开隔壁机摄像头,得到画面如下:
哈哈哈,美滋滋。。。
注意:第一次连接陌生主机时要建立认证文件,会询问是否建立,需要输入yes,再次连接此主机时,因为已经生成~/.ssh/know_hosts,则不会再次询问。
2.远程复制
scp file root@ip:dir 上传(dir必须为绝对路径)
scp root@ip:file dir 下载(file必须为绝对路径)
scp -rp dir root@ip:dir
scp -rp root@ip:dir dir(-r表示递归,-p表示保留原有的权限)
3.sshd的key认证
方法一:
第一步:ssh-keygen
第二步:cd /root/.ssh/
第三步:ls(查看此时/root/.ssh目录中有什么)
第五步:ssh-copy-id -i id_rsa.pub root@172.25.254.128(此地址为要加密的地址)
第六步:scp /root/.ssh/id_rsa root@172.25.254.228:/root/.ssh(密钥想给谁,后边的地址就是根下家目录的.ssh)
其中authorized_keys=id_rsa.pub,但系统在认定是否已经生成密钥看的是是不是有了authorized_keys。
将生成的密钥给虚拟机ip为172.25.254.228的client,随后client连接server时不需要再次输入密码。
注:两个机子在第一次连接后时,需要输入yes和密码,并且.ssh中产生了known_hosts,在第二次连接时则不用输入yes。若删除,则须再次yes。
整个过程如图:
方法二:
SECTION THREE
一.控制客户端访问:
第一种情况:在server端rm -fr authorized_keys(删除锁),则client端将无法再次直接连接server端。
第二种情况:ssh的安全设定
vim /etc/ssh/sshd_config 查看配置文件情况(man 5 +配置文件 查看配置文件用法)
PasswordAuthentication yes 是否允许用户通过密码做sshd认证
改为no后再次登陆出现结果如图:
PermitRootLogin yes 是否允许root用户通过sshd服务的认证
更改为no后再次登陆出现结果如图:
AllowUsers student westos 设定用户白名单,白名单出现,默认不在白名单中的用户不能使用sshd(中间空格隔开)
DenyUser westos 设定用户黑名单,黑名单出现,默认比在黑名单中的用户可以使用sshd
注意:每一次更改完配置文件都要systemctl restart sshd重启服务。
二.添加sshd登陆信息
vim /etc/motd 编辑的文件内容,就是其他用户登陆后的信息显示。
三.用户的登陆审计
w 查看正在使用当前系统的用户
-f 查看使用来源(显示的是hostname)(前提是得有本地解析,vim /etc/hosts)
-i 显示ip(显示ip地址)
last 查看使用过并退出的用户信息
lastb 试图登陆但没成功的用户
实验过程中,我们将server中的锁先删除掉,然后用client密码连接server,我们三次密码输入错误。然后在server中lastb,查看命令结果。
四.文件在系统中的传输
1.scp
远程复制(同前)
scp file username@ip:dir
scp username@ip:file dir
2.rsync
远程同步,速度快,默认会忽略文件属性,链接文件,设备文件
du -sh 目录 查看目录大小
-r 同步目录
-p 同步权限
-o 同步文件所有人
-g 同步文件所有组
-t 同步文件时间戳
-l 同步链接文件
-D 同步设备文件
/dev/pts(字符设备)
五.归档和压缩
1.归档
归档是与压缩操作配合使用的一个常用文件管理操作。归档是一个聚集众多文件并将他们组合为一个大文件的过程,它通常作为系统备份的一部分,而且通常也用于将旧数据从某个系统移到某些长期存储设备的情况下。
tar——磁带归档工具
tar命令是类UNIX系统中用于归档文件的经典工具。tar是tape archive的缩写,由此可见,该命令最初始的作用就是磁带备份。虽然该命令仍可用于传统的磁带备份,但同样也可用于其他存储设备。tar归档文件可以由许多独立的文件、一个或多个目录层次或者两者混合组合而成。
如:tar cf etc.tar /etc
各个参数意义:c 创建
x 解档
v 显示过程
f 指定归档文件名称
t 查看归档文件内容
r 添加文件到归档中
--get 解档指定文件
--delete 删除归档中的指定文件
-C 指定解档目录
2.压缩
四种压缩形式:zip gz bz2 xz
[1]zip
zip -r xxx.tar.zip xxx.tar
unzip xxx.zip
[2]gz
gzip xxx.tar
gunzip xxx.tar.gz
打包压缩同时:
tar zcf xxx.tar.gz /xxx
tar zxf xxx.tar.gz
[3]bz2
bzip2 xxx.tar
bunzip2 xxx.tar.bz2
打包压缩同时:
tar jcf xxx.tar.bz2 /xxx
tar jxf xxx.tar.bz2
[4]xz
xz xxx.tar
unxz xxx.tar.xz
打包压缩同时:
tar Jcf xxx.tar.xz /xxx
tar Jxf xxx.tar.xz
存在的疑问:
1.特殊权限里三个特殊权限,并不清楚如何进行实验来验证设置成功。
粘制位:目录加上粘制位则目录内的文件只能被文件的属主所删除。(要注意目录所建的位置)
目录的能理解,文件的还是有一丢丢费劲啊。。。
强制位:目录理解文件不理解。
冒险位:。。。。
2.进程信号如何实现?
3.-g,-G的不同是什么?说以下用户属于某用户组为什么是-G?
-g说的是gid,即用户的组id号;-G是说的群组,即用户所在组。所以说某用户属于某用户组用的是-G。
4.进程动态监控中有几个参数不知如何使用?
5.本机进入无图形模式就死机了。(desktop能进去,server进不去)
6.远程复制只能用root用户?
7.最后一部分不是很清楚怎么使用。
归档主要将多个文件整合在一起。
压缩时压缩的是目录,减少目录大小。