解决方法
通过系统日志显示程序被关闭的原因
# vim /var/log/message
或者:
# journalctl
或者:
# dmesg –T
(补充:这里的 -T 代表要显示时间)
通过系统日志显示程序被关闭的原因
# vim /var/log/message
或者:
# journalctl
或者:
# dmesg –T
(补充:这里的 -T 代表要显示时间)
# rpm -qa | grep crash || zypper install crash ; rpm -qa | grep kernel-debug || zypper install kernel-debug
(注意:此方法只有 openSUSE & SLES 可以使用)
# vim /etc/default/grub
在这一行里:
.....
GRUB_CMDLINE_LINUX_DEFAULT="......"
.....
确保有:
.....
GRUB_CMDLINE_LINUX="crashkernel=auto......"
.....
并确保此文件其他地方没有和 crashkernel= 相关的参数
(
补充:这里的 auto 代表系统会根据内存大小自动设置一个值,也可以指定一个值,例如:crashkernel=128M,high、crashkernel=256M,high 等等。如果设置成一个固定值,建议
1) 1 GB 到 4 GB 内存设置成 160 M
2) 4 GB 到 64 GB 内存设置成 192 M
3) 64 GB 到 1 TB 内存设置成 256 M
4) 大于 1 TB 内存设置成 512 M
)
# grub2-mkconfig -o /boot/grub2/grub.cfg
# yast kdump
之后将 –Start-Up 中的 Kdump Low Memory [MiB] (72 – 3069) 修改为 256,将 –Start-Up 中的 Kdump High Memory [MiB] (0 – 7168) 修改为 512,之后再选择 [ OK ]
(补充:当 Kdump Low Memory 设置为 256,Kdump High Memory 设置为 512 时更易触发 Kdump)
(注意:此方法只有 openSUSE & SLES 可以使用)
# reboot
# makedumpfile --mem-usage /proc/kcore
# vim /etc/kdump.conf
将以下内容:
......
path /var/crash
core_collector makedumpfile -l --message-level 1 -d 31
......
修改为:
......
path /var/crash
core_collector makedumpfile -c -l --message-level 1 -d 31
default reboot
......
(
补充:
1) path /var/crash
2) -c 参数会对搜集的内核崩溃时的信息进行压缩
3) default reboot 参数会让 KDUMP 收集完内核崩溃时的信息后重启
)
# systemctl enable kdump.service ; systemctl restart kdump.service
# echo 1 > /proc/sys/kernel/sysrq ; echo c > /proc/sysrq-trigger
(注意:此时系统会自动崩溃并重启)
# ls /var/crash/<date>/vmcore
(补充:这里的内核崩溃信息存放目录 /var/crash/,是刚刚在 /etc/kdump.conf 文件里指定的)
在 TeamViewer 的官网上下载软件 TeamViewer:
https://www.teamviewer.cn/cn/download/linux/
服服务器系统要配置好可用的软件源
# rpm -Uvh https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/e/epel-release-8-8.el8.noarch.rpm
# yum groupinstall -y "Server with GUI"
# vim /etc/gdm/custom.conf
将以下内容:
#WaylandEnable=false
修改为:
WaylandEnable=false
(补充:此步骤是为了避免让 TeamViewer 连接时出现黑屏)
# systemctl set-default graphical.target
# yum -y localinstall teamviewer_15.9.5.x86_64.rpm
(补充:这里以安装 15.9.5.x86_64 版本的 teamviewer 为例)
# reboot
# vim /etc/security/pwquality.conf
将部分内容修改如下:
......
minlen = 15
......
dcredit = -1
......
ucredit = -1
......
lcredit = -1
......
ocredit = -1
......
dictcheck = 1
......
usercheck = 1
......
(
补充:这里以
1) 密码最小长度为 15 个字符 (minlen = 15)
2) 密码必须包含数字的个数 (dcredit = -1)
3) 密码必须包含大写字母的个数 (ucredit = -1)
4) 密码必须包含小写字母的个数 (lcredit = -1)
5) 密码必须包含特殊字符的个数 (ocredit = -1)
6) 密码不能包含字典 (dictcheck = 1)
7) 密码不能包含用户 (usercheck = 1)
为例
)
# authselect current | awk 'NR == 1 {print $3}' | grep custom/
custom/password-policy
(
补充:
(1)如果这条命令里没有输出则代表没有选择自定义认证
(2)从这里的输出结果可以看出这里选择的自定义认证是 custom/password-policy
)
# vim /etc/authselect/custom/password-policy/system-auth
将以下内容:
......
password requisite pam_pwquality.so ......
......
password sufficient pam_unix.so ......
......
修改为:
......
password requisite pam_pwhistory.so try_first_pass local_users_only enforce-for-root remember=5 use_authtok ......
......
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=24 use_authtok ......
......
(
补充:这里以
1) 新密码不能和前 5 个旧密码重复
2) 使用 SHA512 哈希算法加密密码
为例
)
# vim /etc/authselect/custom/password-policy/password-auth
将以下内容:
......
password requisite pam_pwquality.so ......
......
password sufficient pam_unix.so ......
......
修改为:
......
password requisite pam_pwhistory.so try_first_pass local_users_only enforce-for-root remember=5 use_authtok ......
......
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=24 use_authtok ......
......
(
补充:这里以
1) 新密码不能和前 5 个旧密码重复
2) 使用 SHA512 哈希算法加密密码
为例
)
# authselect apply-changes -b --backup=sssd.backup
(补充:这里以创建 sssd.backup 备份文件为例)
# authselect create-profile password-policy -b sssd --symlink-meta --symlink-pam
(补充:这里以生成名为 password-policy 的自定义认证为例)
# authselect select custom/password-policy with-sudo with-faillock without-nullok with-mkhomedir --force
(
补充:
1) 这里以选择名为 password-policy 的自定义认证为例
2) 这里设置了 with-sudo、with-faillock、without-nullok 和 with-mkhomedir 参数
)
(注意:使用了 with-mkhomedir 参数后,会提示需要开启 oddjobd)
# dnf install oddjob ; systemctl enable --now oddjobd.service
# authselect current
(补充:这里以生成并选择名为 password-policy 的自定义认证为例)
# vim /etc/authselect/custom/password-policy/system-auth
将以下内容:
......
password requisite pam_pwquality.so ......
......
password sufficient pam_unix.so ......
......
修改为:
......
password requisite pam_pwhistory.so try_first_pass local_users_only enforce-for-root remember=5 use_authtok ......
......
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=24 use_authtok ......
......
(
补充:这里以
1) 新密码不能和前 5 个旧密码重复
2) 使用 SHA512 哈希算法加密密码
为例
)
# vim /etc/authselect/custom/password-policy/password-auth
将以下内容:
......
password requisite pam_pwquality.so ......
......
password sufficient pam_unix.so ......
......
修改为:
......
password requisite pam_pwhistory.so try_first_pass local_users_only enforce-for-root remember=5 use_authtok ......
......
password sufficient pam_unix.so sha512 shadow try_first_pass use_authtok remember=24 use_authtok ......
......
(
补充:这里以
1) 新密码不能和前 5 个旧密码重复
2) 使用 SHA512 哈希算法加密密码
为例
)
# authselect apply-changes
(注意:此步骤会刷新 /etc/authselect/system-auth 配置文件和 /etc/authselect/password-auth 配置文件)
# vim /etc/login.defs
将以下内容:
......
ENCRYPT_METHOD ......
......
修改为:
......
ENCRYPT_METHOD SHA512
......
(补充:这里以使用 SHA512 哈希算法加密密码为例)
1) -eq 或者 ==,若两个数值存在且相等,则结果为真
2) -ne 或者 !=,若两个数值存在且不相等,则结果为真
3) -gt 或者 >,若两个数值存在且前一个数值大于后一个数值,则结果为真
4) -lt 或者 <,若两个数值存在且前一个数值小于后一个数值,则结果为真
5) -ge 或者 >=,若两个数值存在且前一个数值大于或等于后一个数值,则结果为真
6) -le 或者 <=,若两个数值存在且前一个数值小于或等于后一个数值,则结果为真
1) -z,如果字符串为空值,则结果为真
2) -n,如果字符串不为空值,则结果为真
3) == 或者 =,若两个字符串存在且一样,则结果为真
4) !=,若两个字符串存在且不一样,则结果为真
5) >,若两个字符串存在且前一个字符串大于后一个字符串(按数字顺序或字母数顺序进行比较,越靠后的值越大),则结果为真
6) <,若两个字符串存在且前一个字符串小于后一个字符串(按数字顺序或字母数顺序进行比较,越靠后的值越大),则结果为真
7) >,若两个字符串存在且前一个字符串的 ASCII 码大于后一个字符串的 ASCII 码(按数字顺序或字母数顺序进行比较,越靠后的值越大),则结果为真
8) \<,若两个字符串存在且前一个字符串的 ASCII 码大于后一个字符串的 ASCII 码(按数字顺序或字母数顺序进行比较,越靠后的值越大),则结果为真
1) -e,若文件或目录或链接存在,则结果为真
2) -d,若目录存在,则结果为真
3) -f,若文件存在,则结果为真
4) -L,若链接存在,则结果为真
5) -b,若块文件存在,则结果为真
6) -c,若字符型特殊文件存在,则结果为真
7) -s,若文件存在且里面有内容,则结果为真
8) -r,若文件且可读,则结果为真
9) -w,若文件且可写,则结果为真
10) -x,若文件且可执行,则结果为真
11) -nt,若两个文件存在且前一个文件比后一个文件新,则结果为真
12) -ot,若两个文件存在且前一个文件比后一个文件新,则结果为真
1) -a,和
2) -o,或
3) !,非
# [ 0 -ne 1 ]
# echo $?
0
(补充:这里以测试数字 0 是否不等于数字 1 为例)
# [ a == a ]
# echo $?
0
(补充:这里以测试字符串 a 是否等于字符串 a 为例)
# [ -f test.txt ]
# echo $?
0
(补充:这里以测试文件 test.txt 是否存在为例)
# a=1
# [ $a == 1 ]
# echo $?
0
(补充:这里以测试变量 a 是否等于数字 1 为例)
# a=1
# b=2
# c=1
# [ $a == $c -a $b == 2 ]
# echo $?
0
(补充:这里以测试变量 a 是否等于变量 c 并且变量 b 是否等于数字 2 为例)
# [ "`ls /tmp`" != "" ]
# echo $?
# 0
(补充:这里以测试 ls /tmp 命令的运行结果是否存在为例)
Variable=EternalCenter
# [ `echo $Variable | tr 'a-z' 'A-Z'` = "ETERNALCENTER" ]
# echo $?
# 0
(补充:这里以把 EternalCenter 转换成全部大写后再和 ETERNALCENTER 进行比较的案例)