Debian/Linux 基础配置及常用命令

安装好 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 来清屏。

目录或文件的权限配置

目录或文件的拥有者配置

# 例1、将/tmp/目录下的test.conf文件修改为root所拥有。
# root(拥有者):root(组) 
chown root:root /tmp/test.conf

# 例2、将/tmp目录包括目录下的所有文件改为root所拥有
chown -R root:root /tmp

目录或文件的权限配置

详细权限有点复杂,我这只记录的常用的权限修改方法,可能很不严谨哟。

语法为:chmod ABC file

其中A、B、C各为一个数字,分别表示User、Group、及Other的权限。

我们把他们对应关系分开整理如下:
     A       B      C
     |       |      |
    rwx     rwx    rwx
     |       |      |
    User   Group   Other
用户的可读 (r=4), 可写 (w=2)和 可执行 (x=1) 权限之和:
若要rwx属性则4+2+1=7
若要rw-属性则4+2+0=6
若要r-x属性则4+0+1=5

我们看下面文件的权限示例:
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 使之生效。

设置静态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

添加用户到 sudo 组 (可选)

usermod -aG sudo xxxxxx 用户,添加到 sudo

查看 xxx 用户是否已添加到 sudo 组。groups 中有 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/initd.d/ssh restart

基础软件包管理操作

在 Debian 系统中有许多基于 APT 的软件包管理工具可以在 Debian 系统上进行基于仓库的软件包管理操作。我常用的操作

安装软件

apt install xxx 安装 xxx 软件包的候选版本以及它的依赖

列出软件

apt list xxx 列出 xxx 软件包

apt list --installed 显示已安装的软件包

apt list --upgradeable 显示可升级的软件包

apt show xxx 显示 xxx 软件包的详细信息(版本号,安装大小,依赖关系…)

apt search regex(正则表达式) 搜索匹配 regex 的软件包

更新软件

apt update 更新软件包档案库元数据

apt upgrade 安装已安装的软件包的候选版本并且不移除任何其它的软件包

apt full-upgrade 安装已安装的软件包的候选版本,并且需要的话会移除其它的软件包

删除软件

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 官方文档:

https://www.debian.org/doc/manuals/debian-reference/ch02.zh-cn.html#_basic_package_management_operations

发表评论