Linux系统之系统管理与维护(理论+实战)

一、Linux系统的用户管理

  • 在Linux系统中,由于角色不同,每个用户的权限和所能完成的任务各不相同。Linux用户分为如下的三类:
  • root用户在Linux系统中root用户也被称为超级管理用户,拥有的权限是最高的。在Linux系统中,每一个文件、目录和进程都是归属于某一个用户的,如果没有获得用户的许可,其它普通用户是无法进行操作的。但root用户不受限制。root用户还可以超越任何用户和用户组群对文件或目录进行读取、修改和删除。可以控制程序的执行、中止;可以对硬件设备进行添加、创建和删除等操作。
  • 普通用户这类用户能够登录系统,只能操作自己目录的内容,权限有限,这类用户都是系统管理员创建的。
  • 虚拟用户这类用户也被称为伪用户或假用户,这类用户不具备登录系统的能力,但却是系统运行不可缺少的用户。比如bin、daemon、adm、ftp、mail等,这类用户都是系统自身拥有的。
  • 用户的配置文件主要包括:

用户信息文件:/etc/passwd 

密码文件:/etc/shadow 

用户组文件:/etc/group

用户组密码文件:/etc/gshadow

  • Linux系统中用户的管理主要通过修改配置文件来实现的 
  • /etc/passwd文件是系统识别用户的一个文件,系统所有的用户都在这里有登录记
  • 在/etc/passwd文件中,每一行都表示一个用户信息,一行有7个段位,每个段位用冒号分隔

a65f107b9b2a4b5da9ac2eda6fc6c9d9.png

  • 用户名:也称为登录名,在系统内用户名具有唯一性
  • 密码:存放加密的密码,显示的是一个x ,密码被映射到/etc/shadow文件中
  • UID:系统用一个整数标识用户ID,每个用户的UID都是唯一的,root用户的UID是0,普通用户的UID从1000开始

  • 组群标识号:系统内用一个整数标识用户所属的组群ID号,每个组群的GID是唯一的
  • 用户名全称:用户名描述,可以不设置
  • 用户家目录:用户登录系统后首先进入的目录
  • 命令解释器:用户使用的shell类型
  • /etc/shadow文件是/etc/passwd的影子文件,这个文件并不由/etc/passwd文件产生,两个文件是对应互补的
  • shadow文件涉及内容包括被加密的密码以及其它/etc/passwd文件不能包括的信息,比如用户的有效期限等
  • /etc/shadow文件包括9个段位,每个段位之间用冒号分隔 

5c18136903ef420191a82fb398c01239.png

  • 用户名:这里的用户名和/etc/passwd中的用户名一致;
  • 密码:经过加密的密码
  • 上次修改秘密的时间:从1970年1月1日算起到最近以此修改密码的时间间隔(天数)
  • 两次修改密码间隔最少天数:如果设置为0,则禁用此功能。指用户可以更改密码的天数
  • 两次修改密码间隔最多的天数:如果设置为0,则禁用此功能,指用户必须更改密码的天数
  • 提前多少天警告用户密码将过期:用户登录系统后,系统登录程序提醒用户密码将要过期
  • 在密码过期后多少天禁用此用户:密码过期后系统不会让此用户登录
  • 用户过期日期:指定用户过期的天数(从1970年1月1日开始的天数),如果这个字段的数值为空,账户永久可用
  • 保留字段:目前为空,以备将来使用。
  • 具有某种共同特征的用户集合就是用户组
  • /etc/group 是用户组的配置文件,内容包括用户和用户组,并且能够显示用户属于哪个组群或哪几个组
  • 一个用户可以属于一个或多个不同的用户组,同一用户组群的用户具有相似的特征
  • 每个用户组群以添记录,一行有4个段位,每个段位用冒号分隔
  • 组群名:用户组群的名称
  • 群群密码:存放的是组群密码,显示为x,密码映射到/etc/gshadow文件中
  • 组群标识:系统内用一个整数ID号,每个组群的UDI都是唯一的,普通组群的GID从1000开始
  • 组群成员:属于这个组群的成员
  • useradd命令用于建立用户帐号

            useradd-d[homepath]-u[uid]-g[groupname]-s[shell][username] 

ddfff44b2b4541f0b9d0efdd0b992600.png

  • usermod命令用于修改用户帐号

            usermod-u[uid]-d[homepath]-G[groupname]-s[shell][username] 

86abd18c12014531b98d839f3c622dab.png

  • userdel命令用于删除用户帐号

                 userdel-r[username]

参数说明:

  •   -r 删除用户登入目录以及目录中所有文件 
  • groupadd命令用于创建一个新的用户组,新工作组的信息将被添加到系统文件

   groupadd-g [gid][groupname] 

