简介:面向服务器运维人员的麒麟操作系统问题排查手册,内容围绕银河麒麟高级服务器操作系统 V10 SP2展开,覆盖从系统安装、本地源配置到网络服务、存储与安全加固的常见场景。文档由一线运维工程师整理,操作步骤与排错思路均以实际环境验证过,适合需要快速上手麒麟服务器或处理生产故障的中级运维工程师参考。资源为单个PDF文档,约2.76MB,集中汇总了单用户模式进入、yum源搭建、FTP/NFS/时间同步、iSCSI、KVM虚拟化、bond网卡绑定、VNC、软RAID、防火墙配置、系统激活、忘记密码处理、SSH连接异常及图形界面闪退等高频问题。目前已有634人学习下载。手册目录按解决方案与问题处理两大模块编排,每项均给出可直接落地的命令与排查逻辑,可帮助读者减少在国产化服务器运维中的试错成本,快速定位并解决实际故障。
1. 麒麟V10 SP2运维手册:内网环境下的一份现成答案
刚给客户装完银河麒麟高级服务器操作系统V10 SP2,电话就追过来了:yum装不了包、NTP怎么都对不上、SSH被拒、还有人把root密码改了然后忘了。这种时候手里没有一份照着敲就能行的清单,就得自己一个个试,运气好半小时,运气不好半天就耗在“Could not resolve host”上。这份《银河麒麟高级服务器操作系统V10 SP2常见问题手册》是乙方运维给甲方整理的交付文档,覆盖单用户模式、本地yum源、ftp、nfs、ntp、kvm、bond、vnc、iscsi、防火墙等高频操作,后面还有激活、忘记密码、SSH连接、图形界面闪退等故障排查。适合内网私有化交付、国产化替代项目的运维工程师,也适合刚接触麒麟系统、需要快速交付的实施人员。
2. 本地yum源与时间同步:file/http源、ntp与chrony的落地差异
2.1 内网环境为什么必须先解决yum源
麒麟V10 SP2装完默认的yum源指向外网,这在有外网的测试环境没问题,一旦进了客户内网,yum install直接给你报“Could not resolve host”。手册把本地yum源放在解决方案的第一位,这不是随意排序,而是后面几乎所有装包的步骤都依赖它。比如装httpd、装vsftpd、装nfs-utils,全都要先过yum这一关。
常见做法是准备一份与当前系统严格对应的ISO镜像,然后在此基础上搭源。手册提供了两种形态:file本地源和http源。file源只对当前服务器生效,适合单机交付;http源把镜像挂到httpd目录下,同网段所有服务器都能共享。两个方案不冲突——先按file源把httpd装上,再切到http源给整个网段用,这是内网项目最常见的推进顺序。
2.2 file源:单机离线安装的稳妥做法
file源的思路很简单:把ISO挂载后完整拷到本地目录,再让yum指向这个目录。注意手册特意强调了“拷贝而不是直接挂载”,原因是挂载关系在服务器重启后会失效,而拷贝出来的目录不依赖挂载状态,重启后依然可用。我第一次搭源时偷懒直接挂载用,客户一重启,所有yum操作全部报错,这个坑后面细说。
# mount Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso /mnt # mkdir /rpm # cp -r /mnt/* /rpm/mount命令把ISO文件挂载到/mnt,mkdir创建目标目录,cp -r把镜像内容完整复制过去。拷完后建议马上验证一下/rpm目录下有repodata文件夹,没有这个文件夹,yum会报“repodata cannot be found”。
接下来编辑repo配置文件:
# cd /etc/yum.repo.d # mkdir bak # mv *.repo bak # vim my.repo[localrepo] name=localrepo baseurl=file:///rpm gpgcheck=0 enable=1这里有几个关键点。baseurl指向拷贝的目录,file:///后面跟绝对路径;gpgcheck=0是跳过GPG签名校验,内网自建源一般这么设;enable=1在yum里会被正确解析成enabled=1,只是习惯写法不同。配置文件后缀必须是.repo,否则yum不会识别。默认的外网源配置文件放到bak目录,是为了让yum不再尝试连接外网,否则每次yum操作都会卡在超时上。
# yum clean all # yum repolist # yum install httpd -yyum clean all清掉旧缓存,repolist确认新源被识别,最后装一个httpd来验证源可用。repolist输出里能看到localrepo这个仓库,并且packages数量大于零,就说明源没问题。
2.3 http源:让整个网段共享一个仓库
单机场景file源够用,但项目现场往往是几十台服务器,每台都拷一份ISO不现实。http源的意义就在这:一台服务器提供仓库,其他机器通过http访问。手册的做法是先按2.2的file源装上httpd,再把镜像挂到httpd的根目录下。
# mount Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso /mnt # mkdir -p /var/www/html/repo # cp -r /mnt/* /var/www/html/repo/ # systemctl restart httpdhttpd的默认根目录是/var/www/html,镜像内容放在repo子目录,浏览器访问http://ip/repo/能列出文件列表就说明服务正常。这里要留意selinux,如果开着selinux并且是enforcing状态,httpd可能读不了新拷进去的文件,报403。手册在ftp章节明确写了“关闭selinux”,其实http源一样受影响。排查403时先看selinux状态。
防火墙有两种处理方式,要么直接关闭firewalld,要么单独放行80端口。生产环境建议放行端口而不是关防火墙:
# firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --reload--permanent参数让规则持久化,--reload让规则立即生效。少了--permanent的话,重启后端口放行就丢了,这是很容易犯的错。
客户端的配置和服务端类似,把baseurl指到服务端的http地址即可:
[localrepo] name=localrepo baseurl=http://192.168.1.21/repo/ gpgcheck=0 enable=1客户端的防火墙要能访问服务端的80端口,跨网段场景还要确认中间链路没拦。http源搭好后,同一网段其他服务器只需在/etc/yum.repo.d下写好这个repo文件,yum clean all再repolist,就能直接用,省去每台机器拷贝镜像的重复劳动。
2.4 时间同步:ntp、chrony、crond+ntpdate三选一
时间同步在等保测评和证书校验场景几乎是必查项,麒麟V10 SP2提供了三种方式。ntp是传统方案,chrony是sp2自带的现代方案,crond+ntpdate适合需要精确控制同步周期的场景。三者不冲突,实际项目里我一般选chrony,因为它是sp2默认带的服务,少装一个依赖。
先看ntp方式的配置:
# yum install -y ntp ntpdate # vim /etc/ntp.conf # systemctl restart ntpd服务端配置的关键是把server字段指向上游时间服务器,注释掉默认的pool。注意手册里写的是/etc/ntpd.conf,实际路径是/etc/ntp.conf,这里容易踩坑——用vim编辑不存在的文件,保存后ntpd启动时根本不会加载,时间同步自然失败。这是我实际遇到过的问题,后面排查章节再展开。
客户端配置:
# vim /etc/ntp.conf # systemctl restart ntpd # ntpq -pntpq -p输出的列表前面有号,表示当前同步的服务器,这个符号是判断同步是否成功的核心指标。如果等了几分钟还是没出现,大概率是udp 123端口被防火墙拦了,放行端口再试。
chrony方式配置更简洁:
# yum install chrony -y # vim /etc/chrony.conf # systemctl restart chronyd # chronyc sources -vchronyc sources -v输出中^ *开头表示同步正常,^?表示不可达。服务端和客户端的区别就在于chrony.conf里server指向谁——服务端指向上游,客户端指向服务端。
第三种方式适合已有ntp服务端、但需要自定义同步周期的场景:
# ntpdate 192.168.1.150 # vim /etc/crontab*/10 * * * * /usr/sbin/ntpdate 192.168.1.21 && hwclock -wntpdate做一次性强制同步,hwclock -w把系统时间写回硬件时钟,避免重启后时间回跳。cron表达式*/10表示每10分钟执行一次,这个频率在生产环境够用,也不需要太高。hwclock -w这步很多人会漏,只同步系统时间不同步硬件时间,重启后时间又回去了,等于白做。
2.5 翻车记录:repo文件不生效、ntp路径错、防火墙规则丢失
配置yum源和时间同步时最容易翻车的三个细节。第一,repo文件改了不生效——确认后缀是.repo,确认bak目录里没有残留的repo文件,确认baseurl路径真实存在且包含repodata。第二,ntp的配置文件路径写错——手册原文是/etc/ntpd.conf,实际系统是/etc/ntp.conf,建议先ls确认再改,编辑不存在的文件保存后不会报错,但服务重启时静默跳过。第三,防火墙放行端口忘了加--permanent——firewall-cmd默认只对当前会话生效,重启后规则丢失,测试时通了,客户重启后又不通了,这类问题最耗时间。我的习惯是改完配置后强制走一遍systemctl restart,并且看服务状态,很多问题在restart时就会暴露。
3. 文件共享与远程访问:ftp、nfs与vnc的完整配置
3.1 ftp:vsftpd最小可用配置与权限陷阱
ftp在内网文件分发、日志收集场景里依然常用。麒麟V10 SP2装vsftpd很简单,一条yum命令的事,但装完配置才是重点。
# yum install vsftpd -y # systemctl start vsftpd # systemctl enable vsftpd # systemctl stop firewalld先关防火墙是手册的步骤,但生产环境建议改成放行21端口,别整体关防火墙。selinux也建议确认一下状态,手册明确写了“关闭selinux”,这个在麒麟上确实省心,但如果你不想全局关,可以只调vsftpd相关的布尔值。
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak # vim /etc/vsftpd/vsftpd.conf在配置文件末尾追加自定义存储路径,然后创建ftp专用用户:
# useradd -d /data/ftp/ -s /sbin/nologin user # passwd user # chown -R user:user /data/* # chown -R user:user /data # chmod -R 777 /data/* # chmod -R 777 /data # systemctl restart vsftpduseradd -d指定了用户的home目录,-s /sbin/nologin是关键——这个用户不能登录shell,只能用来做ftp访问,降低了被提权的风险。chown和chmod把目录权限交给user并放开读写,这里用了777,内网低安全要求的场景能跑,但如果有等保要求,建议收紧到750加属主调整。vsftpd的默认配置要求本地用户只能访问自己的home目录,所以/data/ftp这个目录的属主必须是user,否则登录后看到的是空目录或者直接报500。
客户端用Filezilla连上来,端口默认21。如果连接时卡在“读取目录列表失败”,八成是防火墙拦了20/21端口,或者selinux没关。另一个常见坑是用户目录权限不对,导致登录成功后目录列表为空。
3.2 nfs:服务端导出与客户端自动挂载
nfs是内网服务器之间共享目录的常见方案,比ftp更适合做后端存储交互,比如应用集群共享上传目录。手册的nfs配置分服务端和客户端两步,先看服务端。
# yum install -y nfs-utils # yum install -y rpcbindnfs-utils提供nfs服务本身,rpcbind负责rpc端口映射。新版nfs-utils会依赖rpcbind,但单独装一条命令更稳妥,尤其在内网源刚搭好的场景下。
# mkdir /share # chmod 777 -R /share # vim /etc/exportsexports文件是nfs的核心配置:
/share *(rw,no_root_squash,no_all_squash,sync)这一行要拆开讲。/share是共享出去的目录,*表示允许所有网段访问,生产环境建议写成具体网段比如192.168.1.0/24。rw表示读写,no_root_squash表示root用户不映射为匿名用户,这在内网可信环境是常见设置,但如果共享目录对接的是不可信网段,建议去掉这个选项。sync表示同步写,数据可靠性更好。
# exportfs -r # systemctl enable rpcbind # systemctl start rpcbind # systemctl enable nfs # systemctl start nfs # showmount -e localhostexportfs -r让exports文件的修改立即生效,不加-r重启nfs服务也可以,但生产环境用-r不中断服务更稳妥。showmount -e localhost能看到自己导出的目录列表,这是验证服务端配置的第一道检查。如果showmount输出为空,检查nfs服务和rpcbind是否都起来了。
客户端配置:
# showmount -e 服务端ip # mkdir /share # mount -t nfs 服务端ip:/share /shareshowmount -e先确认能看到服务端导出的目录,这一步不通就排查网络和rpcbind。mount -t nfs指定文件系统类型为nfs,后面是服务端导出的路径和本地挂载点。mount成功后再加自动挂载,不然重启就丢。
# vim /etc/fstab服务端ip:/share /share nfs defaults 0 0fstab里加这一行,系统每次启动都会自动挂载。mount -a可以手动触发fstab加载,验证这条配置有没有写错。注意结尾两个0,第一个是dump备份标志,第二个是fsck检查顺序,nfs不需要这两项,填0就行。fstab写错会导致开机进入emergency模式,所以写完一定要用mount -a验证。
3.3 vnc:从安装到开机自启的两种路径
vnc的需求场景很典型:麒麟服务器装了图形界面,但机房没有显示器,远程需要桌面操作。vnc服务端在麒麟上用的是tigervnc。
# yum install tigervnc tigervnc-server -y # vncserver第一次执行vncserver会提示设置密码,这个密码是vnc会话的访问密码,只对当前用户生效。设置完会在用户home目录下生成.vnc目录。vncserver -list可以查看当前有几个会话在跑,:1表示端口5901,:2表示5902,以此类推。这里有个常见误区:vnc监听的端口是5900+N,不是5980也不是6000。
# vncserver -kill :1 # vncserver :1 -geometry 1920x1080-geometry参数指定分辨率,1920x1080是手册给的典型值。如果现场显示器分辨率特殊,这个值可改,但要注意网络带宽。kill命令的语法是vncserver -kill :1,这里的:1要和-list输出里的编号一致,杀错会话会导致其他用户正在看的桌面直接断开。
客户端访问的地址是服务器ip:5901,端口就是会话编号加5900。防火墙需要放行这个端口:
# firewall-cmd --zone=public --add-port=5901/tcp --permanent # firewall-cmd --reload开机自启方面,手册给了两种方式。方式一把vncserver纳入systemd管理,enable即可。方式二写进rc.local:
# vim /etc/rc.d/rc.localsu - root -c 'vncserver :1 -geometry 1920x1080'# chmod 755 /etc/rc.d/rc.local # vncserver -kill :1 # systemctl restart rc-local.servicerc.local在麒麟上默认可能没有执行权限,chmod 755是必须的。su - root -c保证vncserver以root身份运行。最后重启rc-local.service来验证脚本没有语法错误,这一步很多人会跳过,结果客户重启后vnc起不来,只能再跑一趟现场。
3.4 端口放行与selinux:最容易玄学的部分
这章三个服务,ftp的21端口、nfs的rpcbind端口、vnc的5901端口,都涉及防火墙。手册在多个章节都写了“关闭防火墙”或“关闭selinux”,这在内网项目里是最快能跑通的方式,但交付到等保环境就得换成精确放行。我的习惯是:开发测试阶段直接关,部署生产前把防火墙打开、逐个端口放行、selinux先设成permissive测试,最后再enforcing。直接关selinux省时间但会埋雷,特别是客户后续自己审计时。
nfs的端口放行比ftp和vnc更复杂,因为rpcbind用的是111端口,mountd用的是随机端口。生产环境建议固定mountd端口,在/etc/sysconfig/nfs里配置MOUNTD_PORT、RQUOTAD_PORT等变量,然后防火墙只放行这些固定端口。这个配置手册没细写,但内网nfs真正上生产时基本都会遇到。
4. 网络高可用与虚拟化:bond绑定和kvm安装
4.1 bond模式怎么选
bond是把多块物理网卡聚合成一块逻辑网卡,提供链路冗余或带宽叠加。麒麟V10 SP2的bond配置模块里,最常见的是mode 1(active-backup)和mode 4(802.3ad)。mode 1是一主一备,一块网卡工作,另一块待命,故障时自动切换;mode 4需要交换机支持LACP协议,适合需要带宽聚合的场景,配置也最复杂。
实际项目中我推荐先摸清现场交换机的配置再选模式。如果交换机是傻瓜交换机,没开LACP,你配mode 4上去,bond的状态是down的,网络直接不通。这个血泪经验后面细说。绝大多数业务场景,mode 1就够了,链路冗余的意义大于带宽叠加。
4.2 图形化配置bond:nmcli之外的一条路
不想在命令行折腾nmcli,直接操作桌面网络配置也能配。先在右下角网络图标进“编辑连接”,把物理网卡对应的连接配置删掉——如果网卡本身有配置文件,bond创建后会冲突。
然后点右下角的“+”号新建配置,类型选“绑定”,配置bond名称并选择模式。之后给bond添加物理网卡,连接类型选“以太网”,自定义连接名称,选择网卡设备,例如ens33。最后配置IPV4地址,保存退出。整个过程顺序对了,基本不会出问题。
图形化配置有几个容易翻车的细节。物理网卡要先删配置再添到bond里,否则bond激活时网卡被占用;bond名称别用中文,用bond0这种规范命名;模式一定要确认,mode 4在交换机不支持时是致命的。图形化配置的优点是直观,缺点是批量交付时不方便,几十台机器一台台点画面太慢。
4.3 kvm安装前必须做的两个检查
kvm是麒麟上跑虚拟机的主要方案。装kvm之前,有两件事必须先确认。第一是CPU是否支持虚拟化,第二是系统的kvm模块是否加载。
# egrep -c '(vmx|svm)' /proc/cpuinfo输出结果大于0代表CPU支持虚拟化。vmx是Intel的虚拟化标志,svm是AMD的。如果输出是0,先到BIOS里检查VT-x或AMD-V是否被禁用。很多服务器出厂默认关着虚拟化,不先检查这个,后面virt-install创建虚机大概率报错。
# yum install libvirt* virt-manager qemu -y # systemctl start libvirtdlibvirt*表示安装所有libvirt相关组件,virt-manager是图形化管理工具,qemu是模拟器本身。惯用法是一次装齐,省得后面缺组件再来补。systemctl start libvirtd启动libvirtd守护进程,这是所有虚拟机管理的核心服务,它没启动,virsh命令会直接报“Failed to connect socket”。
检查kvm模块是否加载:
# lsmod | grep kvm如果输出为空,尝试modprobe kvm_intel或kvm_amd加载模块。加载不了就回到BIOS检查虚拟化开关。这条检查容易被忽略,但它是kvm能否正常运行的大前提。
4.4 virt-install建虚拟机:参数与最小案例
virt-install是命令行创建虚拟机的工具,适合远程交付。手册给出了一个典型命令:
# virsh define /etc/libvirt/qemu/vm2.xml # virt-install --connect qemu:///system --virt-type kvm --name vm1 --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/vm1.img,size=8 --cdrom /root/xxxx.iso --os-variant rhel7virsh define加载xml配置文件,这个文件定义了虚拟机的硬件描述。virt-install参数逐个说明:--connect指定连接方式,qemu:///system是本地系统模式;--name是虚拟机名称;--ram是内存大小,单位MB,2048就是2G;--vcpus是虚拟CPU数量;--disk指定磁盘路径和大小,path是镜像文件路径,size单位是GB;--cdrom指定安装ISO镜像;--os-variant告诉libvirt用哪套虚拟化优化参数,rhel7兼容麒麟V10的优化配置。
创建完成后用virsh list --all查看虚拟机状态,virsh start vm1启动虚拟机。如果启动报错,首先看/var/log/libvirt/qemu/下的日志,最常见的错误是镜像目录权限不对,libvirtd运行用户没有写权限。
4.5 iscsi存储:targetcli的最小落地
iscsi的场景通常是利旧存储或服务器自身硬盘不够用,通过网络把另一台机器的块设备挂过来。麒麟上配置iscsi服务端用targetcli,客户端的命令是iscsiadm。
# yum install targetcli -y # targetclitargetcli进入交互界面,创建backstore、配置iqn、绑定acl,交互命令较多但逻辑清晰。客户端这边先安装iscsi-initiator-utils:
# yum install iscsi-initiator-utils -y # iscsiadm -m discovery -t sendtargets -p 服务端ip # iscsiadm -m node -L all第一条命令发现服务端target,第二条命令登录所有可用节点。登录成功后lsblk就能看到新的磁盘设备。iscsi的坑主要在两端:服务端targetcli的acl没配好,客户端连上但看不到lun;客户端的iscsi服务没启动,discovery能过但login失败。内网环境建议先用tcpdump确认3260端口是否通。
5. 常见问题排查与避坑:激活、SSH、桌面闪退与网络异常
5.1 激活与重装:激活状态到底怎么查
麒麟系统的激活状态直接影响yum源和系统更新的可用性。重装系统后,之前的激活是否依然有效,手册明确写了:系统已经激活,重装之后还需要再次激活。激活文件保存在系统盘的特殊分区中,重装会清掉这部分数据,所以重装后必须重新激活。
查看激活状态和系统版本:
# cat /etc/kylin-release # kylin-activation --statuskylin-activation命令不是每个版本都有,如果命令不存在,可以在系统设置里查找激活管理入口。内网环境激活通常需要离线license或激活码,交付前要确认激活介质是否到位,不然客户那边系统装完但没法正常更新。
5.2 密码输错次数过多被锁定:PAM配置救急
现象:连续输错密码后,即使在界面输对密码也无法登录,提示“账户已被锁定”。
原因:麒麟默认的PAM配置启用了pam_faillock模块,累计失败次数达到阈值后锁定账户。
解决:重启进入单用户模式,或者在有root权限时清掉锁定的标记:
# faillock --user username # faillock --user username --reset如果连root都被锁了,只能进单用户模式重置。进单用户的方法在第6章详细讲。生产环境建议保留锁定功能,但把锁定时长调短一些,避免误锁后长时间无法登录。
5.3 SSH连接问题:从服务端日志倒推
现象:SSH客户端连接时提示“Connection refused”或“Permission denied”。
原因:Connection refused通常是sshd服务没启动或者端口被防火墙拦了;Permission denied一般是密钥或密码认证失败。
解决:
# systemctl status sshd # tail -100 /var/log/secure | grep sshd/var/log/secure是麒麟记录认证日志的主文件,Permission denied后面会跟着具体的认证方式,比如password或publickey。如果日志显示“Connection closed by authenticating user”,一般是密钥文件权限太开放,把.ssh目录权限改成700、authorized_keys改成600就能解决。另一个常见场景是内网IP冲突导致ssh连到别的机器上,这种问题看系统日志里的ARP告警基本能定位。
5.4 图形界面登录闪退:先看.xsession-errors
现象:输入正确用户名密码后,桌面一闪又回到登录界面,反复循环。
原因:图形会话启动时某个组件崩溃,常见的是磁盘空间满、显卡驱动问题或家目录权限异常。
解决:
# cat ~/.xsession-errors # df -h.xsession-errors记录了图形会话启动的全过程,崩溃原因基本都会留在这里。如果df -h显示/分区100%,清掉日志和临时文件后,登录就恢复了。磁盘满导致的闪退占一半以上。另外可以用root用户直接尝试startx,看是哪个组件报错。
5.5 新装机器IP正常但显示无网络:NM托管与路由问题
现象:IP地址、掩码、网关都配对了,ping网关能通,但系统托盘显示无网络,浏览器也上不了外网。
原因:最常见的是NetworkManager接管了网卡但配置文件里的DNS没配,或者路由表缺少默认路由。麒麟默认用NetworkManager做网络托管,手动改/etc/sysconfig/network-scripts/ifcfg-*后没有生效,也是这个原因。
解决:
# nmcli dev status # nmcli con show # nmcli con up ens33 # ip routeip route输出里如果没有default开头的行,说明默认路由丢了,nmcli con up重新激活连接一般能恢复。如果配了静态IP但NM托管状态是unmanaged,检查ifcfg文件里是否漏了NM_CONTROLLED=yes。这个问题在用户现场复盘时特别常见,很多人改完配置文件后直接systemctl restart network,结果NM重启时把自己的静态路由清了。
5.6 重启网络服务报错:network与NetworkManager的冲突
现象:执行systemctl restart network提示失败,IP地址没有按预期刷新,甚至网络直接断开。
原因:麒麟同时存在network服务和NetworkManager,两个管理端同时操作同一块网卡,配置互相覆盖。最常见的是ifcfg文件里的参数写得不全或格式不对,network服务解析失败。
解决:统一用NetworkManager管理网络,放弃network服务:
# systemctl stop network # systemctl disable network # systemctl restart NetworkManager禁用network服务后,网络托管全部交给NetworkManager。ifcfg文件里确保有NM_CONTROLLED=yes,这样NetworkManager才能识别。改完用nmcli con reload再nmcli con up ens33让配置生效。如果场景必须用network服务,那ifcfg文件里所有参数必须严格符合规范,少一个GATEWAY都会导致服务启动报错。
6. 进单用户模式与grub密码:最后一道应急门
grub密码和bios密码,这两道门在麒麟上经常被忽略,但真出问题时,它们是进系统的最后通道。
先看单用户模式的进入方法。重启机器,在grub界面选中第一行按e键,进入编辑模式,输入grub密码(默认用户名为root,密码为Kylin123123),回车进入编辑。在/vmlinuz所在行行尾追加rw single init=/bin/bash console=tty0,然后按ctrl+x保存退出。追加的rw关键字特别关键——它告诉内核以读写方式挂载根文件系统,不加rw的话,你进入单用户模式后会发现文件系统是只读的,passwd命令写不进去,重置密码就是空谈。
进入单用户模式后,系统直接给你一个bash,没有密码验证。这个模式下可以重置密码、修改引导配置、修复fstab错误。退出单用户模式可以直接执行:
# /usr/sbin/reboot -f-f参数强制重启,不走正常的服务关闭流程,因为单用户模式下很多服务根本没启动,正常reboot反而会卡住。
grub密码的默认值是Kylin123123,交付时如果没改过,意味着任何一个能碰到服务器控制台的人都能进单用户模式,等于密码管理形同虚设。所以我的习惯是:装完系统第一件事就把grub密码改掉,并且写进项目交付文档。同样,bios密码如果客户没设,也要提醒设置,不然别人拔掉启动盘引导就能拿到系统权限。
从那以后我每次交付麒麟服务器,都会把grub密码、bios密码、vnc密码、root密码四样单独列一张表,交给客户运维负责人保存,然后在服务清单里注明“grub密码未修改的,立即按本节操作修改”。这个习惯帮我挡掉了好几次交付后的麻烦事,希望也能帮到你。
本文还有配套的精品资源,点击获取