目录

一天刷完《Linux网络操作系统应用基础教程》这本书

多日不见,甚是想念。

这段时间开学了,忙了一阵, 好久没更新博客了。

教科书当中看到了这么一本书(上图),叫做《Linux网络操作系统应用基础教程》。第一眼感觉封面挺好看的,这种简约配色显得这本书有高级感…然而,翻了几页看了,发现这是一本基础书籍。

对于一个用了两年 Arch 又不喜欢看书的人来说,这本书里的内容学起来应该会很快吧。

抱着试试看的态度,我想一天肝完这本书。

全书目录

首先来看一下目录, 差点笑出声。

很明显,这确实是一些基础内容。其中很大部分在两年 Arch 使用经验中也接触过。

/img/photo_2022-09-30_20-37-22.jpg

/img/photo_2022-09-30_20-41-03.jpg

/img/photo_2022-09-30_20-44-12.jpg

看起来都是一些概念+基础+实践操作

概念内容

大概是项目一到项目二的 2.1 的内容,讲了 Linux 的案例、历史、以及流行的发行版。

书中居然没有 Arch, 差评。

但是也描述了 Linux 可以用来运行各种服务,比如 DNS(Domain Name System)服务、Web 服务器(Apache Nginx 这些提供基于HTTP协议的网页服务的)、基于 SMTP 协议的邮件服务器、以及 FTP 协议的文件传输服务器、基于 Samba 协议的文件共享服务器、DHCP 服务器 还有 VPN 服务器。

总之就是讲了 Linux 能干啥、Linux 的优点等, 这些可以通过搜索引擎查到,不多赘述。

实操性内容

往后都是一些操作性的内容,比如 Linux 的安装和搭建各种服务等

安装 Linux 操作系统

书中讲用 VMware 装一个 CentOS 虚拟机。

高中的时候就会了,跳过。

Linux 基础操作

关于基础操作方面,我在初中的时候就写过一丢丢基础命令的笔记

书里也介绍了两种打开终端的方式,一个是在图形界面打开终端,另一种是按 Ctrl + Alt + (F1 ~F6) 来切换 tty。

然后是命令,大部分是加了 -h 参数以后的中文翻译,对于英语不太好的人来说,需要的时候翻阅一下也是一件美事。

另外我需要补充一些初中发的那篇文章当中没有写到的一些命令。

cat

输出一个文件的内容,书中写的用法是

1
cat [选项] [文件名]

但我们一般的用法是

1
cat [文件名]

这个没什么好说的,也是常用的,但是遇到太长的文本就不太好了。

less 和 more

我几乎没见过有人用 more, 命令的使用方式都是一样的,但是效果可能不同吧。

1
more [选项] [文件名]
1
less [选项] [文件名]

一般来说我们都不加什么选项的…

head 和 tail

这个也没啥好说的,参数用法都一样,不过前者看头后者看屁股

1
head [option] [文件名]
1
tail [option] [文件名]

参数选项

  • -n num 显示指定文件的末尾 num 行
  • -c num 显示指定文件的末尾 num 个字符。

rmdir

用来删除目录,用这个的话,删除的目录必须是空的。

否则会报错,和 mkdir 一样,可以加 -p 来进行递归删除。

递归是什么意思?就是一级一级往下删。

1
rmdir [option] [文件名]

然而我平时不喜欢用这个,我喜欢用 rm -r 或者 rm -rfv

touch

touch 命令可以生成一个普通文件。

1
touch [文件名]

grep

这个用来查看文件中包含指定字符串的行,常用。

1
grep [选项] [要查找的字符串] [文件名]

tar

这个 tar 我平时就用来解压。

1
tar xvf [文件名]

然而这是个打包命令, 相当于压缩文档。

1
tar [选项] [档案文件] [文件列表]
  • -c 生成档案文件
  • -v 列出归档文件解档的详细过程
  • -f 指定档案文件名称
  • -r 将文件追加到档案文件末尾
  • -z 以 gzip 格式压缩或解压
  • -j 以 bzip2 格式压缩或解压
  • -d 比较档案与当前目录中的文件
  • -x 解开档案文件

可以用 man 来查看 tar 的更多信息。

1
man tar

rpm

rpm 系发行版的离线软件包安装器。至少我是这么理解的。

1
rpm [选项] [软件包名字]

这个软件包名字是指一个文件名哦, 一些 .rpm 后缀结尾的文件,就是 rpm 系的软件包。

安装好像是这样的

1
rpm -i [软件包名字]

其他的参数

  • -v 安装过程显示详细信息
  • -h 安装过程中显示#号进度条
  • -e 删除软件包
  • -q 查看软件包是否已经安装

也可以通过 man 来阅读手册

1
man rpm

现在都是直接用 yum 或者 dnf 这种包管理器了,使用远程仓库来安装和管理软件包。

文档编辑

至于文档编辑,就需要用 vi 或者 vim

这个也是常有的事

1
vim [文件名]

引用一个菜鸟教程的链接吧

我平常就用个 i 来编辑文档, ESC 来退出编辑模式, :w 保存, :q 来退出。

有时候要加个 ! 强制执行。

保存退出是 :wq

如果有其他需求我会用 man 来看文档。

1
man vim

用户和组的管理

安装 Arch 的时候要干的事,就是用 useradd 添加用户。

桌面系统往往不使用 root 用户, 会添加一个或多个普通用户。

有些多人协作部署的服务器也会利用 Linux 多用户的特性。

提示

GNU/Linux 系统中的每一个文件都从属一个用户(属主)和一个用户组(属组)。另外,还有三种类型的访问权限:读(read)、写(write)、运行(execute)。我们可以针对文件的属主、属组、而设置相应的访问权限。

—— 摘自&&详见 ArchWiki

useradd