487c297a51ca41beb73894c4d7b9bc75.png

  • groupdel命令用于删除一个用户组,若用户组中仍包括某些用户,则必须先删除这些用户后,才能删除用户组。

groupdel[groupname]

  • id命令用于显示用户的ID,以及所属群组的ID

id[username]
id-g[username]

e093eaafeb1942678be9342b32be8023.png

二、Linux系统权限管理 

  • Linux系统中规定了3种不同类型的用户权限:

文件属主(user)同组用户(group)可以访问系统的其他用户(others)

  • 访问权限规定3种访问文件或目录的方式:

读(r)
写(w)
执行(x)
-代表没有权限 

  • 第1列权限位一共10位
  • 第1位l代表链接d代表目录-代表文件
  • 第2-4位代表文件属主的权限
  • 第5-7位代表同组用户的权限
  • 第8-10位代表其他用户的权限

9de223df4ca947c09734a56d9be4a88c.png

  • chmod(英文全拼:change mode)命令是控制用户对文件的权限的命令
  • 只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式(八进制数字模式),符号模式指定文件的权限。
  • 符号模式
  • 使用符号模式可以设置多个项目:who(用户类型),operator(操作符)和permission(权限),每个项目的设置可以用逗号隔开。命令chmod将修改who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在who 的位置来说明 
  • who 的符号模式表所示: 

bd663f136d064f978fd5725a318b93cc.png

  • operator 的符号模式表: 

9ea43cdbb68844fb80ae40743e58afb2.png

  •  permission 的符号模式表:

446274c1f3124bab9543d87861343664.png

  •  绝对模式(八进制数字模式)
  • chmod命令可以使用八进制数来指定权限。文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。 

 f5e557e7a85a4bdea97cfa357a33045c.png

e2ba4e1a2ddd43db8cab3d57a5899db2.png

 三、Linux系统常用服务及配置

3.1 systemd 

  • systemd(system daemon)是Linux 系统工具,用来启动守护进程,现在成为大多数Linux发行版的标准配置
  • systemd取代了原有的initd,成为系统的第一个进程(PID 等于1),其他进程都是它的子进程

4b7decb24afb4197ad27055491f4cbde.png

  •  systemd的优点是功能强大,使用方便,缺点是体系庞大结构复杂。

f8d3379820c44f2681d6260c42c4f002.png

  • systemd包含了一组命令,涉及到系统管理的方方面面
  • systemctl是systemd的主命令,用于管理系统服务
  • 下面介绍几个常用的systemdctl命令的用法
systemctlstart[servicename]#启动系统服务
systemctlstop[servicename]#停止系统服务
systemctlrestart[servicename]#重启系统服务
systemctlstatus[servicename]#查看单个服务的状态
systemctllist-unit-files --type=service#列出所有服务
systemctlenable[servicename]#设置服务开机自动启动
systemctldisable[servicename]#禁止服务开机自动启动
systemctlis-active[servicename]#查看服务是否正常运行
systemctlis-failed[servicename]#查看服务是否处于启动失败状态
systemctlis-enabled[servicename]#查看服务是否开机自启动 

7343b11fff8e4643960eb9a5ee43702a.png

 四、Linux系统网络管理及配置

  • 网卡配置文件的路径/etc/sysconfig/network-scripts/ifcfg-xxx 

740982df5822422787bda6fe5e530141.png

  • 在CentOS7 / Redhat7中默认使用NetworkManager守护进程来监控和管理网络设置
  • nmcli是NetworkManager工具的命令行,自动把配置写到/etc/sysconfig/network-scripts目录下面
  • 下面简单介绍一些nmcli命令的用法: 
nmclidevice status # 展示简单信息
nmclidevice show # 详细的接口信息
nmcliconnection show # 详细的连接信息
nmclidevice connect/disconnectinterface-name # 启用/禁用网络接口
nmcliconnection up connection-name#激活连接
nmcliconnection add type ethernet con-name [connection-name] ifname[interface-name] ipv4.method manual ip4.addresses"[ipaddress][gatewayaddress]" #创建一个接口
nmcliconnectionmodify [connection-name] ipv4.addresses [ipaddress] # 修改一个接口

五、Linux系统的远程连接服务SSH

  • Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接。人们通常利用SSH来传输和远程执行命令。
  • ssh服务的配置文件路径/etc/ssh/sshd_config
其中比较关键的几个配置项:
Portxx#服务监听的端口
ListenAddressxxx.xxx.xxx.xxx#服务监听的地址
PermitRootLogin[yes|no]#是否允许root用户登录
PubkeyAuthentication[yes|no]#是否允许秘钥认证方式
AuthorizedKeysFile.ssh/authorized_keys#公钥信息存放文件

5.1 SSH无密码访问

