2021-08-14: Distribution Release: Debian 11
安装摘要
本例使用 Debian 11 AMD64(x86_64)CD:debian-11.0.0-amd64-netinst.iso 进行安装。
- 语言选择,选择 English,Location 选择 China
- 设定 root 账号密码,并提示新建一个账号(普通用户)并设置密码
- 分区,默认 ext4 文件系统,可选 LVM
- 软件包管理,可以选择本地镜像源
- 组件:默认选择 GNOME 桌面环境(这里取消)和 Standard System Utilities(保持勾选),勾选 SSH server
默认没有安装 sudo
Debian 在安装过程中设置 root 密码,并提示创建一个普通用户,SSH server 需要手动勾选安装,root 默认不允许 SSH 登录,同时默认并没有 sudo,所以第一步必须配置 sudo,或者开启 root 账号 SSH 登录(存在安全性风险,不推荐)。
1 | 本例中安装时创建了一个名为 sa 的用户: |
软件包管理入门
Debian 软件包管理叫做 Advanced Packaging Tool (APT),是一套管理软件包和相关依赖的机制,可以实现应用程序的安装、移除和更新等。
如果您已经有了 Linux(CentOS、Ubuntu)或者 Unix(macOS、FreeBSD)任一产品的软件包管理工具使用经验,对于其他系统可以参看下表快速入门:
| 命令功能/系统 | macOS/Darwin | FreeBSD | Debian/Ubuntu | CentOS(dnf = yum) |
|---|---|---|---|---|
| 搜索和查找软件包 | brew search | pkg search | apt list | yum list |
| 查看软件包信息 | brew info | pkg info | apt show | yum info |
| 安装 | brew install | pkg install | apt install | yum install |
| 删除 | brew uninstall/remove/rm | pkg delete/remove | apt remove | yum remove |
| 删除不在使用的软件包 | brew autoremove | pkg autoremove | apt autoremove | yum autoremove |
| 更新 repo 列表 | brew update | pkg update | apt update | yum makecache |
| 更新软件包 | brew upgrade | pkg upgrade | apt upgrade | yum upgrade/update |
| 清理缓存临时文件等 | brew cleanup | pkg clean | apt autoclean | yum clean all |
备注:CentOS 8 开始,使用 dnf,但 yum 仍然可用,实际上两个命令都是相同的文件链接,等价。
可以看到,CentOS 中更新 repo 列表的命令与其他不同,其他命令几乎都是相同或者极为类似。
当然 Ubuntu 是基于 Debian 构建,apt 使用方式是一样的。
创建一个管理员账号
默认配置下,创建一个管理员账号,即有 sudo 权限执行所有命令的用户:
useradd -m -s /bin/bash -G sudo user1 #user1 为用户名
passwd user1 #为 user1 设置密码
备注:
-m 创建同名 home 目录
-s 指定 shell
-G 修改附加属组
配置 vi
系统自带 vi 即 vim 8.2.2434,默认配置有点难用,使用 .vimrc 配置文件后报错,竟然不支持语法高亮:
E319: Sorry, the command is not available in this version: syntax on
安装最新的 vim:
sudo apt install vim
虽然版本并没有更新,安装了附件组件,已经正常了。
.vimrc 配置文件参考如下:
1 | """""""""""""""""""""""""""""""""""""" |
修改 root 密码
sudo passwd root
修改配置文件
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo vi /etc/ssh/sshd_config
找到下面相关配置:
Authentication:
LoginGraceTime 2m
PermitRootLogin prohibit-password
StrictModes yes
MaxAuthTries 6
MaxSessions 10
PubkeyAuthentication yes
Expect .ssh/authorized_keys2 to be disregarded by default in future.
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
修改如下
增加一句
PermitRootLogin yes
快速配置:
sudo sed -i "/^#PermitRootLogin/c"PermitRootLogin""yes"" /etc/ssh/sshd_config
补充
PermitRootLogin prohibit-password #允许 root 登录,但禁止适用密码认证
可以配合使用 Pubkey 认证,修改 PubkeyAuthentication yes
重启服务生效
sudo systemctl restart ssh
1 |
|
编辑 grub 配置文件
sudo vi /etc/default/grub
修改 GRUB_CMDLINE_LINUX=""为 GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
直接使用 sed 编辑
sudo sed -i "/^GRUB_CMDLINE_LINUX=""/c GRUB_CMDLINE_LINUX=\"net.ifnames=0 biosdevname=0\"" /etc/default/grub
更新 grub 配置文件
sudo update-grub
然后下一节编辑配置文件并重启生效
vi /etc/network/interfaces
将 ensxxx 修改为 eth0
重启系统生效
reboot
1 |
|
$ cat /etc/network/interfaces
This file describes the network interfaces available on your system
and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
The loopback network interface
auto lo
iface lo inet loopback
The primary network interface
allow-hotplug ens33 #ens33 修改为 eth0
iface ens33 inet dhcp #ens33 修改为 eth0
1 |
|
sudo vi /etc/network/interfaces
修改为以下内容:
iface lo inet loopback
auto lo
auto eth0
iface eth0 inet static
address 10.10.1.5
netmask 255.255.255.0
broadcast 10.10.1.255 #可选,上述配置了掩码
network 10.10.1.0 #可选,上述配置了掩码
gateway 10.10.1.1
dns-domain example.com
domain 和 search 不能共存;如果同时存在,后面出现的将会被使用。
dns-search sysin.org
dns-nameservers 10.10.1.1 8.8.8.8 #注意 debian 11 默认没有安装 resolvconf,所以需要手动在 resolv.conf 中编辑 DNS
或者安装 resolvconf 后,在这里配置,将自动更新 resolv.conf
sudo apt install resolvconf
iface eth0 inet6 auto #ipv6 自动配置,不写则表示禁用了
DHCP 配置如下:
auto eth0
iface eth0 inet dhcp
配置 DNS
cat /etc/resolv.conf #如果已经安装 resolvconf,不要手动编辑,直接在上述 interfaces 中编辑 dns
重启网络
sudo systemctl restart networking
sudo service networking restart
1 |
|
配置多个 IP:
auto eth0:0
iface eth0:0 inet static
1 | address 192.168.1.90 |
auto eth0:1
iface eth0:1 inet static
1 | address 192.168.1.91 |
添加静态路由(Linux 通用,临时,重启消失):
route add -net 10.10.11.0/24 gw 10.10.1.1
Debian 配置永久静态路由:
添加
cat >> /etc/network/interfaces << EOF
static routes
up ip route add 10.10.12.0/24 via 10.10.1.1 dev eth0
up ip route add 10.10.13.0/24 via 10.10.1.1 dev eth0
up ip route add 10.10.14.0/24 via 10.10.1.1 dev eth0
up ip route add 10.10.15.0/24 via 10.10.1.1 dev eth0
up ip route add 10.10.16.0/24 via 10.10.1.1 dev eth0
EOF
重启网络
systemctl restart networking
验证
ip route
1 |
|
设置主机名:
hostnamectl set-hostname debian01 --static
或者:
sudo vi /etc/hostname
修改为主机名 debian01
debian01
添加 domain name:
sudo vi /etc/hosts
添加一行
127.0.0.1 debian01.sysin.org debian01
注意这里的格式,IP 后面先写 FQDN 再写主机名,与 CentOS 相同
先写 FQDN 后写主机名,顺序反了不影响解析,但是'hostname -f'命令无法显示 FQDN,只能显示主机名
查看 FQDN:
hostname -f
正确显示如下
debian01.sysin.org
1 |
|
查看时区,有 CST 正确
date
设置
sudo timedatectl set-timezone Asia/Shanghai
或者使用向导选择
tzselect
1 |
|
模板使用 mirror.sjtu.edu.cn
备份
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
比如将默认官方中国像源 ftp.cn.debian.org 替换为 mirror.sjtu.edu.cn
sudo sed -i 's/ftp.cn.debian.org/mirror.sjtu.edu.cn/' /etc/apt/sources.list
中国可选镜像站点如下
ftp.cn.debian.org
mirrors.bfsu.edu.cn
mirrors.hit.edu.cn
mirror.sjtu.edu.cn
mirrors.tuna.tsinghua.edu.cn
mirrors.ustc.edu.cn
可以 ping 站点名称,对比一下延迟来选择
1 | 更新: |
sudo apt update #更新源
sudo apt upgrade #更新已安装的包
sudo apt dist-upgrade #升级系统
sudo apt clean && sudo apt autoclean #清理下载文件的存档
apt 是新版命令,替代 apt-get,apt-get 将来会淘汰
1 |
|
安装 chrony:
sudo apt install chrony
sudo systemctl enable chrony
sudo systemctl start chrony
sudo systemctl status chrony
查看配置文件,暂使用默认配置
cat /etc/chrony/chrony.conf
chrony 自带一个交互式工具 chronyc,在配置文件中指定了时间服务器之后,如果想查看同步状态,可以进入这个交互式工具的交互界面。
chronyc 有很多的子命令,可以输入 help 来查看
chronyc> help
1 | 选项: |
查看:
chronyc sources -v
chronyc sourcestats -v
最基本配置:
$ cat /etc/chrony/chrony.conf
Welcome to the chrony configuration file. See chrony.conf(5) for more
information about usable directives.
Include configuration files found in /etc/chrony/conf.d.
confdir /etc/chrony/conf.d
Use Debian vendor zone.
pool 2.debian.pool.ntp.org iburst
修改 pool 2.debian.pool.ntp.org iburst 为指定的 NTP 服务器。
通常是修改为内网中的 NTP,保持时间的统一和可靠同步,否则一般不用修改。
例如 Ubuntu 中默认的是:
pool ntp.ubuntu.com iburst maxsources 4
pool 0.ubuntu.pool.ntp.org iburst maxsources 1
pool 1.ubuntu.pool.ntp.org iburst maxsources 1
pool 2.ubuntu.pool.ntp.org iburst maxsources 2
这里的 pool 表示一组服务器,也可以用 sever 指令替代,标识一台服务器,可以是域名也可以是 IP 地址。
1 |
|
默认自动安装,查看状态如下:
查看版本
vmtoolsd -v
查看运行状态
systemctl status vmtoolsd
如果未安装,执行如下命令安装:
apt install open-vm-tools
1 |
|
sudo apt install zip unzip
sudo apt install lrzsz
sudo apt install htop #已经收录
sudo apt install lnav
sudo apt install fd-find #fd 命令,已经收录,命令为 fdfind
sudo ln -s /usr/bin/fdfind /usr/local/bin/fd
sudo apt install ripgrep #rg 命令,已经收录
sudo apt install tree
sudo apt install build-essential #Following command will install essential commands like gcc, make etc.
sudo apt install net-tools #ifconfig、netstat、route 等命令集,默认安装
sudo apt install ntp ntpdate ntpstat #可选,模板未安装
nc lsof 系统自带
pstree
sudo apt install psmisc
ncdu:NCurses Disk Usage
sudo apt install ncdu
dstat 监控 CPU、磁盘和网络使用率
sudo apt install dstat
1 |
|
命令自动补全忽略大小写
echo 'set completion-ignore-case on' >> ~/.inputrc
修改 vmrc(vim 配置文件)
为当前用户创建 ~/.vimrc,内容参看上述 “配置 vi”
为将 .vimrc 添加到默认用户配置文件 cp ~/.vimrc /etc/skel/.vimrc
ll 常规版
一般 Linux 中默认定义了 ll 别名,但参数比较少,需要使用更加强大的 ll 别名。
Debian 默认并没有定义 ll 别名。
写入环境变量(当前用户优先执行):
bash:
echo 'alias ll="ls -lahF --color=auto --time-style=long-iso"' >> ~/.bashrc
高级版 ls:以数字显示权限
这里我们把命令叫做 lll
命令:
ls -lahF --color=auto --time-style=long-iso | awk '{k=0;s=0;for(i=0;i<=8;i++){k+=((substr($1,i+2,1)~/[rwxst]/)*2^(8-i))}j=4;for(i=4;i<=10;i+=3){s+=((substr($1,i,1)~/[stST]/)*j);j/=2}if(k){printf("%0o%0o ",s,k)}print}'
创建文件
在使用 cat EOF 中出现 $ 变量通常会直接被执行,显示执行的结果。若想保持 $ 变量不变需要使用 \ 符进行注释。
如果非 root 用户,切换到 root
sudo -i
cat > /usr/local/bin/lll <<EOF
!/bin/bash
ls -lahF --color=auto --time-style=long-iso | awk '{k=0;s=0;for(i=0;i<=8;i++){k+=((substr($1,i+2,1)~/[rwxst]/)2^(8-i))}j=4;for(i=4;i<=10;i+=3){s+=((substr($1,i,1)~/[stST]/)j);j/=2}if(k){printf("%0o%0o ",s,k)}print}'
EOF
赋予执行权限:
chmod +x /usr/local/bin/lll
如果非 root 用户,执行完毕退出
exit
写入环境变量(可选配置,默认不需要):
bash
echo 'alias lll="/usr/local/bin/lll"' >> ~/.bashrc
1 |
|
清理 apt 缓存
sudo apt clean && sudo apt autoclean #清理下载文件的存档
清理临时文件夹
rm -rf /tmp/* # 清空临时文件夹
清空历史记录
比较完整的清空历史记录
debian/ubuntu use auth.log
rm -f /var/log/auth.log.*
echo > /var/log/auth.log
rm -f /var/log/audit/audit*
echo > /var/log/audit/audit.log
rm -f /var/log/secure*
echo > /var/log/secure
rm -f /var/log/btmp*
echo > /var/log/btmp
echo > /var/log/lastlog
rm -f /var/log/wtmp*
echo > /var/log/wtmp
以上需要 root,以下当前用户执行
echo > ~/.bash_history
echo > ~/.zsh_history
history -c
1 |
|
评论已关闭