安装好debian10/11后,我们需要做的一些基本配置后,用起来会变得更加得心应手。常用命令实际上官方手册是最好的参考手册,我这里只是总结了自己常用的。
Debian官方参考手册
https://www.debian.org/doc/manuals/debian-reference/
Debian系统基本的操作命令
切换到 root shell 提示符
# 在任意用户的 shell 提示符下输入 su -l 或 su - su -l su - # 这不会保存当前用户的环境设定。 # 在任意用户的 shell 提示符下输入su root 或 su su root su # 这会保存当前用户的一些环境设定。
退出命令行提示符
同时按 Ctrl + d 键,或键入 exit 退出命令行。
关闭或重启系统
在普通多用户模式模式下,可以使用命令行关闭系统 shutdown -h now
# 立即关机 shutdown -h now # 5分钟后关机 shutdown -h +5 # 重新启动 shutdown -r now
在单用户模式下,可以使用命令行关闭系统 poweroff -i -f
我一直都是使用 poweroff
恢复一个正常的控制台
当做了一些滑稽的事(例如“cat二进制文件”)后,屏幕会发狂,你可以在命令行输入 reset 。你可能无法在屏幕上看到你输入的命令。你也可以输入 clear 来清屏。
递归创建目录
mkdir 命令的基本格式为:
mkdir [-mp] 目录名
-m选项用于手动配置所创建目录的权限,而不再使用默认权限-p选项递归创建所有目录
例如创建 /home/test/abc/ 在默认情况下,需要一层一层的创建各个目录,而使用 -p 选项,则系统会自动为你创建各层级目录。
目录或文件的权限理解与配置
拥有者(Owner)、拥有者所在的组(Group)、其他用户(Other)的权限表示如下:
拥有者、组、其他用户的权限表示关系:
Owner Group Other
| | |
拥有者 拥有者组 其他用户
权限 权限 权限
| | |
rwx rwx rwx
起始字符:d 表示文件夹,- 表示文件
- 表示一个文件夹的权限例子:
drwxrwxrwx - 表示一个文件的权限例子:
-rwxrwxrwx
转换为 数字 表示权限其中对应的关系:
r可读 =4,w可写 =2,x可执行 =1,rwx之和 =7-无权 =0
用不同方式表示权限其中对应的关系:
rwx r-x r-x
| | |
4+2+1 4+0+1 4+0+1
| | |
7 5 5
目录或文件的拥有者配置
# 例1、将/tmp/目录下的test.conf文件修改为root所拥有。 # root(拥有者):root(组) chown root:root /tmp/test.conf # 例2、将/tmp目录包括目录下的所有文件改为root所拥有 chown -R root:root /tmp
目录或文件的权限配置
详细权限有点复杂,我这只记录的常用的权限修改方法
语法为:chmod [-cfvR] file
我们看下面文件的权限示例: root@debian11-ts2:~/test# ls -l total 12 -rw------- 1 root root 8 Oct 16 21:57 test-2.txt -rw-r--r-- 1 root root 8 Oct 16 21:57 test-3.txt -rwxrwxrwx 1 root root 8 Oct 16 20:57 test.txt # 此test-2.txt文件拥有者为root,用户组为root。 # rwx权限属性为rw-(6) ---(0) ---(0),表示只有root用户可以r=4读,w=2写,但x=0不可以执行。其他用户都不能读、写、执行。 -rw------- 1 root root 8 Oct 16 21:57 test-2.txt # 此test-3.txt文件拥有者为root,用户组为root。 # rwx权限属性为rw-(6) r--(4) r--(4),表示root用户可以r=4读,w=2写,但x=0不可以执行。 # root用户组可以r=4读,但w=0不可写,x=0不可执行。其他用户可以r=4读,但w=0不可写,x=0不可执行。 -rw-r--r-- 1 root root 8 Oct 16 21:57 test-3.txt # 此test.txt文件拥有者为root,用户组为root。 # rwx权限属性为rwx(7) rwx(7) rwx(7),表示root用户与root用户组以及其他用户都能 r=4读,w=2写,x=1执行 -rwxrwxrwx 1 root root 8 Oct 16 20:57 test.txt
下面是修改 test-2.txt 文件权限的例子:
root@debian11-ts2:~/test# chmod 605 test-2.txt root@debian11-ts2:~/test# ls -l total 12 -rw----r-x 1 root root 8 Oct 16 21:57 test-2.txt -rw-r--r-- 1 root root 8 Oct 16 21:57 test-3.txt -rwxrwxrwx 1 root root 8 Oct 16 20:57 test.txt root@debian11-ts2:~/test# chmod 611 test-2.txt root@debian11-ts2:~/test# ls -l total 12 -rw---x--x 1 root root 8 Oct 16 21:57 test-2.txt -rw-r--r-- 1 root root 8 Oct 16 21:57 test-3.txt -rwxrwxrwx 1 root root 8 Oct 16 20:57 test.txt
修改目录下的所有文件与子目录权限例子如下:
# 以递归的方式逐个变更 root@debian11-ts2:~/test# chmod -R 600 /root/test root@debian11-ts2:~/test# ls -l total 12 -rw------- 1 root root 8 Oct 16 21:57 test-2.txt -rw------- 1 root root 8 Oct 16 21:57 test-3.txt -rw------- 1 root root 8 Oct 16 20:57 test.txt
查看目录或文件所占空间
使用 du 命令,不加上 -s 会递归列出所有子目录,加上-h 参数更能直观理解占用的容量单位,下面示例:
root@Debian11-Cloud:~# du -sh /site-data/www/ 430G /site-data/www/ root@Debian11-Cloud:~# du -sh /site-data/www/* 429G /site-data/www/nextcloud 126M /site-data/www/nextcloud-22.2.0.tar.bz2 4.0K /site-data/www/nextcloud-22.2.0.tar.bz2.sha256sum 125M /site-data/www/nextcloud-22.2.2.tar.bz2 4.0K /site-data/www/nextcloud-22.2.2.tar.bz2.sha256sum 443M /site-data/www/nextcloud-old 235M /site-data/www/wordpress
系统设置
在最小化安装debian之后,需要根据自己的使用习惯进行一些配置。
调整vi编辑器
调整vi编辑器配置文件:
# 切换至root身份 su - # 使用nano编辑器,编辑vi配置文件 nano /etc/vim/vimrc.tiny # 修改为以下的配置内容 " set compatible set nocompatible set backspace=2
修改完成后,按 Ctrl + x 然后按 y 再按 回车 保存配置即可。
如果vi或nano编辑器显示中文为乱码,cat命令却可以正常显示中文。
发现此问题是在 PVE 上的建立的 CT 容器里的 debian 上
我们可以使用 locale 命令检查区域语言配置
# LXC容器里安装的debian区域语言配置 root@debian11-ts2:~# locale LANG=C LANGUAGE= LC_CTYPE="C" LC_NUMERIC="C" LC_TIME="C" LC_COLLATE="C" LC_MONETARY="C" LC_MESSAGES="C" LC_PAPER="C" LC_NAME="C" LC_ADDRESS="C" LC_TELEPHONE="C" LC_MEASUREMENT="C" LC_IDENTIFICATION="C" LC_ALL= # 我自己手动安装的debian系统区域语言配置 sgtfz@debian-buster:/$ locale LANG=en_US.UTF-8 LANGUAGE= LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" LC_MESSAGES="en_US.UTF-8" LC_PAPER="en_US.UTF-8" LC_NAME="en_US.UTF-8" LC_ADDRESS="en_US.UTF-8" LC_TELEPHONE="en_US.UTF-8" LC_MEASUREMENT="en_US.UTF-8" LC_IDENTIFICATION="en_US.UTF-8" LC_ALL=
解决vi或nano编辑器显示中文乱码问题
# 首先执行 export LC_ALL=en_US.UTF-8 # 然后执行 dpkg-reconfigure locales # 然后选择语言,选中我们不需要的语言按空格取消*号 # 选中en_US.UTF-8 UTF-8,按空格选择,按回车确认 [*] en_US.UTF-8 UTF-8 # 系统环境的默认语言环境 选中en_US.UTF-8,按回车确认 # Default locale for the system environment: en_US.UTF-8 # 最后重启系统生效
完成配置默认语言环境后,vi或nano编辑器即可正常显示中文了。vi编辑器可以输入中文内容,但nano编辑器貌似不可以哟。
查看时区与时间
必须检查并修改为正确的时区,时间才准确。
# 查看时区与时间 timedatectl # 修改时区为亚洲上海 timedatectl set-timezone Asia/Shanghai # 或列出可用时区(可供修改时区作参考) timedatectl list-timezones
有颜色输出的命令
Debian普通用户登录命令提示符,命令的输出是带有颜色的,但是切换到root用户命令提示符却没有了颜色。我们切换到root用户命令提示符,修改root用户目录下的.bashrc文件
vi .bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022
# You may uncomment the following lines if you want `ls' to be colorized:
# 去掉下面五行的注释
# export LS_OPTIONS='--color=auto'
# eval "$(dircolors)"
# alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'
# 如果还需要`用户名@主机名`显示颜色,请加上以下这行。
# 此行从普通用户复制过来的,只修改了`[\033[01;32m\]改为[\033[04;32m\]`增加下横线。
PS1='${debian_chroot:+($debian_chroot)}\[\033[04;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
保存配置后执行命令:source .bashrc 使之生效。
Shell 命令历史记录时间日期
我们切换到root用户命令提示符,修改root用户目录下的.bashrc文件
vi .bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022
# You may uncomment the following lines if you want `ls' to be colorized:
export LS_OPTIONS='--color=auto'
# 增加 export HISTTIMEFORMAT=" %F %T " 并保存
export HISTTIMEFORMAT=" %F %T "
eval "$(dircolors)"
alias ls='ls $LS_OPTIONS'
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
保存配置后执行命令:source .bashrc 使之生效。
然后键入命令 history 就能查看到有时间日期记录的命令历史了
设置静态IP地址
#编辑网卡配置文件 vi /etc/network/interfaces # The primary network interface allow-hotplug eth0 iface eth0 inet static address 192.168.1.121 netmask 255.255.255.0 gateway 192.168.1.1
创建用户及配置权限
adduser xxx 会有向导一步一步的创建用户操作,要求您为新用户分配和确认密码。然后,系统会要求您输入有关新用户的任何其他信息。这是完全可选的,可以按 ENTER 跳过。示例如下:
root@debian11-ts2:~# adduser sgtfz
Adding user `sgtfz' ...
Adding new group `sgtfz' (1000) ...
Adding new user `sgtfz' (1000) with group `sgtfz' ...
Creating home directory `/home/sgtfz' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for sgtfz
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
用户与用户组
# 先看懂 Linux 用户与用户组的表示方式
# 冒号左边是用户 : 冒号右边是用户组
用户 : 组
| |
root : root
添加用户到 XXX 组
将 www-data 用户添加到 redis 组
usermod -aG redis www-data
检查用户 www-data 是否已添加到 redis 组
root@Debian11:~# groups www-data www-data : www-data redis
- 冒号 “:” 右边
www-data redis已有 redis 组 - 说明已经将
www-data用户添加到 redis 组
添加用户到 sudo 组 (可选)
usermod -aG sudo xxx 将 xxx 用户,添加到 sudo 组
最后还要确认 /etc/sudoers
vi /etc/sudoers # 若不存在以下内容,则添加 # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL
仅授予普通用户有限的权限(仅关机权限),前提不要将用户添加到sudo组!
# 编辑权限 visudo # 仅允许普通用户组sgtfz,免密执行shutdown命令 %sgtfz ALL= NOPASSWD: /usr/sbin/shutdown
检查用户是否具有sudo权限
sudo -l -U <UserName>
删除用户及移除权限
deluser xxx删除xxx用户本身,而不删除任何他们的文件deluser --remove-home xxx删除xxx用户并且删除用户的主目录
移除用户的 sudo 权限
# 首先检查用户是否具有sudo权限
root@debian-buster:~# sudo -l -U sgtfz
Matching Defaults entries for sgtfz on debian-buster:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User sgtfz may run the following commands on debian-buster:
(ALL : ALL) ALL
# 检查用户id
root@debian-buster:~# id sgtfz
uid=1000(sgtfz) gid=1000(sgtfz) groups=1000(sgtfz),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev)
# 移除用户sudo权限
root@debian-buster:~# gpasswd -d sgtfz sudo
Removing user sgtfz from group sudo
# 再次检查用户是否拥有sudo权限
root@debian-buster:~# sudo -l -U sgtfz
User sgtfz is not allowed to run sudo on debian-buster.
# 再次检查用户id
root@debian-buster:~# id sgtfz
uid=1000(sgtfz) gid=1000(sgtfz) groups=1000(sgtfz),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev)
允许root用户远程ssh登录
有时为了方便编辑一些文件,使用WinSCP登录修改,需要以root用户登录。我们需要允许root用户ssh登录,如下配置即可:
# 编辑配置文件 vi /etc/ssh/sshd_config # 增加此行配置 PermitRootLogin yes ,或检查去掉这行配置的注释。 PermitRootLogin yes # 然后重启 ssh 生效 /etc/init.d/ssh restart
基础软件包管理操作
在 Debian 系统中有许多基于 APT 的软件包管理工具可以在 Debian 系统上进行基于仓库的软件包管理操作。我常用的操作
查看系统版本
cat /etc/os-release# 查看 Debian 系统大版本号cat /etc/debian_version# 查看 Debian 系统小版本号uname -srm# 查看内核版本
安装软件
apt install xxx# 安装xxx软件包(以及依赖包)
列出软件
apt list xxx# 列出xxx软件包apt list --installed# 显示已安装的软件包apt show xxx# 显示 xxx 软件包的详细信息(版本号,安装大小,依赖关系…)apt search regex(正则表达式)# 搜索匹配regex的软件包
更新软件
apt update# 检查已安装的软件包是否有更新(只检查,不更新)apt list --upgradable# 列出可升级的软件包列表
apt upgrade# 更新升级(已安装的软件包)至最新版本apt install --only-upgrade <package_name># 更新升级(指定软件包)至最新版本apt install --only-upgrade php-8.2*# 可以使用通配符*,仅更新升级php8.2相关的所有软件包
apt full-upgrade# 完全更新升级(已安装的软件包)至最新版本,必要时会移除其它的软件包apt-mark hold <package_name># 标记为保留不更新升级的软件包apt-mark hold php*# 可以使用通配符*,标记保留所有php前缀相关的软件包不更新
apt-mark unhold <package_name># 取消标记保留
删除软件
apt remove xxx# 移除xxx相关联的软件包,不会移除与之相关联的配置文件或数据文件,也不会移除依赖包。apt --purge remove xxx# 移除xxx相关联的软件包,不保留配置文件,也不会移除依赖包。apt -s remove xxx# 模拟卸载,不会真的卸载。apt autoremove# 移除当前系统中的所有孤立的包,即不被任何包依赖的包。据说有点危险,但我卸载 libreoffice 时发现非常不干净,用过此命令,好用的很。
清理apt安装包
定期运行清理安装包,为磁盘腾出一些空间。
apt clean# 清理/var/cache/apt/archives/目录下的所有 deb 安装包,推荐。apt autoclean# 清理/var/cache/apt/archives/目录下(已卸载的软件)的 deb 安装包。
更多的管理操作请访问Debian官方文档:

