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

2025-11-07 11:52:52 3d世界杯

一、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个段位,每个段位用冒号分隔

用户名:也称为登录名,在系统内用户名具有唯一性密码:存放加密的密码,显示的是一个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个段位,每个段位之间用冒号分隔

用户名:这里的用户名和/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]

usermod命令用于修改用户帐号 usermod-u[uid]-d[homepath]-G[groupname]-s[shell][username]

userdel命令用于删除用户帐号 userdel-r[username]

参数说明:

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

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

id命令用于显示用户的ID,以及所属群组的IDid[username]

id-g[username]

二、Linux系统权限管理

Linux系统中规定了3种不同类型的用户权限:文件属主(user)同组用户(group)可以访问系统的其他用户(others)

访问权限规定3种访问文件或目录的方式:读(r)

写(w)

执行(x)

-代表没有权限

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

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

operator 的符号模式表:

permission 的符号模式表:

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

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

3.1 systemd

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

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

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]#查看服务是否开机自启动

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

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

在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

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

目录中包含的文件及其权限

SSH无密码访问

authorized_keys记录公钥文件的信息

id_rsa.pub公钥文件

id_rsa私钥文件

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

场景:

用户A需要把自己家目录下的某个文件或者某个目录共享给用户B

为了方便他把自己家目录的权限设置成了777

设置完成后,用户A突然发现自己提交的作业无法正常运算了原因:

SSH无密码访问失效了

因为SSH使用秘钥的过程中会检查秘钥文件和上级目录的权限,如果权限过于开放,SSH协议会判断存在不安全的行为,导致秘钥认证失败

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

问题

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

方法一

•在所有节点同步本地配置文件

将保存用户信息的配置文件定期同步到集群中的所有节点上

•优点:操作简单方便,不需要借助其他工具或者服务即可实现

•缺点:用户信息的更新无法实时同步到所有节点,需要手动触发同步操作,某些情况下可能会导致部分节点用户信息不一致

方法二

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

•工作原理与流程:

◉所有的用户信息都会通过本地用户文件录入到NIS数据库

◉NIS数据库仅保存在NIS服务器上,所有的客户端上均不存在用户信息

◉所有NIS服务器与客户端加入到同一个域(Domain)中

◉每当用户信息更新时(创建、删除、修改密码等等),管理员手动触发更新NIS数据库的操作

◉客户端会通过访问数据库的方式来获取最新的用户信息

• 优点:集中管理,实时同步

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

方法三

• 使用LDAP( Lightweight Directory Access Protocol )

管理用户信息

• LDAP又叫做轻型目录访问协议是一个开放的,中

立的,工业标准的应用协议,通过IP协议提供访

问控制和维护分布式信息的目录信息。

• AD、OpenLDAP都是基于LDAP协议的实现

• 工作原理和方式与NIS类似,也分为服务端和数据

端,但是存储用户信息的格式不一样

• 优点:对读性能大幅优化,用户信息扩展性好,

基于同一个协议的不同软件之间可以通过简单的

开发实现数据的兼容

• 缺点:操作方式比较复杂,对目录结构修改支持

有限

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

7.1 top

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

1、命令格式

top [参数]

2、命令功能

显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等。

3、命令参数

-c 显示完整的进程命令

-S 累积模式

-i<时间> 设置间隔时间

-u<用户名> 指定用户名

-p<进程号> 指定进程

-n<次数> 循环显示的次数

top -c

top -u

top -p

Tips:

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

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 # 查看进程并按内存使用大小排列

实例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

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

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

实例2:

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

查看test_sar二进制文件中的内容:

sar-u-ftest_sar

实例3:

内存分页监控

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

实例4:

I/O和传送速率监控:

每5s采样一次,连续采样10次,报告缓冲区的使用情况

实例5:

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

实例6:

统计网络设备通信失败信息:sar -n EDEV 1 1

实例7:

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

总结:

要判断系统瓶颈问题,有时需几个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'

衲锦是什么意思
【战网】如果直接使用国服战网客户端登录亚服