SSH无密码访问
出于安全考虑用户登录操作系统需要做认证
认证的方式有很多种,其中比较典型的两种方式:
1、密码认证
2、秘钥认证
我们所说的SSH无密码访问并不是绕开操作系统的安全认证,而是改用一种比密码认证相对更加安全的方式秘钥认证进行访问

SSH无密码访问
秘钥文件的路径在用户家目录下的.ssh目录中~/.ssh

baaebe9e89634c97967364fd10f706f1.png

注意目录的权限是700,也就是说除了属主本身,任何其他用户都没有任何权限访问
目录中包含的文件及其权限

8545f8ad6bf44f10b99daf95e6b9f57f.png SSH无密码访问
authorized_keys记录公钥文件的信息
id_rsa.pub公钥文件
id_rsa私钥文件

505432f9e7d7496cb130f2545085287a.png

bc3085e9547a4615b003e8360d3610e8.png 3bcb86b79149400b921ee52af87ed26a.png

5.2 SSH无密码访问–常见问题 

场景:
用户A需要把自己家目录下的某个文件或者某个目录共享给用户B
为了方便他把自己家目录的权限设置成了777
设置完成后,用户A突然发现自己提交的作业无法正常运算了
原因:
SSH无密码访问失效了
因为SSH使用秘钥的过程中会检查秘钥文件和上级目录的权限,如果权限过于开放,SSH协议会判断存在不安全的行为,导致秘钥认证失败 

六、Linux系统的用户管理服务NIS&LDAP

问题
如果由多台服务器或者成百上千台服务器组成一个集群,这个集群中每个节点肯定都会安装操作系统,那么我们如何来管理集群中的用户信息呢?

fa3fcbd0a3de4dc0a95198f9a9446a42.png

方法一
•在所有节点同步本地配置文件
将保存用户信息的配置文件定期同步到集群中的所有节点上
•优点:操作简单方便,不需要借助其他工具或者服务即可实现
•缺点:用户信息的更新无法实时同步到所有节点,需要手动触发同步操作,某些情况下可能会导致部分节点用户信息不一致 

方法二
•使用NIS服务管理集群中的用户

•工作原理与流程:

◉所有的用户信息都会通过本地用户文件录入到NIS数据库
◉NIS数据库仅保存在NIS服务器上,所有的客户端上均不存在用户信息
◉所有NIS服务器与客户端加入到同一个域(Domain)中
◉每当用户信息更新时(创建、删除、修改密码等等),管理员手动触发更新NIS数据库的操作
◉客户端会通过访问数据库的方式来获取最新的用户信息 

686a1a01115b4048aa67422a8d700d7e.png

 •  优点:集中管理,实时同步
 •  缺点:超大规模下性能可能存在瓶颈,不支持用户信息的扩展,无法直接与AD集成

方法三
• 使用LDAP( Lightweight Directory Access Protocol )
管理用户信息
• LDAP又叫做轻型目录访问协议是一个开放的,中
立的,工业标准的应用协议,通过IP协议提供访
问控制和维护分布式信息的目录信息。
• AD、OpenLDAP都是基于LDAP协议的实现
• 工作原理和方式与NIS类似,也分为服务端和数据
端,但是存储用户信息的格式不一样
• 优点:对读性能大幅优化,用户信息扩展性好,
基于同一个协议的不同软件之间可以通过简单的
开发实现数据的兼容
• 缺点:操作方式比较复杂,对目录结构修改支持
有限 

8fb63346ad9d4ccd899fc0b7f1699d01.png

七、Linux系统管理维护常用命令

7.1 top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。比如CPU、内存的使用情况。默认进入top时,各进程是按照CPU的占用量来排序的。

5b26d33979cc4bdf9981e73d69f0ae1f.png 1、命令格式
top [参数]
2、命令功能
显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等。
3、命令参数
-c 显示完整的进程命令
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数

top -c

a01d22bf291541ba883f9bb819386520.png top -u

72ff52c3aac446878685bf945d025bff.png top -p

d9e1b3a43b544b888c38c035fe88b3be.png Tips:
在top基本视图中,按键盘数字“1”可以监控每个逻辑CPU的状况:

e4021531ee004d038bd9f87edc8420f3.png 7.2 ps

ps命令用于报告当前系统的进程状态。ps命令能够支持查询的系统类型非常多。
实例1:

ps axo pid,comm,pcpu # 查看进程的PID、名称以及CPU 占用率
ps aux | sort -rnk 4 # 按内存资源的使用量对进程进行排序
ps aux | sort -nk 3 # 按CPU 资源的使用量对进程进行排序
ps -A # 显示所有进程信息
ps -u root # 显示指定用户信息
ps -efL # 查看线程数
ps -e -o "%C : %p :%z : %a"|sort -k5 -nr # 查看进程并按内存使用大小排列

