首页
留言
导航
统计
Search
1
追番推荐!免费看动漫的网站 - 支持在线观看和磁力下载
2,510 阅读
2
推荐31个docker应用,每一个都很实用
1,311 阅读
3
PVE自动启动 虚拟机 | 容器 顺序设置及参数说明
931 阅读
4
一条命令,永久激活!Office 2024!
618 阅读
5
优选 Cloudflare 官方 / 中转 IP
490 阅读
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
登录
Search
标签搜索
Java
小程序
Redis
SpringBoot
docker
Typecho
Cloudflare
docker部署
虚拟机
WordPress
群晖
uni-app
CentOS
Vue
Java类库
Linux命令
防火墙配置
Mysql
脚本
Nginx
微醺
累计撰写
264
篇文章
累计收到
11
条评论
首页
栏目
默认分类
服务器
宝塔
VPS
Docker
OpenWRT
Nginx
群晖
前端编程
Vue
React
Angular
NodeJS
uni-app
后端编程
Java
Python
SpringBoot
SpringCloud
流程引擎
检索引擎
Linux
CentOS
Ubuntu
Debian
数据库
Redis
MySQL
Oracle
虚拟机
VMware
VirtualBox
PVE
Hyper-V
计算机
网络技术
网站源码
主题模板
页面
留言
导航
统计
搜索到
33
篇与
的结果
2024-01-17
Linux如何配置VNC远程桌面?
VNC介绍1.1 VNC简介VNC (Virtual Network Console) 是虚拟网络控制台的缩写。它是一款优秀的远程控制工具软件,可以实现远程控制计算机的功能。1.2 VNC组成VNC基本上是由两部分组成,在任何安装了客户端的应用程序(vncviewer)的计算机都能十分方便地与安装了服务器端的应用程序(vncserver)的计算机相互连接。客户端的应用程序vncviewer服务器端的应用程序vncserver1.3 常见的VNC工具RealVNC:是一款功能强大的VNC工具,支持多种操作系统,包括Windows、Linux、Mac OS X等,具有高安全性和可靠性。UltraVNC:是一款免费的VNC客户端和服务器软件,支持Windows操作系统,提供了远程桌面、文件传输、文本聊天等功能。TightVNC:是一个小巧而强大的VNC工具,支持Windows、Linux以及Unix等多种操作系统,具有较高的安全性和性能。TigerVNC:是一个开源的VNC工具,支持Windows、Linux以及Mac OS X等多种操作系统,具有稳定性和高性能。TeamViewer:是一款针对远程支持、远程控制和在线协作的应用软件,可以实现桌面共享、远程协助、文件传输等功能。本地环境介绍本次实践为个人测试环境,服务器操作系统版本为Rocky Linux 8.9,客户端主机使用Windows10操作系统角色主机名主机IP操作系统版本内核版本vncserverlocalhost192.168.3.168Rocky Linux 8.9 (Green Obsidian)4.18.0-513.5.1.el8_9.x86_64vncviewerN/A192.168.3.35Windows 10 ProN/A安装vncserver3.1 使用yum源安装tigervnc-server包dnf -y install tigervnc-server3.2 检查vncserver安装状态[root@localhost ~]# rpm -qa | grep tigervnc tigervnc-license-1.13.1-2.el8.noarch tigervnc-server-1.13.1-2.el8.x86_64 tigervnc-server-minimal-1.13.1-2.el8.x86_64 tigervnc-selinux-1.13.1-2.el8.noarch创建VNC用户4.1 分别创建vncuser01、vncuser02用户,并设置密码[root@localhost ~]# useradd vncuser01 [root@localhost ~]# useradd vncuser02 [root@localhost ~]# echo 123 | passwd --stdin vncuser01 # 设置密码为123 Changing password for user vncuser01. passwd: all authentication tokens updated successfully. [root@localhost ~]# echo 123 | passwd --stdin vncuser02 # 设置密码为123 Changing password for user vncuser02. passwd: all authentication tokens updated successfully.配置vncserver服务5.1 切换到vncuser01用户,启动vncserver服务,设置vnc连接密码[root@localhost ~]# su - vncuser01 [vncuser01@localhost ~]$ vncserver WARNING: vncserver has been replaced by a systemd unit and is now considered deprecated and removed in upstream. Please read /usr/share/doc/tigervnc/HOWTO.md for more information. You will require a password to access your desktops. Password: Password must be at least 6 characters - try again # 密码长度至少6位 Password: # 设置密码为123456 Verify: # 再次输入密码 Would you like to enter a view-only password (y/n)? n # 询问你是否要再输入一个只有观看权限而被禁止操作的远程桌面的密码 A view-only password is not used xauth: file /home/vncuser01/.Xauthority does not exist New 'localhost.localdomain:1 (vncuser01)' desktop is localhost.localdomain:1 Creating default startup script /home/vncuser01/.vnc/xstartup Creating default config /home/vncuser01/.vnc/config Starting applications specified in /home/vncuser01/.vnc/xstartup Log file is /home/vncuser01/.vnc/localhost.localdomain:1.log5.2 切换到vncuser02用户,启动vncserver服务,设置vnc连接密码[vncuser01@localhost ~]$ exit logout [root@localhost ~]# su - vncuser02 [vncuser02@localhost ~]$ vncserver WARNING: vncserver has been replaced by a systemd unit and is now considered deprecated and removed in upstream. Please read /usr/share/doc/tigervnc/HOWTO.md for more information. You will require a password to access your desktops. Password: Verify: Would you like to enter a view-only password (y/n)? n A view-only password is not used xauth: file /home/vncuser02/.Xauthority does not exist New 'localhost.localdomain:2 (vncuser02)' desktop is localhost.localdomain:2 Creating default startup script /home/vncuser02/.vnc/xstartup Creating default config /home/vncuser02/.vnc/config Starting applications specified in /home/vncuser02/.vnc/xstartup Log file is /home/vncuser02/.vnc/localhost.localdomain:2.log后面如果需要修改vnc连接密码,可以切换到对应用户执行vncpasswd进行修改5.3 查看服务端口[root@localhost ~]# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 33743/Xvnc tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 34664/Xvnc tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1709/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1145/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1148/cupsd tcp6 0 0 :::5901 :::* LISTEN 33743/Xvnc tcp6 0 0 :::5902 :::* LISTEN 34664/Xvnc tcp6 0 0 :::111 :::* LISTEN 1/systemd tcp6 0 0 :::22 :::* LISTEN 1145/sshd tcp6 0 0 ::1:631 :::* LISTEN 1148/cupsd udp 0 0 0.0.0.0:5353 0.0.0.0:* 938/avahi-daemon: r udp 0 0 0.0.0.0:50923 0.0.0.0:* 938/avahi-daemon: r udp 0 0 192.168.122.1:53 0.0.0.0:* 1709/dnsmasq udp 0 0 0.0.0.0:67 0.0.0.0:* 1709/dnsmasq udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd udp 0 0 127.0.0.1:323 0.0.0.0:* 957/chronyd udp6 0 0 :::5353 :::* 938/avahi-daemon: r udp6 0 0 :::34264 :::* 938/avahi-daemon: r udp6 0 0 :::111 :::* 1/systemd udp6 0 0 ::1:323 :::* 可以看到vnc服务端口已经处于监听状态了。5.4 设置vncserver开机自启动第一个桌面环境[root@localhost ~]# systemctl enable vncserver@:1.service # 注意:此处服务名称不能tab键补全,需手动敲完整,对应5901端口 Created symlink /etc/systemd/system/multi-user.target.wants/vncserver@:1.service → /usr/lib/systemd/system/vncserver@.service.第二个桌面环境[root@localhost ~]# systemctl enable vncserver@:2.service Created symlink /etc/systemd/system/multi-user.target.wants/vncserver@:2.service → /usr/lib/systemd/system/vncserver@.service.5.5 增加会话窗口与用户的映射关系,第一个桌面与vncuser01账号关联,第二个桌面环境与vncuser02账号关联编辑 /etc/tigervnc/vncserver.users 文件[root@localhost ~]# vim /etc/tigervnc/vncserver.users # TigerVNC User assignment # # This file assigns users to specific VNC display numbers. # The syntax is <display>=<username>. E.g.: # # :2=andrew # :3=lisa :1=vncuser01 # 增加这两行 :2=vncuser025.6 防火墙规则放行在firewalld防火墙上放行端口[root@localhost ~]# firewall-cmd --add-port=5901/tcp --permanent success [root@localhost ~]# firewall-cmd --add-port=5902/tcp --permanent success [root@localhost ~]# firewall-cmd --reload success5.7 重启验证服务状态[root@localhost ~]# systemctl status vncserver@\:1.service [root@localhost ~]# systemctl status vncserver@\:1.service ● vncserver@:1.service - Remote desktop service (VNC) Loaded: loaded (/usr/lib/systemd/system/vncserver@.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2023-12-14 18:00:57 CST; 40s ago Process: 1471 ExecStart=/usr/libexec/vncsession-start :1 (code=exited, status=0/SUCCESS) Process: 1422 ExecStartPre=/usr/libexec/vncsession-restore :1 (code=exited, status=0/SUCCESS) Main PID: 1489 (vncsession) Tasks: 0 (limit: 24436) Memory: 1.4M CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service ‣ 1489 /usr/sbin/vncsession vncuser01 :1 Dec 14 18:00:57 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Dec 14 18:00:57 localhost.localdomain systemd[1]: Started Remote desktop service (VNC). [root@localhost ~]# [root@localhost ~]# systemctl status vncserver@\:2.service ● vncserver@:2.service - Remote desktop service (VNC) Loaded: loaded (/usr/lib/systemd/system/vncserver@.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2023-12-14 18:00:57 CST; 44s ago Process: 1470 ExecStart=/usr/libexec/vncsession-start :2 (code=exited, status=0/SUCCESS) Process: 1421 ExecStartPre=/usr/libexec/vncsession-restore :2 (code=exited, status=0/SUCCESS) Main PID: 1492 (vncsession) Tasks: 0 (limit: 24436) Memory: 2.1M CGroup: /system.slice/system-vncserver.slice/vncserver@:2.service ‣ 1492 /usr/sbin/vncsession vncuser02 :2 Dec 14 18:00:57 localhost.localdomain systemd[1]: Starting Remote desktop service (VNC)... Dec 14 18:00:57 localhost.localdomain systemd[1]: Started Remote desktop service (VNC).重启系统后,服务成功自启动,均为 active 状态5.8 查看端口状态 [root@localhost ~]# netstat -tulnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1858/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1101/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1098/cupsd tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 1624/Xvnc tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 1625/Xvnc tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd tcp6 0 0 :::22 :::* LISTEN 1101/sshd tcp6 0 0 ::1:631 :::* LISTEN 1098/cupsd tcp6 0 0 :::5901 :::* LISTEN 1624/Xvnc tcp6 0 0 :::5902 :::* LISTEN 1625/Xvnc tcp6 0 0 :::111 :::* LISTEN 1/systemd udp 0 0 0.0.0.0:5353 0.0.0.0:* 973/avahi-daemon: r udp 0 0 192.168.122.1:53 0.0.0.0:* 1858/dnsmasq udp 0 0 0.0.0.0:67 0.0.0.0:* 1858/dnsmasq udp 0 0 0.0.0.0:111 0.0.0.0:* 1/systemd udp 0 0 127.0.0.1:323 0.0.0.0:* 983/chronyd udp 0 0 0.0.0.0:44138 0.0.0.0:* 973/avahi-daemon: r udp6 0 0 :::5353 :::* 973/avahi-daemon: r udp6 0 0 :::36338 :::* 973/avahi-daemon: r udp6 0 0 :::111 :::* 1/systemd udp6 0 0 ::1:323 :::* 983/chronydvnc服务端口处于监听状态中客户端连接验证这里我的客户端主机使用的是Windows10操作系统,使用 UltraVNC Viewer 工具连接 登录成功,vncuser02 同理
2024年01月17日
14 阅读
0 评论
0 点赞
2024-01-02
Ubuntu-Shell-监控公网IP-变化邮件报警
1、安装ssmtp服务sudo apt-get install ssmtp mailutils发送邮件需要有mailutils基础库,ssmtp库可以进一步选择发送人,收件人,邮件主题,邮件内容等。2、开通邮箱smtp服务需要开通发件人邮箱的smtp服务,无论是qq邮箱还是163邮箱等都可以直接开通,我选择的是qq邮箱,具体步骤可以参考:设置完之后呢,就要把生成的授权码作为邮箱的password3、配置ssmtp3.1、设置ubuntu发件人信息首先更改文件 /etc/ssmtp/ssmtp.conf ,编辑器选择自己常用的,我用的是vimsudo vim /etc/ssmtp/ssmtp.conf进入文件后默认显示如下:在文件中加入如下内容:UseTLS=Yes root=*********@qq.com AuthUser=********* AuthPass=******************即 mailhub 修改为qq邮箱的smtp服务器和端口,smtp.qq.com:465,如果发件人使用的是163邮箱,则163邮箱的服务器和端口自行百度,可能是 smtp.163.com:465;hostname 保持不变;root 后的邮箱为发件人邮箱, AuthUser 为发件人账号, AuthPass 为之前申请所得的smtp授权码。保存退出( :wq )3.2、配置ssmtp用户使用权限即配置允许哪个ubuntu用户可以使用发件人邮箱发送邮件。更改文件 /etc/ssmtp/revaliases (我默认使用root):sudo vim /etc/ssmtp/revaliases在下方添加如下:root:xxxxxx@qq.com:smtp.qq.com:465 rj01:xxxxxx@qq.com:smtp.qq.com:465即格式为:用户:邮箱:smtp.qq.com:465,163邮箱更改对应位置即可。这样配置即允许root用户和指定用户(如我的为rj01)使用ssmtp服务发送邮件。至此ssmtp配置完成。3.3、简单测试echo "hello world" | mail -s "title" xxxxxx@qq.com输入上述命令,后面邮箱为收件人邮箱,可以任意指定,收到邮件,测试成功。4、crontab 命令定时循环执行检测脚本发送邮件4.1、编写Shell脚本#!/bin/bash dirfile='/home/ip_change' new_ip=`curl icanhazip.com` #获取新公网ip mail_user=xxxxxx@qq.com #接收收邮件邮箱 mail_subject="IP已经发生变化,及时处理" #邮件主题 log="/var/log/tool.log" datetime=`date '+%Y-%m-%d %H:%M:%S'` #判断文件是否存在 if [ ! -f "$dirfile" ]; then touch "$file" echo "1.1.1.1" > $dirfile fi #判断new_ip是否获取 if [ ! -n "$new_ip" ]; then echo "$datetime 公网IP获取失败,检查'curl icanhazip.com' " >> $log exit 1 fi old_ip=`cat $dirfile` #查看旧ip # 判断两个IP是否相等 发邮件 if [ "$new_ip" = "$old_ip" ]; then echo "$datetime IP正常 - true " >> $log else echo $new_ip > $dirfile echo "IP已经发生变化, 新IP: $new_ip 旧IP: $old_ip !!! " | mail -s "$mail_subject" "$mail_user" echo "$datetime IP已经发生变化 - error 新IP :$new_ip 旧IP: $old_ip" >> $log fi4.2、crontab 定时循环执行脚本在之前配置的用户权限中允许的用户下,输入如下命令:crontab -e添加如下命令(路径需修改成自己编写的shell脚本路径):*/10 * * * * /bin/bash /data/shell/getIp/getIp.sh至此,每隔10分钟,自动获取最新公网ip,如果有更新,发送到目标邮箱。
2024年01月02日
46 阅读
0 评论
0 点赞
2023-07-20
18个常用 Shell 脚本, 太好用啦~
1、检测两台服务器指定目录下的文件一致性#!/bin/bash ###################################### 检测两台服务器指定目录下的文件一致性 ##################################### #通过对比两台服务器上文件的md5值,达到检测一致性的目的 dir=/data/web b_ip=192.168.88.10 #将指定目录下的文件全部遍历出来并作为md5sum命令的参数,进而得到所有文件的md5值,并写入到指定文件中 find $dir -type f|xargs md5sum > /tmp/md5_a.txt ssh $b_ip "find $dir -type f|xargs md5sum > /tmp/md5_b.txt" scp $b_ip:/tmp/md5_b.txt /tmp #将文件名作为遍历对象进行一一比对 for f in `awk '{print 2} /tmp/md5_a.txt'`do #以a机器为标准,当b机器不存在遍历对象中的文件时直接输出不存在的结果 if grep -qw "$f" /tmp/md5_b.txt then md5_a=`grep -w "$f" /tmp/md5_a.txt|awk '{print 1}'` md5_b=`grep -w "$f" /tmp/md5_b.txt|awk '{print 1}'` #当文件存在时,如果md5值不一致则输出文件改变的结果 if [ $md5_a != $md5_b ]then echo "$f changed." fi else echo "$f deleted." fi done 2、定时清空文件内容,定时记录文件大小#!/bin/bash ################################################################# 每小时执行一次脚本(任务计划),当时间为0点或12点时,将目标目录下的所有文件内#容清空,但不删除文件,其他时间则只统计各个文件的大小,一个文件一行,输出到以时#间和日期命名的文件中,需要考虑目标目录下二级、三级等子目录的文件 ################################################################ logfile=/tmp/`date +%H-%F`.log n=`date +%H` if [ $n -eq 00 ] || [ $n -eq 12 ] then #通过for循环,以find命令作为遍历条件,将目标目录下的所有文件进行遍历并做相应操作 for i in `find /data/log/ -type f` do true > $i done else for i in `find /data/log/ -type f` do du -sh $i >> $logfile done fi 3、检测网卡流量,并按规定格式记录在日志中#!/bin/bash ####################################################### #检测网卡流量,并按规定格式记录在日志中#规定一分钟记录一次 #日志格式如下所示: #2019-08-12 20:40 #ens33 input: 1234bps #ens33 output: 1235bps ######################################################3 while : do #设置语言为英文,保障输出结果是英文,否则会出现bug LANG=en logfile=/tmp/`date +%d`.log #将下面执行的命令结果输出重定向到logfile日志中 exec >> $logfile date +"%F %H:%M" #sar命令统计的流量单位为kb/s,日志格式为bps,因此要*1000*8 sar -n DEV 1 59|grep Average|grep ens33|awk '{print $2,"\t","input:","\t",$5*1000*8,"bps","\n",$2,"\t","output:","\t",$6*1000*8,"bps"}' echo "####################" #因为执行sar命令需要59秒,因此不需要sleep done 4、计算文档每行出现的数字个数,并计算整个文档的数字总数#!/bin/bash ######################################################### #计算文档每行出现的数字个数,并计算整个文档的数字总数 ######################################################## #使用awk只输出文档行数(截取第一段) n=`wc -l a.txt|awk '{print $1}'` sum=0 #文档中每一行可能存在空格,因此不能直接用文档内容进行遍历 for i in `seq 1 $n`do #输出的行用变量表示时,需要用双引号 line=`sed -n "$i"p a.txt`#wc -L选项,统计最长行的长度 n_n=`echo $line|sed s'/[^0-9]//'g|wc -L` echo $n_nsum=$[$sum+$n_n] done echo "sum:$sum" 杀死所有脚本#!/bin/bash ################################################################ #有一些脚本加入到了cron之中,存在脚本尚未运行完毕又有新任务需要执行的情况, #导致系统负载升高,因此可通过编写脚本,筛选出影响负载的进程一次性全部杀死。 ################################################################ ps aux|grep 指定进程名|grep -v grep|awk '{print $2}'|xargs kill -9 5、从 FTP 服务器下载文件#!/bin/bash if [ $# -ne 1 ]; then echo "Usage: $0 filename" fi dir=$(dirname $1) file=$(basename $1) ftp -n -v << EOF # -n 自动登录 open 192.168.1.10 # ftp服务器 user admin password binary # 设置ftp传输模式为二进制,避免MD5值不同或.tar.gz压缩包格式错误 cd $dir get "$file" EOF 6、连续输入5个100以内的数字,统计和、最小和最大#!/bin/bash COUNT=1 SUM=0 MIN=0 MAX=100 while [ $COUNT -le 5 ]; do read -p "请输入1-10个整数:" INT if [[ ! $INT =~ ^[0-9]+$ ]]; then echo "输入必须是整数!" exit 1 elif [[ $INT -gt 100 ]]; then echo "输入必须是100以内!" exit 1 fi SUM=$(($SUM+$INT)) [ $MIN -lt $INT ] && MIN=$INT [ $MAX -gt $INT ] && MAX=$INT let COUNT++ done echo "SUM: $SUM" echo "MIN: $MIN" echo "MAX: $MAX 用户猜数字#!/bin/bash # 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了, # 猜小了或猜大了,直至用户猜对脚本结束。 # RANDOM 为系统自带的系统变量,值为 0‐32767的随机数 # 使用取余算法将随机数变为 1‐100 的随机数num=$[RANDOM%100+1]echo "$num" # 使用 read 提示用户猜数字 # 使用 if 判断用户猜数字的大小关系:‐eq(等于),‐ne(不等于),‐gt(大于),‐ge(大于等于), # ‐lt(小于),‐le(小于等于) while : do read -p "计算机生成了一个 1‐100 的随机数,你猜: " cai if [ $cai -eq $num ] then echo "恭喜,猜对了" exit elif [ $cai -gt $num ] then echo "Oops,猜大了" else echo "Oops,猜小了" fi done 7、监测 Nginx 访问日志 502 情况,并做相应动作假设服务器环境为 lnmp,近期访问经常出现 502 现象,且 502 错误在重启 php-fpm 服务后消失,因此需要编写监控脚本,一旦出现 502,则自动重启 php-fpm 服务。#场景: #1.访问日志文件的路径:/data/log/access.log #2.脚本死循环,每10秒检测一次,10秒的日志条数为300条,出现502的比例不低于10%(30条)则需要重启php-fpm服务 #3.重启命令为:/etc/init.d/php-fpm restart #!/bin/bash ########################################################### #监测Nginx访问日志502情况,并做相应动作 ########################################################### log=/data/log/access.log N=30 #设定阈值 while :do #查看访问日志的最新300条,并统计502的次数 err=`tail -n 300 $log |grep -c '502" '` if [ $err -ge $N ] then /etc/init.d/php-fpm restart 2> /dev/null #设定60s延迟防止脚本bug导致无限重启php-fpm服务 sleep 60 fi sleep 10 done 8、将结果分别赋值给变量应用场景:希望将执行结果或者位置参数赋值给变量,以便后续使用。方法1:for i in $(echo "4 5 6"); do eval a$i=$idone echo $a4 $a5 $a6 方法2:将位置参数192.168.1.1{1,2}拆分为到每个变量num=0 for i in $(eval echo $*);do #eval将{1,2}分解为1 2 let num+=1 eval node${num}="$i" done echo $node1 $node2 $node3 # bash a.sh 192.168.1.1{1,2} 192.168.1.11 192.168.1.12 方法3:arr=(4 5 6) INDEX1=$(echo ${arr[0]}) INDEX2=$(echo ${arr[1]}) INDEX3=$(echo ${arr[2]}) 9、批量修改文件名示例:# touch article_{1..3}.html # lsarticle_1.html article_2.html article_3.html 目的:把article改为bbs 方法1:for file in $(ls *html); do mv $file bbs_${file#*_} # mv $file $(echo $file |sed -r 's/.*(_.*)/bbs\1/') # mv $file $(echo $file |echo bbs_$(cut -d_ -f2) 方法2:for file in $(find . -maxdepth 1 -name "*html"); do mv $file bbs_${file#*_}done 方法3:# rename article bbs *.html 把一个文档前五行中包含字母的行删掉,同时删除6到10行包含的所有字母 1)准备测试文件,文件名为2.txt 第1行1234567不包含字母 第2行56789BBBBBB 第3行67890CCCCCCCC 第4行78asdfDDDDDDDDD 第5行123456EEEEEEEE 第6行1234567ASDF 第7行56789ASDF 第8行67890ASDF 第9行78asdfADSF 第10行123456AAAA 第11行67890ASDF 第12行78asdfADSF 第13行123456AAAA 2)脚本如下:#!/bin/bash ############################################################### 把一个文档前五行中包含字母的行删掉,同时删除6到10行包含的所有字母 ############################################################## sed -n '1,5'p 2.txt |sed '/[a-zA-Z]/'d sed -n '6,10'p 2.txt |sed s'/[a-zA-Z]//'g sed -n '11,$'p 2.txt #最终结果只是在屏幕上打印结果,如果想直接更改文件,可将输出结果写入临时文件中,再替换2.txt或者使用-i选项 10、统计当前目录中以.html结尾的文件总大for size in $(ls -l *.html |awk '{print $5}'); do sum=$(($sum+$size)) done echo $sum 11、扫描主机端口状态#!/bin/bash HOST=$1 PORT="22 25 80 8080" for PORT in $PORT; do if echo &>/dev/null > /dev/tcp/$HOST/$PORT; then echo "$PORT open" else echo "$PORT close" fi done 用 shell 打印示例语句中字母数小于6的单词 #示例语句: #Bash also interprets a number of multi-character options. #!/bin/bash ############################################################## #shell打印示例语句中字母数小于6的单词 ############################################################## for s in Bash also interprets a number of multi-character options. do n=`echo $s|wc -c` if [ $n -lt 6 ] then echo $s fi done 12、输入数字运行相应命令#!/bin/bash ############################################################## #输入数字运行相应命令 ############################################################## echo "*cmd menu* 1-date 2-ls 3-who 4-pwd 0-exit " while : do #捕获用户键入值 read -p "please input number :" n n1=`echo $n|sed s'/[0-9]//'g` #空输入检测 if [ -z "$n" ] then continue fi #非数字输入检测 if [ -n "$n1" ] then exit 0 fi break done case $n in 1) date ;; 2) ls ;; 3) who ;; 4) pwd ;; 0) break ;; #输入数字非1-4的提示 *) echo "please input number is [1-4]" esac 13、Expect 实现 SSH 免交互执行命令Expect是一个自动交互式应用程序的工具,如telnet,ftp,passwd等。需先安装expect软件包。方法1:EOF标准输出作为expect标准输入#!/bin/bash USER=root PASS=123.com IP=192.168.1.120 expect << EOFset timeout 30spawn ssh $USER@$IP expect { "(yes/no)" {send "yes\r"; exp_continue} "password:" {send "$PASS\r"} } expect "$USER@*" {send "$1\r"} expect "$USER@*" {send "exit\r"} expect eof EOF 方法2:#!/bin/bash USER=root PASS=123.com IP=192.168.1.120 expect -c " spawn ssh $USER@$IP expect { \"(yes/no)\" {send \"yes\r\"; exp_continue} \"password:\" {send \"$PASS\r\"; exp_continue} \"$USER@*\" {send \"df -h\r exit\r\"; exp_continue} }" 方法3:将expect脚本独立出来登录脚本: # cat login.exp #!/usr/bin/expect set ip [lindex $argv 0] set user [lindex $argv 1] set passwd [lindex $argv 2] set cmd [lindex $argv 3] if { $argc != 4 } { puts "Usage: expect login.exp ip user passwd" exit 1 } set timeout 30 spawn ssh $user@$ip expect { "(yes/no)" {send "yes\r"; exp_continue} "password:" {send "$passwd\r"} } expect "$user@*" {send "$cmd\r"} expect "$user@*" {send "exit\r"} expect eof 执行命令脚本:写个循环可以批量操作多台服务器#!/bin/bash HOST_INFO=user_info.txt for ip in $(awk '{print $1}' $HOST_INFO) do user=$(awk -v I="$ip" 'I==$1{print $2}' $HOST_INFO) pass=$(awk -v I="$ip" 'I==$1{print $3}' $HOST_INFO) expect login.exp $ip $user $pass $1 done Linux主机SSH连接信息: # cat user_info.txt 192.168.1.120 root 123456 创建10个用户,并分别设置密码,密码要求10位且包含大小写字母以及数字,最后需要把每个用户的密码存在指定文件中 #!/bin/bash ############################################################## #创建10个用户,并分别设置密码,密码要求10位且包含大小写字母以及数字 #最后需要把每个用户的密码存在指定文件中#前提条件:安装mkpasswd命令 ############################################################## #生成10个用户的序列(00-09) for u in `seq -w 0 09`do #创建用户 useradd user_$u #生成密码 p=`mkpasswd -s 0 -l 10` #从标准输入中读取密码进行修改(不安全) echo $p|passwd --stdin user_$u #常规修改密码 echo -e "$p\n$p"|passwd user_$u #将创建的用户及对应的密码记录到日志文件中 echo "user_$u $p" >> /tmp/userpassworddone 14、监控 httpd 的进程数,根据监控情况做相应处理#!/bin/bash ############################################################################################################################### #需求: #1.每隔10s监控httpd的进程数,若进程数大于等于500,则自动重启Apache服务,并检测服务是否重启成功 #2.若未成功则需要再次启动,若重启5次依旧没有成功,则向管理员发送告警邮件,并退出检测 #3.如果启动成功,则等待1分钟后再次检测httpd进程数,若进程数正常,则恢复正常检测(10s一次),否则放弃重启并向管理员发送告警邮件,并退出检测 ############################################################################################################################### #计数器函数 check_service() { j=0 for i in `seq 1 5` do #重启Apache的命令 /usr/local/apache2/bin/apachectl restart 2> /var/log/httpderr.log #判断服务是否重启成功 if [ $? -eq 0 ] then break else j=$[$j+1] fi #判断服务是否已尝试重启5次 if [ $j -eq 5 ] then mail.py exit fi done }while :do n=`pgrep -l httpd|wc -l` #判断httpd服务进程数是否超过500 if [ $n -gt 500 ] then /usr/local/apache2/bin/apachectl restart if [ $? -ne 0 ] then check_service else sleep 60 n2=`pgrep -l httpd|wc -l` #判断重启后是否依旧超过500 if [ $n2 -gt 500 ] then mail.py exit fi fi fi #每隔10s检测一次 sleep 10 done 15、批量修改服务器用户密码Linux主机SSH连接信息:旧密码# cat old_pass.txt 192.168.18.217 root 123456 22 192.168.18.218 root 123456 22 内容格式:IP User Password Port SSH远程修改密码脚本:新密码随机生成 https://www.linuxprobe.com/books #!/bin/bash OLD_INFO=old_pass.txt NEW_INFO=new_pass.txt for IP in $(awk '/^[^#]/{print $1}' $OLD_INFO); do USER=$(awk -v I=$IP 'I==$1{print $2}' $OLD_INFO) PASS=$(awk -v I=$IP 'I==$1{print $3}' $OLD_INFO) PORT=$(awk -v I=$IP 'I==$1{print $4}' $OLD_INFO) NEW_PASS=$(mkpasswd -l 8) # 随机密码 echo "$IP $USER $NEW_PASS $PORT" >> $NEW_INFO expect -c " spawn ssh -p$PORT $USER@$IP set timeout 2 expect { \"(yes/no)\" {send \"yes\r\";exp_continue} \"password:\" {send \"$PASS\r\";exp_continue} \"$USER@*\" {send \"echo \'$NEW_PASS\' |passwd --stdin $USER\r exit\r\";exp_continue} }" done 生成新密码文件: # cat new_pass.txt 192.168.18.217 root n8wX3mU% 22 192.168.18.218 root c87;ZnnL 22 16、iptables 自动屏蔽访问网站频繁的IP场景:恶意访问,安全防范1)屏蔽每分钟访问超过200的IP方法1:根据访问日志(Nginx为例)#!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) ABNORMAL_IP=$(tail -n5000 access.log |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>100)print i}') #先tail防止文件过大,读取慢,数字可调整每分钟最大的访问量。awk不能直接过滤日志,因为包含特殊字符。 for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -I INPUT -s $IP -j DROP fi done 方法2:通过TCP建立的连接#!/bin/bash ABNORMAL_IP=$(netstat -an |awk '$4~/:80$/ && $6~/ESTABLISHED/{gsub(/:[0-9]+/,"",$5);{a[$5]++}}END{for(i in a)if(a[i]>100)print i}') #gsub是将第五列(客户端IP)的冒号和端口去掉 for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -I INPUT -s $IP -j DROP fi done 2)屏蔽每分钟SSH尝试登录超过10次的IP方法1:通过lastb获取登录状态:#!/bin/bash DATE=$(date +"%a %b %e %H:%M") #星期月天时分 %e单数字时显示7,而%d显示07 ABNORMAL_IP=$(lastb |grep "$DATE" |awk '{a[$3]++}END{for(i in a)if(a[i]>10)print i}')for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -I INPUT -s $IP -j DROP fi done 方法2:通过日志获取登录状态#!/bin/bash DATE=$(date +"%b %d %H") ABNORMAL_IP="$(tail -n10000 /var/log/auth.log |grep "$DATE" |awk '/Failed/{a[$(NF-3)]++}END{for(i in a)if(a[i]>5)print i}')" for IP in $ABNORMAL_IP; do if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then iptables -A INPUT -s $IP -j DROP echo "$(date +"%F %T") - iptables -A INPUT -s $IP -j DROP" >>~/ssh-login-limit.log fi done 17、根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁#!/bin/bash #################################################################################### #根据web访问日志,封禁请求量异常的IP,如IP在半小时后恢复正常,则解除封禁 #################################################################################### logfile=/data/log/access.log #显示一分钟前的小时和分钟 d1=`date -d "-1 minute" +%H%M` d2=`date +%M` ipt=/sbin/iptables ips=/tmp/ips.txt block() { #将一分钟前的日志全部过滤出来并提取IP以及统计访问次数 grep '$d1:' $logfile|awk '{print $1}'|sort -n|uniq -c|sort -n > $ips #利用for循环将次数超过100的IP依次遍历出来并予以封禁 for i in `awk '$1>100 {print $2}' $ips` do $ipt -I INPUT -p tcp --dport 80 -s $i -j REJECT echo "`date +%F-%T` $i" >> /tmp/badip.log done } unblock() { #将封禁后所产生的pkts数量小于10的IP依次遍历予以解封 for a in `$ipt -nvL INPUT --line-numbers |grep '0.0.0.0/0'|awk '$2<10 {print $1}'|sort -nr` do $ipt -D INPUT $a done $ipt -Z } #当时间在00分以及30分时执行解封函数 if [ $d2 -eq "00" ] || [ $d2 -eq "30" ] then #要先解再封,因为刚刚封禁时产生的pkts数量很少 unblock block else block fi 18、判断用户输入的是否为IP地址方法1:#!/bin/bash function check_ip(){ IP=$1 VALID_CHECK=$(echo $IP|awk -F. '$1< =255&&$2<=255&&$3<=255&&$4<=255{print "yes"}') if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$">/dev/null; then if [ $VALID_CHECK == "yes" ]; then echo "$IP available." else echo "$IP not available!" fi else echo "Format error!" fi } check_ip 192.168.1.1 check_ip 256.1.1.1 方法2:#!/bin/bash function check_ip(){ IP=$1 if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then FIELD1=$(echo $IP|cut -d. -f1) FIELD2=$(echo $IP|cut -d. -f2) FIELD3=$(echo $IP|cut -d. -f3) FIELD4=$(echo $IP|cut -d. -f4) if [ $FIELD1 -le 255 -a $FIELD2 -le 255 -a $FIELD3 -le 255 -a $FIELD4 -le 255 ]; then echo "$IP available." else echo "$IP not available!" fi else echo "Format error!" fi } check_ip 192.168.1.1 check_ip 256.1.1.1 增加版:加个死循环,如果IP可用就退出,不可用提示继续输入,并使用awk判断。#!/bin/bash function check_ip(){ local IP=$1 VALID_CHECK=$(echo $IP|awk -F. '$1< =255&&$2<=255&&$3<=255&&$4<=255{print "yes"}') if echo $IP|grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$" >/dev/null; then if [ $VALID_CHECK == "yes" ]; then return 0 else echo "$IP not available!" return 1 fi else echo "Format error! Please input again." return 1 fi } while true; do read -p "Please enter IP: " IP check_ip $IP [ $? -eq 0 ] && break || continue done 到此结束,谢谢阅读!
2023年07月20日
17 阅读
0 评论
0 点赞
2023-06-28
Linux 服务器必备的安全设置,建议收藏!!!
好不容易买了服务器,如果因为自己的疏忽,被黑客黑掉的话,那真的是太糟糕了!下面告诉你一些简单的方法提高服务器的安全系数,我的云服务器就是这么配置的,虽然有些麻烦,但是感觉安心一些。修改 ssh 登陆配置打开 ssh 配置文件vim /etc/ssh/sshd_config #修改以下几项 Port 10000 #更改SSH端口,最好改为10000以上,别人扫描到端口的机率也会下降。防火墙要开放配置好的端口号,如果是阿里云服务器,你还需要去阿里云后台配置开发相应的端口才可以,否则登不上哦!如果你觉得麻烦,可以不用改 Protocol 2 #禁用版本1协议, 因为其设计缺陷, 很容易使密码被黑掉。 PermitRootLogin no #尝试任何情况先都不允许 Root 登录. 生效后我们就不能直接以root的方式登录了,我们需要用一个普通的帐号来登录,然后用su来切换到root帐号,注意 su和su - 是有一点小小区别的。关键在于环境变量的不同,su -的环境变量更全面。 PermitEmptyPasswords no #禁止空密码登陆。最后需要重启 sshd 服务service sshd restart禁止系统响应任何从外部 / 内部来的 ping 请求echo "1"> /proc/sys/net/ipv4/icmp_echo_ignore_all其默认值为 0用户管理下面是基本的用户管理命令查看用户列表:cat /etc/passwd 查看组列表:cat /etc/group 查看当前登陆用户:who 查看用户登陆历史记录:last一般需要删除系统默认的不必要的用户和组,避免被别人用来爆破:userdel sync userdel shutdown # 需要删除的多余用户共有:sync shutdown halt uucp operator games gopher groupdel adm groupdel games # 需要删除的多余用户组共有:adm lp games dipLinux 中的帐号和口令是依据 /etc/passwd 、/etc/shadow、 /etc/group 、/etc/gshadow 这四个文档的,所以需要更改其权限提高安全性:chattr +i /etc/passwd chattr +i /etc/shadow chattr +i /etc/group chattr +i /etc/gshadow如果还原,把 +i 改成 -i , 再执行一下上面四条命令。注:i 属性:不允许对这个文件进行修改,删除或重命名,设定连结也无法写入或新增数据!只有 root 才能设定这个属性。创建新用户创建新用户命令:adduser username 更改用户密码名:passwd username个人用户的权限只可以在本 home 下有完整权限,其他目录要看别人授权。而经常需要 root 用户的权限,这时候 sudo 可以化身为 root 来操作。我记得我曾经 sudo 创建了文件,然后发现自己并没有读写权限,因为查看权限是 root 创建的。sudoers 只有只读的权限,如果想要修改的话,需要先添加 w 权限:chmod -v u+w /etc/sudoers 然后就可以添加内容了,在下面的一行下追加新增的用户:wq 保存退出,这时候要记得将写权限收回:chmod -v u-w /etc/sudoers赋予 root 权限方法一:修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉## Allows people in group wheel to run all commands # 去掉下面一句的前面的注释 # %wheel ALL=(ALL) ALL # 然后修改用户,使其属于root组(wheel),命令如下: # usermod -g root uusama修改完毕,现在可以用 uusama 帐号登录,然后用命令 su – ,即可获得 root 权限进行操作。方法二(推荐):修改 /etc/sudoers 文件,找到下面一行,在 root 下面添加一行,如下所示:## Allow root to run any commands anywhere root ALL=(ALL) ALL uusama ALL=(ALL) ALL修改完毕,现在可以用 uusama 帐号登录,然后用命令 sudo -s ,即可获得 root 权限进行操作。方法三:修改 /etc/passwd 文件,找到如下行,把用户 ID 修改为 0 ,如下所示:uusama:x:500:500:tommy:/home/uusama:/bin/bash # 修改后如下 uusama:x:0:500:tommy:/home/uusama:/bin/bash保存,用 uusama 账户登录后,直接获取的就是 root 帐号的权限。
2023年06月28日
49 阅读
0 评论
1 点赞
2023-06-26
centos 安装golang 1.18
# 下载安装 cd /usr/local/src wget https://golang.google.cn/dl/go1.18.linux-amd64.tar.gz tar -zxvf go1.18.linux-amd64.tar.gz -C /usr/local/ # 增加配置文件 vim /etc/profile export GOROOT=/usr/local/go export PATH=$PATH:$GOROOT/bin export GOPATH=/opt/go export PATH=$PATH:$GOPATH/BIN export GO111MODULE=on export GOPROXY=https://goproxy.cn # 应用改变 source /etc/profile # 查看版本 go version - go version go1.18 linux/amd64
2023年06月26日
16 阅读
0 评论
0 点赞
2023-03-31
Linux 压缩及解压文件简介
使用Ubuntu的过程中,无论用来干什么,都会有文件上的交流,必不可免的就是压缩文件,Ubuntu系统中自带了部分格式的压缩软件,但是win系统习惯的rar格式文件解压需要下载相关软件,现整理如下:1.文件格式及解压工具*.tar 用 tar 工具*.gz 用 gzip 或者 gunzip 工具.tar.Z,.tar.bz2,.tar.gz 和 .tgz 用 tar 工具*.bz2 用 bzip2 或者用 bunzip2 工具*.Z 用 uncompress 工具*.rar 用 unrar 工具*.zip 用 unzip 工具2.具体使用简介filename,表示文件名dirname,表示路径地址.tar 文件功能: 对文件目录进行打包备份(仅打包并非压缩)tar -xvf filename.tar # 解包 tar -cvf filename.tar dirname # 将dirname和其下所有文件(夹)打包.gz 文件gunzip filename.gz # 解压1 gzip -d filename.gz # 解压2 gzip filename # 压缩,只能压缩文件.tar.gz文件、.tgz文件tar -zxvf filename.tar.gz # 解压 tar -zcvf filename.tar.gz dirname # 将dirname和其下所有文件(夹)压缩 tar -C dirname -zxvf filename.tar.gz # 解压到目标路径dirname.bz2文件bzip2 -zk filename #将filename文件进行压缩 bunzip2 filename.bz2 #解压 bzip2 -d filename.bz2 #解压.tar.bz2文件tar -jxvf filename.tar.bz #解压.Z文件uncompress filename.Z #解压 compress filename #压缩.tar.Z 文件tar -Zxvf filename.tar.Z #解压 tar -Zcvf fflename.tar.Z dirname #压缩.rar 文件rar x filename.rar #解压 rar a filename.rar dirname #压缩.zip文件unzip -O cp936 filename.zip # 解压(不乱码) zip filename.zip dirname # 将dirname本身压缩 zip -r filename.zip dirname # 压缩,递归处理,将指定目录下的所有文件和子目录一并压缩使用过程中如提示以下问题,安装相应的工具即可。安装方式:sudo apt install *** 例如:上述问题解决方式为 sudo apt install bunzip
2023年03月31日
53 阅读
0 评论
0 点赞
2023-03-23
Ubuntu下安装JDK1.8(Open JDK)
在Linux下安装JDK有两种方式1.安装开源版本的OpenJDK2.安装Oracle官方版本的JDK在这主要说下 OpenJDK 的安装1.更新软件包列表sudo apt-get update2.安装OpenJDK-8sudo apt-get install openjdk-8-jdk3.查看安装好的JDK的版本java -version
2023年03月23日
36 阅读
0 评论
0 点赞
2023-03-22
Debian10 配置镜像源(外网、内网)
一.备份默认源由于默认源都在国外,速度非常慢,需要把默认的源配置文件备份后删除。# 进入配置文件目录 cd /etc/apt # 复制配置文件 cp sources.list sources.list.bak二、配置外网源(阿里)nano /etc/apt/sources.list配置文件内容:deb http://mirrors.aliyun.com/debian/ buster main non-free contrib deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib deb http://mirrors.aliyun.com/debian-security/ buster/updates main non-free contrib deb-src http://mirrors.aliyun.com/debian-security/ buster/updates main non-free contrib清理缓存|更新仓库文件列表# 清除缓存 apt clean # 更新列表 apt update三、配置本地源(内网环境)在非联网环境可以通过安装包光盘配置本地源。# 创建挂载目录 mkdir /mnt/debian-cd # 挂载光盘 mount /dev/cdrom /mnt/debian-cd # 验证是否挂载成功 ls -l /mnt/debian-cd # 添加光盘镜像源 apt-cdrom add # 清除缓存 apt clean # 更新列表 apt update
2023年03月22日
92 阅读
0 评论
0 点赞
2023-03-20
彻底解决Ubuntu SSH 无法远程登录及root 登录ACCESS Denied 问题
采用VM虚拟机安装了Ubuntu 16.04 ,采用SSH远程连接发现了两个问题(与Centos不一样)。第一,是SSH无法连接上刚建立的虚拟服务器。原因是Ubuntu没有默认安装SSH服务,需要手动安装下。1、 sudo ps -e|grep ssh #查看是否安装了SSH服务(如果显示为空则没安装)2、sudo apt-get update #先更新下资源列表3、sudo apt-get install openssh-server #安装openssh-server4、sudo ps -e|grep ssh #查看是否安装成功5、sudo service sshd start #重新启动SSH服务第二,root 登录ACCESS Denied 问题第一问题解决后,发现远程SSH连接root 登录缓慢并出现如下问题:解决办法如下:sudo vi /etc/ssh/sshd_config把 PermitRootLogin prohibit-password 注释掉增加一行 PermitRootLogin yes 如下图:重启systemctl restart sshd重新登录 SSH 远程用 root 就解决了 ok!
2023年03月20日
39 阅读
0 评论
0 点赞
2023-03-20
ubuntu 使用root用户登录系统
Ubuntu20.04 安装完成之后,默认是没有 root 账户登录权限的,不过我们可以通过创建的普通用户获取管理员权限,然后修改配置和 root 账户的密码,最后实现登录 root 账户,具体操作步骤如下:1. 以普通用户登录系统,创建 root 用户的密码在终端输入命令:sudo passwd root先输入当前管理用户(如用户 coco )的密码,用于提权。然后再输入为 root 用户所设置的密码,输入两次,这样就完成设置 root 用户密码了(注意 Linux 系统下密码是没有回显的)2. 修改50-ubuntu.conf文件在终端输入命令:sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf在文件末尾增加如下两行并保存:greeter-show-manual-login=true #手工输入登陆系统的用户名和密码 allow-guest=false #不允许guest登录(可选)3. 修改gdm-autologin文件在终端输入命令:sudo vim /etc/pam.d/gdm-autologin在第三行前面加#以注释掉auth required pam_succeed_if.so user != root quiet_success,随后保存并退出4. 修改gdm-password文件在终端输入命令:sudo vim /etc/pam.d/gdm-password在第三行前面加#以注释掉auth required pam_succeed_if.so user != root quiet_success,随后保存并退出5. 修改/root/.profile文件在终端输入命令:sudo vim /root/.profile将文件末尾的mesg n 2> /dev/null || true这一行注释掉,并随后添加:tty -s&&mesg n || true6. 注销当前用户,登录 root 用户一般修改完配置后最好重启一下reboot点击未列出?输入 root 然后按回车键登录系统
2023年03月20日
77 阅读
0 评论
0 点赞
1
2
3
4