目录

Debian自用设置

系列 - Use Debian

用于系统重装后的快速设置。

参考Users and groups

  1. -d: 指定用户文件夹, -m: 如果文件夹不存在就新建, -s: 指定用户登录时使用指定shell

    sudo useradd -d /home/<UserName> -m -s /bin/bash <UserName>
    如有必要
    递归更改用户文件夹的权限: sudo chown -R <UserName>:<UserGroup> /home/<UserName>
  2. 修改用户密码:

    sudo passwd <UserName>
  1. 更改sudoers文件权限:

    sudo chmod 644 /etc/sudoers
  2. 编辑/etc/sudoers, 在root ALL=(ALL:ALL) ALL下添加一行你的用户名 ALL=(ALL:ALL) ALL, 比如:

    root ALL=(ALL:ALL) ALL
    <UserName> ALL=(ALL:ALL) ALL
sudo passwd root

查看用户详细信息:

cat /etc/passwd

只看“普通用户” (UID >= 1000 的用户) , 通常自己创建的用户 UID 是从 1000 开始的:

awk -F: '$3 >= 1000 && $3 != 65534 {print $1}' /etc/passwd

同理只看“系统用户” (UID < 1000 的用户) :

awk -F: '$3 < 1000 && $3 != 65534 {print $1}' /etc/passwd

查看用户组详细信息:

cat /etc/group

把用户添加到用户组:

gpasswd -a 用户名 组名

把用户从用户组中删除:

gpasswd -d 用户名 组名

查看某个用户所属的所有组:

groups xray

查看某个用户组包含的用户:

grep "^nginx" /etc/group

环境变量配置文件 中添加以下内容:

alias ls="ls -F --color=auto"
alias la="ls -aF --color=auto"
alias ll="ls -alF --color=auto"
alias grep="grep --color=auto"
alias diff="diff --color=auto"
alias ch="> $HOME/.bash_history;history -c;clear"

参考自定义bash提示符颜色

环境变量配置文件 中添加:

export TIME_STYLE="+%Y-%m-%d %H:%M:%S"

输出示例:

-rw------- 1 root root 4096 2022-05-28 20:00:00 .bash_history
提示
  1. ~/.ssh/authorized_keys文件中追加客户端的公钥内容, 然后更改权限:

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
  2. 更改/etc/ssh/sshd_config文件内容:

    # ==========================================
    # 1. 基础连接设置
    # ==========================================
    
    # 默认禁用子配置目录引入, 防止不可控的外部子配置文件覆盖本文件的安全设定
    # Include /etc/ssh/sshd_config.d/*.conf
    
    # 指定 SSH 服务监听的非默认高位端口
    Port 40022
    
    
    # ==========================================
    # 2. 身份验证与访问控制
    # ==========================================
    
    # 仅允许通过指定的用户名进行 SSH 登录
    AllowUsers root senzyo
    
    # 启用 root 用户直接登录
    PermitRootLogin yes
    
    # 启用公钥身份验证机制
    PubkeyAuthentication yes
    
    # 强制限定用户必须且仅能通过公钥进行身份验证, 不接受其他方式
    AuthenticationMethods publickey
    
    # 禁用传统的密码身份验证
    PasswordAuthentication no
    
    # 禁用空密码账户登录, 规避因本地账户无密码配置带来的漏洞
    PermitEmptyPasswords no
    
    # 禁用键盘交互式身份验证
    KbdInteractiveAuthentication no
    
    # 启用插入式验证模块(PAM), 常用于支持多因素认证(MFA)或环境初始化设置
    UsePAM yes
    
    # 每个连接允许的最大身份验证尝试次数。一旦失败次数达到此值的一半, 系统将记录额外的失败日志
    MaxAuthTries 4
    
    # 限制用户连接后完成身份验证的宽限时间, 超时将自动断开连接
    LoginGraceTime 10s
    
    # 显式关闭基于主机的验证
    HostbasedAuthentication no
    
    # 禁用 GSSAPI 认证, 减少暴露面
    GSSAPIAuthentication no
    
    # 禁用 Kerberos 认证
    KerberosAuthentication no
    
    # ==========================================
    # 3. 密码学与主机密钥加固
    # ==========================================
    
    # 限制服务器主机发送指纹时所用密钥类型
    HostKey /etc/ssh/ssh_host_ed25519_key
    
    # 限制客户端公钥类型为 ed25519 密钥
    PubkeyAcceptedAlgorithms ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,sk-ssh-ed25519@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com
    
    
    # ==========================================
    # 4. 会话控制、超时与防 DoS
    # ==========================================
    
    # 指定每个网络连接允许的最大并发活动会话数
    MaxSessions 10
    
    # 限制最大并发未授权连接数(格式为“起始数:丢弃概率:最大值”), 用于防范连接洪泛攻击
    MaxStartups 5:20:10
    
    # 服务器向客户端发送心跳活动消息的间隔时间(单位:秒), 用于检测客户端是否在线
    ClientAliveInterval 60
    
    # 允许客户端无响应的最大重试次数。达到此上限后, 服务器将主动关闭连接
    ClientAliveCountMax 3
    
    # 启用系统的 TCP 保持连接机制, 避免因网络波动导致会话无限期挂起
    TCPKeepAlive yes
    
    # 原生防爆破惩罚机制
    PerSourcePenalties yes
    
    # ==========================================
    # 5. 安全转发限制
    # ==========================================
    
    # 禁用 X11 转发, 防止图形窗口通道被恶意利用
    X11Forwarding no
    
    # 禁用 SSH 代理转发, 防止跳板机上的代理连接被其他特权用户滥用
    AllowAgentForwarding no
    
    # 启用 TCP 端口转发
    AllowTcpForwarding yes
    
    
    # ==========================================
    # 6. 系统环境与子系统设置
    # ==========================================
    
    # 禁用登录时展示的 MOTD 提示信息
    PrintMotd no
    
    # 登录时显示上次登录成功的信息
    PrintLastLog yes
    
    # 禁用传输过程中的数据压缩, 防止由于压缩算法引起的侧信道信息泄露
    Compression no
    
    # 配置并指定 SFTP 文件传输子系统的可执行程序路径
    Subsystem sftp /usr/lib/openssh/sftp-server
    • 如果仍然有登录后提示, 可以清空相应文件> /etc/motd
  3. 重启SSH服务:

    sudo systemctl restart ssh.service
  4. 在防火墙关闭22端口, 放行自定义的SSH端口号。

/etc/apt/source.list中编辑镜像源。先使用http源 (将源中的https替换为http) 安装以下软件:

sudo apt install apt-transport-https ca-certificates

之后再使用https源。

参考 Debian 全球镜像站清华大学开源软件镜像站使用帮助-Debian

参考 Official Archive Mirrors for Ubuntu清华大学开源软件镜像站使用帮助-Ubuntu

检测已安装的驱动: lspci -v。高版本的Linux内核已经自带了iwlwifi-ty-a0-gf-a0-59.ucode

下载驱动, 更多网卡驱动列表

安装:

tar -zxvf iwlwifi-ty-59.601f3a66.0.tgz
sudo cp iwlwifi-ty-59.601f3a66.0/iwlwifi-ty-a0-gf-a0-59.ucode /lib/firmware
sudo rm /lib/firmware/*.pnvm
sudo reboot

检测已安装的驱动: lspci -v

由于Linux内核 (kernel >= 5.9) 自带的rtw88对RTL8821CE兼容性极差, 驱动很快就会掉, 基本无法使用, 所以需要手动安装RTL8821CE无线网卡驱动。

  1. 电脑插入网线, 或者手机USB网络共享。

  2. 编辑/etc/modprobe.d/blacklist.conf, 添加:

    blacklist rtw88_8821ce

    这样就禁用了内核自带的rtw88驱动。

  3. 从tomaspinho的GitHub仓库下载驱动。

  4. 执行命令:

    sudo apt install bc module-assistant build-essential dkms
    sudo m-a prepare
  5. cd到下载的驱动的目录, 执行以下命令:

    sudo ./dkms-install.sh
  6. 默认情况下, Linux可能会启用PCIe活动状态电源管理。这可能与该驱动程序冲突。编辑/etc/default/grub, 在GRUB_CMDLINE_LINUX_DEFAULT后添加pci=noaer, 比如:

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=noaer"

    然后更新grub:

    sudo update-grub

    开机自检遇到某些报错时, 也可以在GRUB_CMDLINE_LINUX_DEFAULT后添加pci=noaer来解决, 这是一个在Stack Overflow常见的解决方案。

  7. 重启设备。

  1. 7-zip
  2. Android Platform Tools
  3. Aria2
  4. FFmpeg
  5. Google Chrome
  6. Hugo, 下载 hugo_extended
  7. Joplin
  8. LocalSend
  9. Lunacy
  10. Microsoft Visual Studio Code
  11. OBS Studio
  12. pot-app
  13. Rime
  14. Telegram
  15. VLC
  16. VirtualBox
  17. 百度网盘
  18. 小白羊网盘
  1. 首先确定待执行文件是否有可执行权限。
  2. 在任意位置右键新建一个链接到应用程序, 然后在应用程序标签下的命令里填入软件所在路径。
  3. 有的软件因为权限问题打不开软件, 可在路径后加上--no-sandbox
  4. 之后将这个配置好的.desktop文件移动到~/.local/share/applications/即可。

/usr/share/applications/中, 编辑要更改的软件的.desktop文件, 在Icon=后填入自定义的软件图标路径即可。

技巧
为防止以后误删该图标, 也可将图标放入/usr/share/pixmaps/文件夹下 (第三方图标都默认存放在这里), 然后在Icon=后接图片名称即可, 不用加文件后缀, 比如现在有文件/usr/share/pixmaps/PicGo.png, 在软件的.desktop文件写入Icon=PicGo即可。
  1. 提前在Windows中将需要的字体从C:/Windows/Fonts中复制出来, 放到C:/Users/<UserName>/Fonts中。

  2. 使用文件管理器(比如Dolphin)挂载Windows系统盘, 这时Windows系统盘根路径一般为/run/media/<UserName>/Windows/

  3. 在Linux中为Windows字体新建一个目录:

    sudo mkdir /usr/share/fonts/Windows
  4. 然后将Windows的字体文件复制过来:

    sudo cp /run/media/<UserName>/Windows/Users/<UserName>/Fonts/* /usr/share/fonts/Windows
    sudo cp /run/media/<UserName>/Windows/Users/<UserName>/Fonts/* /usr/share/fonts/Windows
  5. 更多字体设置参考 字体

查看系统现在的拥塞控制算法:

sysctl net.ipv4.tcp_congestion_control

查看系统可用的拥塞控制算法:

sysctl net.ipv4.tcp_available_congestion_control

如果没有 bbr, 检查 BBR 的内核模块是否已加载:

lsmod | grep bbr

手动加载 BBR 的内核模块:

sudo modprobe tcp_bbr

编辑 /etc/sysctl.conf 或者 /etc/sysctl.d/99-sysctl.conf, 添加:

net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq

运行 sysctl --system 应用更改。

检查系统现在的拥塞控制算法和队列规则算法:

sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc

参考文章: 『败类教程』美西CN2跨网也能单线程500M且0重传!手把手教你TCP调优

但受运营商限制, 未能发挥理论作用, 效果不大。

查看当前 TCP 缓冲区大小:

sysctl net.ipv4.tcp_wmem
sysctl net.ipv4.tcp_rmem

根据 TCP缓冲区计算器 临时设置 TCP 缓冲区大小:

sysctl -w net.ipv4.tcp_wmem="4096 16384 4194304"
sysctl -w net.ipv4.tcp_rmem="4096 131072 6291456"

或将参数写入 /etc/sysctl.conf 以永久保存, 这是 Debian 的默认参数:

net.ipv4.tcp_wmem = 4096 16384 4194304
net.ipv4.tcp_rmem = 4096 131072 6291456