2ae095391caf4864972ce17905cb11b2.png 518451a3617f4bd59bc0e26a37ca2f1d.png

 实例2:

ps -ef # 显示所有进程信息,连同命令行
ps -ef | grep ssh # ps 与grep 常用组合用法,查找特定进程
ps -C nginx # 通过名字或命令搜索进程
ps aux --sort=-pcpu,+pmem # CPU或者内存进行排序,-降序,+升序
ps -f --forest -C nginx # 用树的风格显示进程的层次关系
ps -o pid,uname,comm -C nginx # 显示一个父进程的子进程
ps -e -o pid,comm,etime # 显示进程运行的时间
ps -aux | grep named # 查看named进程详细信息
ps -o command -p 91730 | sed -n 2p # 通过进程id获取服务名称

 7.3 sar

sar命令是Linux下系统运行统计工具,它将指定的系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计数器和比例来表达系统的当前运行状态。

语法
sar(选项)(参数)
选项
-A:显示所有的报告信息;
-b:显示I/O速率;
-B:显示换页状态;
-c:显示进程创建活动;
-d:显示每个块设备的状态;
-e:设置显示报告的结束时间;
-f:从指定文件提取报告; 

-i:设状态信息刷新的间隔时间;
-n: 报告网络统计信息。
-P:报告每个CPU的状态;
-R:显示内存状态;
-u:显示CPU利用率;
-v:显示索引节点,文件和其他内核表的状态;
-w:显示交换分区状态;
-x:显示给定进程的状态。 

实例1
查看内存和交换空间的使用率 

bd2436cfdfcf43a9972006320ede4103.png kbmemfree与kbmemused字段分别显示内存的未使用与已使用空间,后面跟着的是已使用空间的百分比(%memused字段)。kbbuffers与kbcached字段分别显示缓冲区与系统全域的数据存取量,单位为KB。

实例2:
每5s采样一次,连续采样3次,观察CPU使用情况,并将采样结果以二进制形式存入test_sar中。 

29d0857da87d45d48962b0770d525b99.png

查看test_sar二进制文件中的内容:
sar-u-ftest_sar 

实例3:
内存分页监控
每10s采样一次,连续采样3次,监控内存分页 

ecebb8cc13314f01aebd16ca1640f7dc.png 实例4:
I/O和传送速率监控:
每5s采样一次,连续采样10次,报告缓冲区的使用情况

 ca436aa7fb13404f87058e5b955f0f5f.png

实例5:
进程队列长度和平均负载状态监控:每5s采样一次,连续采样10次,监控进程队列长度和平均负载状态。 

cc37ccdd0dfc4ebc8b4c22c891a0f3d0.png 实例6:
统计网络设备通信失败信息:sar -n EDEV 1 1

 d3c3352c7a2147028a29677ec429377b.png

 实例7:
统计socket连接信息:sar -n SOCK 1 1

48569c830977465796309931fcfd67f7.png 总结:
要判断系统瓶颈问题,有时需几个sar命令选项结合起来:
怀疑CPU存在瓶颈,可用sar-u和sar-q等来查看
怀疑内存存在瓶颈,可用sar-B、sar-r和sar-W等来查看
怀疑I/O存在瓶颈,可用sar-b、sar-u和sar-d等来查看

7.4 netstat

netstat
查看Linux中网络系统状态信息
语法
netstat 选项
选项
-a或--all:显示所有连线中的Socket;
-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;
-c或--continuous:持续列出网络状态;
-C或--cache:显示路由器配置的快取信息;
-e或--extend:显示网络其他相关信息;
-F或--fib:显示FIB;
-g或--groups:显示多重广播功能群组组员名单; 

 -t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-v或--verbose:显示指令执行过程;
-V或--version:显示版本信息;
-w或--raw:显示RAW传输协议的连线状况;
-x或--unix:此参数的效果和指定"-A unix"参数相同;
--ip或--inet:此参数的效果和指定"-A inet"参数相同。

实例1:

列出所有端口(包括监听和未监听的)
netstat -a #列出所有端口
netstat -at #列出所有tcp端口
netstat -au #列出所有udp端口
列出所有处于监听状态的Sockets
netstat -l #只显示监听端口
netstat -lt #只列出所有监听tcp 端口
netstat -lu #只列出所有监听udp 端口
netstat -lx #只列出所有监听UNIX 端口

实例2: 

显示每个协议的统计信息
netstat -s 显示所有端口的统计信息
netstat -st 显示TCP端口的统计信息
netstat -su 显示UDP端口的统计信息

实例3: 

 查看程序运行端口及端口占用:netstat -anpt | grep ':22'

e42b764131da4c1ea4deda586c22b8ab.png d6619f258b3647bd8ce18f7ac2a630c6.png

  • 29
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值