这个命令用来添加用户

1
useradd [选项] 用户名

先把参数用法贴上

  • -m / --create-home 创建用户主目录/home/[用户名];在自己的主目录内,即使不是root用户也可以读写文件、安装程序等等。
  • -G / --groups 用户要加入的附加组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅仅加入初始组。
  • -s / --shell 用户默认登录shell的路径;启动过程结束后,默认启动的登录shell在此处设定;请确保使用的shell已经安装,默认是 Bash。
提示

使用 useradd --defaults 可以查看 shell 的默认值。默认是 Bash。使用 -s / --shell 选项可以设置其他值。/etc/shells 记录了可以使用的登录 shell。

—— 摘自 ArchWiki

比如我要在一个新机器上创建一个用户,用户名为 weepingdogel 且需要创建用户主目录 /home/weepingdogel而且加入到 wheel 这个组 ,默认 shell 设置为 Bash

我就会执行这条命令:

1
useradd -G wheel -m -s /bin/bash weepingdogel

那如果我要 zsh 呢?

1
useradd -G wheel -m -s /bin/bash weepingdogel

就像这样咯~

警告
  1. 新增用户不能与已存在用户的用户名相同;
  2. 用户创建后,用户名或组需被 /etc/sudoers 文件包含,否则无法使用 sudo 调取 root 权限;
  3. 别瞎j8乱创建一堆没卵用的用户
  4. 请确保使用的shell已经安装,默认是 Bash。 没装上的 shell 没法用,用户创建不了。

userdel

这个命令用来删除用户

1
userdel [选项] 用户名

加上 -r 选项可以一并删除用户主目录

1
userdel -r 用户名
警告
别瞎j8乱删用户

没什么好说的,详见 man userdel

groups

这个命令用来查看用户属于哪些组。

1
groups [用户名]

当然我们也可以通过查看 /etc/group 来查看所有组。

1
cat /etc/group

id

这个命令可以显示用户的一些额外信息,比如 UIDGID 等等。

1
id [用户名]

groupadd 和 groupdel

前者是创建新组,后者是删除一个组。

创建一个新组:

1
groupadd [组名]

删除一个用户组:

1
groupdel [组名]
警告
别瞎j8乱删组

groupmod

往往用来更改用户所属组的名字,但不变更 GID

1
groupmod -n [新名字] [旧名字]

gpasswd

往往用来变更用户所属于哪个组的情况。

比如将某个用户添加到某个组:

1
gpasswd -a [用户名] [组名]

或者将用户从某个组中移除:

1
gpasswd -d [用户名] [组名]

其他的用法也可以参考 man gpasswd

提示
如果用户已经处于登录状态,必须重新登录才能更改生效。

一些相关文件列表

  • /etc/shadow 保存用户安全信息
  • /etc/passwd 用户账户信息
  • /etc/gshadow 保存组账号的安全信息
  • /etc/group 定义用户所属的组
  • /etc/sudoers 可以运行 sudo 的用户
  • /home/* 主目录

要好好记住它们。

基本磁盘管理

当然也涉及到了磁盘的管理,这个其实在安装 Arch 的时候就能接触不少。

查看分区情况

当 Linux 识别到磁盘,就会将其分配为一个块设备, 在系统里是个文件,比如 /dev/sda/dev/nvme0n1/dev/mmcblk0。可以使用 lsblk 或者 fdisk 查看:

1
fdisk -l
提示
不同的设备当中,磁盘的块设备表示也不同,比如使用 SATA 接口的硬盘会被显示为 /dev/sd*X, 而使用 NVME 硬盘则会显示为 /dev/nvme*n*

创建编辑分区

你可以去搜索引擎找 fdisk 的说明,按照它来创建、编辑分区,可以用简单的 cfdisk

/img/截图_2022-10-01_14-31-22.png

甚至可以用一些发行版自带的图形化分区工具。

格式化

分区创建好以后,就要选择合适的文件系统来进行格式化。

文件系统有哪些?具体可以参考这个页面

Linux 往往用 EXT4

使用 mkfs

1
mkfs.ext4 /dev/partition

挂载分区

1
mount [被挂载的分区] [要挂载到的地方]

当然也可以写 /etc/fstab 来进行自动挂载,详情可以看这里

资源共享服务

FTP

搭建 FTP 服务器

首先使用包管理器安装 vsftpd

deb

1
sudo apt install vsftpd

centos

1
sudo yum install vsftpd

通过编辑 /etc/vsftpd.conf 来配置

比如允许匿名登录,以及允许无密码登录

1
2
anonymous_enable=YES
no_anon_password=YES

然后通过 systemd 启动

1
sudo systemctl start vsftpd

通过客户端连接

/img/截图_2022-10-01_15-58-41.png

参考Arch Wiki, 可根据实际情况调整配置。

Samba

不搞这玩意,太危险了。

DHCP 服务器

直接安装 dhcpd

deb

1
sudo apt install dhcpd

centos

1
yum install -y dhcpd

pacman

1
sudo pacman -S dhcpd

写配置文件 /etc/dhcpd.conf:

1
2
# No DHCP service in DMZ network (192.168.2.0/24)
subnet 192.168.2.0 netmask 255.255.255.0 

然后通过 systemd 来启动服务

1
sudo systemctl start dhcpd4

DNS 服务器

懒得搞了,不难

参考 https://wiki.archlinux.org/title/BIND_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

Apache 服务器

这个简单

deb

1
sudo apt install apache2

pacman

1
sudo pacman -S apache

rpm

1
sudo yum install -y apache2

直接启动服务

1
sudo systemctl start httpd

然后访问 http://127.0.0.1:80就行。

总结

什么垃圾书!

很简单,但是太老了,跟不上时代了。

还是自己去网上找资料来得快。