玩转Linux小玩意儿。
【部分常用快捷键】
点击鼠标右键+e打开一个终端
ctrl+shift+t在同一个shell里又打开一个终端
ctrl+shift+d/q关闭一个终端
ctrl+shift+f找到(find)查找
ctrl+shift+n再打开一个终端
ctrl+a行首
ctrl+e行尾
SECTION ONE
一.权限
1.umask值
输入umask,得0022(默认值)
umask 系统建立文件时默认保留的权力
【对于目录而言w最重要,对于文件而言x最重要】
目录默认权限: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 粘制位
作用:
只针对目录生效。当一个目录上有sticky权限时,在这个目录中的文件只能被文件的属主删除。
设定方式:chmod o+t dir
chmod 1xxx dir
2)sgid 强制位
作用:
对文件:只针对二进制可执行文件。当文件上有sgid时,任何人执行此文件产生的进程都属于此文件的属组。
对目录:当目录上有sgid时,任何人在此目录中建立的文件都属于目录的属组。
设定方式:chmod g+s file|dir
chmod 2xxx file|dir
3)suid 冒险位
作用:
只针对二进制可执行文件。当文件上有suid时,任何人执行此文件产生的进程都属于此文件的属主。
设定方式:chmod u+s file
chmod 4xxx file
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权限
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权限只针对设定完成之后新建立的文件或目录生效,而已经存在的文件是不会继承默认权限的"
二.系统进程及服务的控制
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)
- 进程的优先级(-20到19,优先级越小,优先级越高)(nice[具体] priority[high,low])
STAT状态(ps ax查看):
S 进程状态
l 内存中有锁定空间(gedit为例,内存中保存字符)
N 优先级低
< 优先级高
+ 前台运行(占用你的终端了)
s 顶级进程
[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 [email protected]连接上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 修改当前主机名
rm -fr ~/.ssh/ 删除.ssh文件
最后关闭当前终端再次打开就好啦。
六.sshd服务
1.sshd简介
可以通过网络在主机中开启shell的服务
客户端软件:ssh
连接方式: ssh [email protected] 文本模式的连接
ssh -X [email protected] 可以在连接成功后打开图形
tip:在闲暇时,尝试用物理机输入ssh -X [email protected]隔壁机ip号,然后cheese,打开隔壁机摄像头,得到画面如下:
哈哈哈,美滋滋。。。
注意:第一次连接陌生主机时要建立认证文件,会询问是否建立,需要输入yes,再次连接此主机时,因为已经生成~/.ssh/know_hosts,则不会再次询问。
2.远程复制:
scp file [email protected]:dir 上传(dir必须为绝对路径)
scp [email protected]:file dir 下载(file必须为绝对路径)
scp -rp dir [email protected]:dir
scp -rp [email protected]:dir dir(-r表示递归,-p表示保留原有的权限)
2.sshd的key认证
第一步:ssh-******
第二步:cd /root/.ssh/
第三步:ls(查看此时/root/.ssh目录中有什么)
第五步:ssh-copy-id -i id_rsa.pub [email protected](此地址为要加密的地址)
第六步:scp /root/.ssh/id_rsa [email protected]:/root/.ssh(**想给谁,后边的地址就是根下家目录的.ssh)
其中authorized_keys=id_rsa.pub,但系统在认定是否已经生成**看的是是不是有了authorized_keys。
将生成的**给虚拟机ip为172.25.254.228的client,随后client连接server时不需要再次输入密码。
整个过程如图:
SECTION THREE
一.控制客户端访问:
第一种情况:在server端rm -fr authorized_keys(删除锁),则client端将无法再次直接连接server端。
第二种情况:ssh的安全设定
vim /etc/ssh/sshd_config 查看配置文件情况(man 5 +配置文件 查看配置文件写法)
PasswordAuthentication yes 是否允许用户通过密码做sshd认证
PermitRootLogin yes 是否允许root用户通过sshd服务的认证
AllowUsers student westos 设定用户白名单,白名单出现,默认不在白名单中的用户不能使用sshd(中间空格隔开)
DenyUser westos 设定用户黑名单,黑名单出现,默认比在黑名单中的用户可以使用sshd
注意:每一次更改完配置文件都要systemctl restart ssh重启服务。
二.添加sshd登陆信息
vim /etc/motd 编辑的文件内容,就是其他用户登陆后的信息显示。
三.用户的登陆审计
w 查看正在使用当前系统的用户
-f 查看使用来源(显示的是hostname)(前提是得有本地解析,vim /etc/hosts)
-i 显示ip(显示ip地址)
last 查看使用过并退出的用户信息
lastb 试图登陆但没成功的用户
实验过程中,我们将server中的锁先删除掉,然后用client密码连接server,我们三次密码输入错入。然后在server中lastb,查看命令结果。
四.文件在系统中的传输
1.scp 远程复制(同前)
scp file [email protected]:dir
scp [email protected]:file dir
2.rsync 远程同步,速度快,默认会忽略文件属性,链接文件,设备文件
du -sh 目录 查看目录大小
-r 同步目录
-p 同步权限
-o 同步文件所有人
-g 同步文件所有组
-t 同步文件时间戳
-l 同步链接文件
-D 同步设备文件
/dev/pts(字符设备)
五.打包和压缩
1.打包
如: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