玩转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值)

玩转Linux小玩意儿。

  • 永久修改umask值:

【配置文件都在/etc中】

vim/etc/profile            系统配置文件

修改下图中60和62行的umask值

玩转Linux小玩意儿。

vim/etc/bashrc           shell的配置文件

并修改下图中71和73行的umask值

玩转Linux小玩意儿。

source /etc/profile     让做出的更改立即生效

source /etc/bashrc    让做出的更改立即生效

玩转Linux小玩意儿。

2.特殊权限

1)sticky   粘制位

作用:

        只针对目录生效。当一个目录上有sticky权限时,在这个目录中的文件只能被文件的属主删除。

设定方式:chmod o+t   dir

                    chmod 1xxx dir

玩转Linux小玩意儿。

2)sgid     强制位

作用:

        对文件:只针对二进制可执行文件。当文件上有sgid时,任何人执行此文件产生的进程都属于此文件的属组。

        对目录:当目录上有sgid时,任何人在此目录中建立的文件都属于目录的属组。

设定方式:chmod g+s  file|dir

                    chmod 2xxx file|dir

玩转Linux小玩意儿。

3)suid    冒险位

作用:

        只针对二进制可执行文件。当文件上有suid时,任何人执行此文件产生的进程都属于此文件的属主。

设定方式:chmod u+s  file

                    chmod 4xxx file

玩转Linux小玩意儿。

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权限

玩转Linux小玩意儿。

4)mask值

在权限列表中mask值表示能给用户赋予(能生效)的最大权力值;

当用chmod减小开启acl的文件权限时,mask值会发生变化;

chmod g-w file                                                           查看当g(属组)减掉w(写权限)时的mask值;

玩转Linux小玩意儿。

setfacl -m m:rwx file                                                  恢复mask值;

玩转Linux小玩意儿。

setfacl -m d:u:student:rwx /root/Desktop/anan/       acl默认权限只针对目录设定;

玩转Linux小玩意儿。

"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)

玩转Linux小玩意儿。

  • 进程的优先级(-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)

玩转Linux小玩意儿。

[4]在启动时就设定好优先级(指定某个优先级开启进程):

nice -n 优先级数字 进程名称

nice -n -13 vim &(开启vim并且指定程序优先级为-13)(&意思为让它在后台运行)

玩转Linux小玩意儿。

[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;

玩转Linux小玩意儿。

2.将westosX_fileY的文件均移动到/tmp目录下;

玩转Linux小玩意儿。

3.复制/etc/group文件到/mnt;

1)vim编辑该文件,复制前三行,粘贴到第5行

2)剪贴第5行,粘贴到最后一行

3)删除倒数第三行

4)在3-10行的最开始批量添加root单词

5)在左右分屏的情况下,将5-10行中的root替换为kiosk

6)退出左右分屏,在上下分屏的情况下替换全文中的kiosk为student

4.配置vim,使其在编辑文件时拥有以下功能:显示行号、鼠标可以操控光标位置;

玩转Linux小玩意儿。

玩转Linux小玩意儿。

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;

玩转Linux小玩意儿。

6.(密码管理)某管理员建立一用来管理帐号的用户admin,清满足以下条件:

1)uid=7777,gid=7777,用户描述为“系统管理员”;

2)新建用户组bank1,bank2,是新建的用户组为admin用户的附加组;

3)设置admin用户的密码为“adminpassword”;

4)修改密码使用天数为0,使该用户首次登陆必须修改密码;

玩转Linux小玩意儿。

7.创建一公共目录/pubdir,使得所有用户均可向该目录写入内容,但只能删除属于自己的文件或目录;

玩转Linux小玩意儿。

8.显示cpu使用量排在前5的pid,并重定向到文件/mnt/pidfile中;

玩转Linux小玩意儿。

注意:

修改用户家目录用-md,因为-d只是更改了家目录的指向。

添加用户附加组,若想同时添加两个必须-aG。

 

一.ip地址

1.查看当前计算机ip地址:

ip addr show(红帽7以后版本推荐)

ifconfig玩转Linux小玩意儿。

2.更改虚拟机ip:

输入nm-connection-editor

玩转Linux小玩意儿。

敲回车

玩转Linux小玩意儿。

点击System eth0,然后点击Delete。之后add。

玩转Linux小玩意儿。

点击Create。

玩转Linux小玩意儿。

设置如图。

玩转Linux小玩意儿。

设置如图,然后点击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     显示系统中的进程树

玩转Linux小玩意儿。

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文件

最后关闭当前终端再次打开就好啦。

玩转Linux小玩意儿。
 

六.sshd服务

1.sshd简介

    可以通过网络在主机中开启shell的服务

客户端软件:ssh

连接方式:    ssh [email protected]      文本模式的连接

                      ssh -X [email protected] 可以在连接成功后打开图形

tip:在闲暇时,尝试用物理机输入ssh -X [email protected]隔壁机ip号,然后cheese,打开隔壁机摄像头,得到画面如下:

玩转Linux小玩意儿。

哈哈哈,美滋滋。。。

注意:第一次连接陌生主机时要建立认证文件,会询问是否建立,需要输入yes,再次连接此主机时,因为已经生成~/.ssh/know_hosts,则不会再次询问。

2.远程复制:

scp file [email protected]:dir      上传(dir必须为绝对路径)

玩转Linux小玩意儿。

scp [email protected]:file dir   下载(file必须为绝对路径)

玩转Linux小玩意儿。

scp -rp dir [email protected]:dir

玩转Linux小玩意儿。

scp -rp [email protected]:dir dir(-r表示递归,-p表示保留原有的权限)

玩转Linux小玩意儿。

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时不需要再次输入密码。

整个过程如图:

玩转Linux小玩意儿。

玩转Linux小玩意儿。

玩转Linux小玩意儿。

 

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重启服务

玩转Linux小玩意儿。

二.添加sshd登陆信息

vim /etc/motd  编辑的文件内容,就是其他用户登陆后的信息显示。

玩转Linux小玩意儿。

三.用户的登陆审计

w        查看正在使用当前系统的用户

   -f     查看使用来源(显示的是hostname)(前提是得有本地解析,vim /etc/hosts)

   -i     显示ip(显示ip地址)

玩转Linux小玩意儿。

last    查看使用过并退出的用户信息

玩转Linux小玩意儿。

lastb  试图登陆但没成功的用户

实验过程中,我们将server中的锁先删除掉,然后用client密码连接server,我们三次密码输入错入。然后在server中lastb,查看命令结果。

玩转Linux小玩意儿。

四.文件在系统中的传输

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(字符设备)

玩转Linux小玩意儿。

五.打包和压缩

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