优化项目
1 配置时间同步
##配置时间同步
apt install chrony -y
cat > /etc/chrony/chrony.conf << EOF
confdir /etc/chrony/conf.d
pool ntp.aliyun.com iburst
pool ntp.tencent.com iburst
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
ntsdumpdir /var/lib/chrony
logdir /var/log/chrony
maxupdateskew 1.0
rtcsync
makestep 1 -1
leapsectz Asia/Shanghai
bindcmdaddress 127.0.0.1
EOF
systemctl restart chrony.service
systemctl enable chrony.service
##配置时区为亚洲时区
timedatectl set-timezone 'Asia/Shanghai'
2 Ubuntu安装禁止弹窗跳出
2.1 说明
此设置主要是因为在写脚本的时候,如果跳出提示影响脚本的执行,可以进行关闭。
禁止提示:
- Pending kernel upgrade:这个功能主要是needrestart的一个软件,会自动重启服务。有时候会很有用。不想出现提示可以有两种方式:
- 1)完全删除needrestart。但是有时候会需要,所以一般不使用这种方式。
- 2)隐藏这种信息
- Daemons using outdated libraries
2.2 needrestart了解
首先需要明确知道,以上两个提示都是由于needrestart这个软件产生的。所以需要了解。
1、needrestart介绍
needrestart 本身是一个用 Perl 编写的简单脚本。其工作原理的一个简单来说就是,检查正在运行的进程,并重新启动包含“ deleted”标志的服务。当一些特定的库因软件包更新而被替换时,needrestart通过仅重新启动必要的服务并减少影响范围来维持安全状态。
needrestart本身不仅支持更新库,还支持以下数据。
- 内核更新
- Intel/ AMD CPU 微码更新
- 更新Java/ Perl/ Python/ Ruby 中使用的库
- 忽略 Docker 容器内的进程
- 通知LXC/ LXD 容器中的进程实例重新启动
- 更新 QEMU 时通知需要重新启动的 VM 列表
所以在Ubuntu服务器更新软件包最后会出现以下提示:
2、needrestart配置文件
配置文件: - /etc/needrestart/needrestart.conf
- /etc/needrestart/conf.d/ 下的所有文件
needrestart可以通过在配置文件的文件名前添加数字来控制加载顺序。如:/etc/needrestart/conf.d/00-foo.conf
3、更改重启模式
关于 needrestart 模式: - a:自动更新所有
- i:交互式,默认的,就是弹出那个框框让你自己选
- l:只是把要重启服务的列出来
根据需要选择 a 或者 l 模式就行
needrestart.conf
# Restart mode: (l)ist only, (i)nteractive or (a)utomatically.
#
# ATTENTION: If needrestart is configured to run in interactive mode but is run
# non-interactive (i.e. unattended-upgrades) it will fallback to list only mode.
#
#$nrconf{restart} = 'i';
4、始终防止重启
needrestart查询用户是否在交互模式下更新了软件包,并指定了“ i” ,并使用“ 从头开始检查需要重新启动的服务” 。换句话说,如果你在该状态下不小心按了回车键,你需要的一切都会重新启动。“ defno”选项抑制了这一点。
# Change default answer to 'no' in (i)nteractive mode.
#$nrconf{defno} = 1;
通过注释掉上面的内容或者像重启模式一样在单独的文件中$nrconf{defno}设置为1 ,需要重启的服务将始终在不勾选的情况下进行查询,这样就不用担心误按回车了。
不过这样下去的话,就会有不知道该重启哪一个的坏处。因此,手动运行needrestart时,需要将UI从Debconf更改为文本模式。
这样,系统会一一要求输入每一项必需的内容,因此您可以根据需要在Enter (不重新启动)或“y” (重新启动)之间切换。您还可以使用 更改 UI 。needrestart.conf
# Use preferred UI package.
#$nrconf{ui} = 'NeedRestart::UI::stdio';
把这个注释掉就可以了。还可以通过单击“ needrestart -u ?”来检查可以指定的UI 。
5、将特定库列入黑名单
通过库文件名而不是服务名称将其列入黑名单。即使这个文件更新了,服务也不会更新。
# Blacklist binaries (list of regex).
$nrconf{blacklist} = [
# ignore sudo (not a daemon)
qr(^/usr/bin/sudo(\.dpkg-new)?$),
# ignore DHCP clients
qr(^/sbin/(dhclient|dhcpcd5|pump|udhcpc)(\.dpkg-new)?$),
# ignore apt-get (Debian Bug#784237)
qr(^/usr/bin/apt-get(\.dpkg-new)?$),
];
# 也可以直接配置在conf.d 目录下
$nrconf{blacklist}{ qr(正则表达式) } = 0;
2.3 解决
# 直接删除needrestart包
# apt remove needrestart
# 配置
# 以下两种方式都可以
sed -i 's/#$nrconf{kernelhints} = -1;/$nrconf{kernelhints} = 0;/' /etc/needrestart/needrestart.conf
echo "\$nrconf{restart} = 'a';" | sudo tee /etc/needrestart/conf.d/50-autorestart.conf
# 或者
cat > /etc/needrestart/conf.d/silence_kernel.conf <<'EOF'
$nrconf{kernelhints} = 0;
$nrconf{restart} = 'l';
EOF
3 允许root用户登录及切换用户免密
# Sudo -i 直接登录
## 添加sudo -i直接登录 #提权操作
## 打开终端窗口,并执行以下命令以编辑 sudoers 文件
sudo visudo
## 在 sudoers 文件中,找到下面这一行:
%sudo ALL=(ALL:ALL) ALL
## 在该行的下方添加一行,允许 Ubuntu 用户以无需密码的方式切换到 root 用户:
smile ALL=(ALL) NOPASSWD:ALL
## 保存并关闭文件。在 visudo 编辑器中,可以使用 Ctrl + X、Y 和 Enter 按键来保存修改。
# 修改主机名
sudo hostnamectl set-hostname com01
sudo hostnamectl set-hostname con01
sudo hostnamectl set-hostname con02
# 设置可以root用户登录
sed -i "/^#PermitRootLogin/ a PermitRootLogin yes" /etc/ssh/sshd_config
systemctl restart sshd