Linux操作指南与实践
1. 搭建Linux桌面环境
1.1 选择Linux系统
若要开启Linux实践,需准备好Linux系统,可选择Fedora Live CD(或已安装的系统)、Ubuntu已安装系统,或者Red Hat Enterprise Linux已安装系统:
-
Fedora Live CD(GNOME 3)
:按附录说明获取Fedora Live CD,可按第2章“从Fedora GNOME桌面实时镜像开始”部分的描述直接运行,也可按第9章“安装Linux”的说明安装到硬盘后运行。
-
Ubuntu(GNOME 3)
:按第2章开头的说明安装Ubuntu和GNOME Shell软件。
-
Red Hat Enterprise Linux 8(GNOME 3)
:按第9章的说明安装Red Hat Enterprise Linux 7。
-
Red Hat Enterprise Linux 6或更早版本(GNOME 2)
:安装Red Hat Enterprise Linux 6。
1.2 启动Firefox浏览器并访问GNOME主页
若要启动Firefox浏览器并访问GNOME主页(http://gnome.org),可按以下步骤操作:
-
GNOME 3
:按下Windows键进入概览屏幕,输入Firefox以高亮显示Firefox浏览器图标,按下Enter键启动,在地址栏输入http://gnome.org并按下Enter键。
-
GNOME 2
:从顶部菜单栏选择Firefox图标,在地址栏输入http://gnome.org并按下Enter键。
1.3 设置桌面背景
若要从GNOME艺术网站(http://gnome-look.org)选择喜欢的背景,下载到Pictures文件夹并将其设置为当前桌面背景,可按以下步骤操作:
1. 在Firefox地址栏输入http://gnome-look.org/并按下Enter键。
2. 找到喜欢的背景并选择,点击下载按钮将其下载到Pictures文件夹。
3. 打开Pictures文件夹,右键单击图像,选择“设置为壁纸”。
1.4 移动Nautilus文件管理器窗口
若要启动Nautilus文件管理器窗口并将其移动到桌面的第二个工作区,可按以下步骤操作:
-
GNOME 3
:
1. 按下Windows键。
2. 从侧边栏选择“文件”图标,在当前工作区启动一个新的Nautilus实例。
3. 右键单击文件窗口的标题栏,选择“移动到下方显示器”,文件窗口将移动到第二个工作区。
-
GNOME 2
:
1. 从GNOME 2桌面双击打开“主文件夹”。
2. 右键单击出现的Nautilus标题栏,选择“移动到右侧工作区”或“移动到其他工作区”,可从列表中选择要移动到的工作区。
1.5 打开下载的桌面背景图像
若要找到下载用作桌面背景的图像并在任何图像查看器中打开,可先进入主文件夹,然后打开Pictures文件夹,双击图像即可在图像查看器中打开。
1.6 在不同工作区之间切换
若要在包含Firefox和Nautilus文件管理器的工作区之间切换,可按以下步骤操作:
-
GNOME 3
:按下Windows键,在右侧列中选择要切换到的工作区;也可按下Alt + Tab键,再次按下Tab键并使用箭头键高亮显示要打开的应用程序。
-
GNOME 2
:使用鼠标点击底部面板右侧的小工作区表示来选择要切换到的工作区;若启用了桌面效果(系统→首选项→桌面效果→Compiz),可尝试按下Ctrl + Alt + 右箭头(或左箭头)切换到下一个工作区。
1.7 打开图像查看器
若要打开系统上安装的应用程序列表并从中选择图像查看器打开,可按以下步骤操作:
-
GNOME 3
:将鼠标移动到屏幕左上角进入概览屏幕,选择“应用程序”,然后从右侧列中选择“实用工具”,最后选择“图像查看器”。
-
GNOME 2
:选择“应用程序”→“图形”→“图像查看器”,在桌面上打开图像查看器窗口。
1.8 更改窗口视图
若要将当前工作区的窗口视图更改为可逐步浏览的小视图,可按以下步骤操作:
-
GNOME 3
:在多个工作区中打开多个窗口时,按下Alt + Tab键,持续按住Alt键,按下Tab键直到高亮显示要选择的应用程序,释放Alt键进行选择。
-
GNOME 2
:在多个工作区中打开多个窗口时,按下并按住Ctrl + Alt + Tab键,持续按住Ctrl + Alt键,按下Tab键直到高亮显示要选择的应用程序,释放Ctrl和Alt键进行选择。
1.9 启动音乐播放器
若要仅使用键盘从桌面启动音乐播放器,可按以下步骤操作:
-
GNOME 3
:
1. 按下Windows键进入概览屏幕。
2. 输入Rhyth直到图标出现并高亮显示,按下Enter键;在Ubuntu中,若未安装Rhythmbox,可输入Bansh以打开Banshee媒体播放器。
-
GNOME 2
:按下Alt + F2,在出现的“运行应用程序”框中输入rhythmbox并按下Enter键。
1.10 截取桌面截图
若要仅使用键盘截取桌面截图,可按下Print Screen键截取整个桌面,按下Alt + Print Screen键截取当前窗口,截图将保存到主文件夹的Pictures文件夹中。
2. 使用Shell
2.1 切换虚拟控制台并返回桌面
若要在Fedora或Ubuntu中切换虚拟控制台并返回桌面(部分RHEL系统可能禁用此功能),可按以下步骤操作:
1. 按住Ctrl + Alt并按下F2(Ctrl + Alt + F2),应出现基于文本的控制台。
2. 输入用户名并按下Enter键,输入密码并按下Enter键。
3. 输入一些命令,如id、pwd和ls。
4. 输入exit退出shell并返回登录提示。
5. 按下Ctrl + Alt + F1返回包含桌面的虚拟控制台(不同Linux系统中,桌面可能位于不同的虚拟控制台,Ctrl + Alt + F7和Ctrl + Alt + F2也是常见的位置)。
2.2 设置终端窗口颜色
若要将终端窗口的字体设置为红色,背景设置为黄色,可按以下步骤操作:
1. 从GNOME桌面选择“应用程序”→“系统工具”→“终端”以打开终端窗口。
2. 从终端窗口选择“编辑”→“配置文件首选项”。
3. 选择“颜色”选项卡,取消选择“使用系统主题的颜色”框。
4. 选择“文本颜色”旁边的框,从可用选项中选择红色并点击“选择”。
5. 选择“背景颜色”旁边的框,从可用选项中选择黄色并点击“选择”。
6. 点击“配置文件”窗口上的“关闭”以返回具有新颜色的终端窗口。
7. 重新选择“使用系统主题的颜色”框以恢复默认终端颜色。
2.3 查找命令和手册页
若要查找mount命令和tracepath手册页,可按以下步骤操作:
1. 运行type mount以查看mount命令的位置,可能是/usr/bin/mount或/bin/mount。
2. 运行locate tracepath以查看tracepath手册页的位置,位于/usr/share/man/man8/tracepath.8.gz。
2.4 运行、召回和更改命令
若要运行、召回和更改以下命令,可按以下步骤操作:
$ cat /etc/passwd
$ ls $HOME
$ date
- 修改cat /etc/passwd命令 :按下上箭头直到看到cat /etc/passwd命令,若光标不在行尾,按下Ctrl + E移动到行尾,退格删除passwd,输入group,按下Enter键。
- 修改ls $HOME命令 :输入man ls,找到按时间列出的选项(-t),按下上箭头直到看到ls $HOME命令,使用左箭头键或Alt + B将光标定位到$HOME左侧,输入 -t,使命令变为ls -t $HOME,按下Enter键运行命令。
- 修改date命令 :输入man date查看date手册页,使用上箭头召回date命令并添加找到的格式指示符,单个%D格式指示符即可满足需求:
$ date +%D
04/27/20
2.5 使用制表符补全
若要使用制表符补全输入basename /usr/share/doc/,可输入basen /u sh do 以得到basename /usr/share/doc/。
2.6 管道命令
若要将/etc/services文件通过管道传递给less命令,可输入$ cat /etc/services | less。
2.7 格式化日期输出
若要使date命令的输出显示为“Today is Thursday, April 23, 2020”的格式,可输入:
$ echo "Today is $(date +'%A, %B %d, %Y')"
2.8 查看变量
若要查看当前主机名、用户名、shell和主目录的变量,可输入:
$ echo $HOSTNAME
$ echo $USERNAME
$ echo $SHELL
$ echo $HOME
2.9 添加别名
若要添加一个永久的mypass别名以显示/etc/passwd文件的内容,可按以下步骤操作:
1. 输入nano $HOME/.bashrc。
2. 将光标移动到页面底部的空行(如有需要,按下Enter键打开新行)。
3. 在新行中输入alias m=”cat /etc/passwd”。
4. 按下Ctrl + O保存,按下Ctrl + X退出文件。
5. 输入source $HOME/.bashrc。
6. 输入alias m确保别名设置正确:alias m=’cat /etc/passwd’。
7. 输入m,/etc/passwd文件将显示在屏幕上。
2.10 显示mount系统调用的手册页
若要显示mount系统调用的手册页,可使用man -k命令查找包含mount一词的手册页,然后使用带有正确章节编号(8)的mount命令获取正确的mount手册页:
$ man -k mount | grep ^mount
mount (2) - mount filesystem
mount (8) - mount a filesystem
...
mountpoint (1) - see if a directory is a mountpoint
mountstats (8) - Displays various NFS client per-mount statistics
$ man 2 mount
MOUNT(2) Linux Programmer's Manual
MOUNT(2)
NAME
mount - mount file system
SYNOPSIS
#include <sys/mount.h>
3. 管理文件系统
3.1 创建目录和文件
若要创建projects目录,创建九个空文件(house1到house9)并列出这些文件,可输入:
$ mkdir $HOME/projects/
$ touch $HOME/projects/house{1..9}
$ ls $HOME/projects/house{1..9}
3.2 创建多级目录和文件
若要创建$HOME/projects/houses/doors/目录路径并在该路径中创建一些空文件,可输入:
$ cd
$ mkdir $HOME/projects/houses
$ touch $HOME/projects/houses/bungalow.txt
$ mkdir $HOME/projects/houses/doors/
$ touch $HOME/projects/houses/doors/bifold.txt
$ mkdir -p $HOME/projects/outdoors/vegetation/
$ touch $HOME/projects/outdoors/vegetation/landscape.txt
3.3 复制文件
若要将文件house1和house5复制到$HOME/projects/houses/目录,可输入:
$ cp $HOME/projects/house[15] $HOME/projects/houses
3.4 递归复制目录
若要将/usr/share/doc/initscripts*目录递归复制到$HOME/projects/目录,可输入:
$ cp -ra /usr/share/doc/initscripts*/ $HOME/projects/
3.5 递归列出目录内容
若要递归列出$HOME/projects/目录的内容,并将输出通过管道传递给less命令以便分页查看,可输入:
$ ls -lR $HOME/projects/ | less
3.6 删除文件
若要删除文件house6、house7和house8而不提示确认,可输入:
$ rm -f $HOME/projects/house[678]
3.7 移动文件
若要将house3和house4移动到$HOME/projects/houses/doors目录,可输入:
$ mv $HOME/projects/house{3,4} $HOME/projects/houses/doors/
3.8 删除目录及其内容
若要删除$HOME/projects/houses/doors目录及其内容,可输入:
$ rm -rf $HOME/projects/houses/doors/
3.9 更改文件权限
若要更改$HOME/projects/house2文件的权限,使其所有者可以读写,组用户只能读取,其他用户没有权限,可输入:
$ chmod 640 $HOME/projects/house2
3.10 递归更改目录权限
若要递归更改$HOME/projects/目录的权限,使该目录下的任何文件或目录都没有写入权限,可输入:
$ chmod -R a-w $HOME/projects/
$ ls -lR $HOME/projects/
/home/joe/projects/:
total 12
-r--r--r--. 1 joe joe 0 Jan 16 06:49 house1
-r--r-----. 1 joe joe 0 Jan 16 06:49 house2
-r--r--r--. 1 joe joe 0 Jan 16 06:49 house5
-r--r--r--. 1 joe joe 0 Jan 16 06:49 house9
dr-xr-xr-x. 2 joe joe 4096 Jan 16 06:57 houses
dr-xr-xr-x. 2 joe joe 4096 Jul 1 2014 initscripts-9.03.40
dr-xr-xr-x. 3 joe joe 4096 Jan 16 06:53 outdoors
4. 处理文本文件
4.1 创建并编辑文件
若要创建/tmp/services文件并将其中的WorldWideWeb编辑为World Wide Web,可按以下步骤操作:
$ cp /etc/services /tmp
$ vi /tmp/services
/WorldWideWeb<Enter>
cwWorld Wide Web<Esc>
修改前后的内容如下:
http 80/tcp www www-http # WorldWideWeb HTTP
http 80/tcp www www-http # World Wide Web HTTP
4.2 移动段落
若要移动/tmp/services文件中的段落,可按以下步骤操作:
$ vi /tmp/services
/Note that it is<Enter>
5dd
G
p
4.3 使用ex模式替换文本
若要使用ex模式在/tmp/services文件中搜索所有出现的tcp(区分大小写)并将其替换为WHATEVER,可输入:
$ vi /tmp/services
:g/tcp/s//WHATEVER/g<Enter>
4.4 搜索文件
若要在/etc目录中搜索所有名为passwd的文件,并将搜索错误重定向到/dev/null,可输入:
$ find /etc -name passwd 2> /dev/null
4.5 创建目录和文件并搜索
若要在主目录中创建名为TEST的目录,在该目录中创建名为one、two和three的文件,这些文件对所有用户(用户、组和其他用户)具有完全的读、写和执行权限,并构建一个find命令以查找这些文件以及主目录及其子目录中对其他用户具有写入权限的任何其他文件,可按以下步骤操作:
$ mkdir $HOME/TEST
$ touch $HOME/TEST/{one,two,three}
$ chmod 777 $HOME/TEST/{one,two,three}
$ find $HOME -perm -002 -type f -ls
148120 0 -rwxrwxrwx 1 chris chris 0 Jan 1 08:56 /home/chris/TEST/two
148918 0 -rwxrwxrwx 1 chris chris 0 Jan 1 08:56 home/chris/TEST/three
147306 0 -rwxrwxrwx 1 chris chris 0 Jan 1 08:56 /home/chris/TEST/one
4.6 查找未修改的文件
若要查找/usr/share/doc目录下超过300天未修改的文件,可输入:
$ find /usr/share/doc -mtime +300
4.7 复制特定大小的文件
若要创建/tmp/FILES目录,查找/usr/share目录下大于5MB且小于10MB的所有文件,并将它们复制到/tmp/FILES目录,可按以下步骤操作:
$ mkdir /tmp/FILES
$ find /usr/share -size +5M -size -10M -exec cp {} /tmp/FILES \;
$ du -sh /tmp/FILES/*
6.6M /tmp/FILES/BidiCharacterTest.txt
7.6M /tmp/FILES/BidiTest.txt
5.2M /tmp/FILES/day.jpg
4.8 创建文件备份
若要查找/tmp/FILES目录中的所有文件,并在同一目录中为每个文件创建备份副本,使用每个文件的现有名称并附加.mybackup创建备份文件,可输入:
$ find /tmp/FILES/ -type f -exec cp {} {}.mybackup \;
4.9 安装包并搜索文件
若要在Fedora或Red Hat Enterprise Linux中安装kernel-doc包,使用grep在/usr/share/doc/kernel-doc*目录中的文件中搜索e1000(不区分大小写),并列出包含该术语的文件名称,可按以下步骤操作:
# yum install kernel-doc
$ cd /usr/share/doc/kernel-doc*
$ grep -rli e1000 .
./Documentation/powerpc/booting-without-of.txt
./Documentation/networking/e100.txt
...
4.10 搜索并高亮显示文本
若要在同一位置再次搜索e1000术语,列出包含该术语的每一行并以颜色高亮显示该术语,可输入:
$ cd /usr/share/doc/kernel-doc-*
$ grep -ri --color e1000 .
5. 管理运行中的进程
5.1 列出所有进程
若要列出系统上运行的所有进程,并将输出通过管道传递给less命令以便分页查看,可输入:
$ ps -ef | less
5.2 按用户排序进程
若要列出系统上运行的所有进程并按运行每个进程的用户名称对这些进程进行排序,可输入:
$ ps -ef --sort=user | less
5.3 列出特定列的进程
若要列出系统上运行的所有进程,显示进程ID、用户名、组名、优先级、虚拟内存大小、常驻内存大小和命令等列,可输入:
$ ps -eo 'pid,user,group,nice,vsz,rss,comm' | less
PID USER GROUP NI VSZ RSS COMMAND
1 root root 0 19324 1236 init
2 root root 0 0 0 kthreadd
3 root root - 0 0 migration/0
4 root root 0 0 0 ksoftirqd/0
5.4 使用top命令排序
若要运行top命令,然后在按CPU使用率和内存消耗排序之间切换,可输入:
$ top
P
M
P
M
5.5 启动并终止进程
若要从桌面启动gedit进程并使用系统监视器窗口终止该进程,可按以下步骤操作:
$ gedit &
在GNOME 2中,选择“应用程序”→“系统工具”→“系统监视器”;在GNOME 3中,从活动屏幕输入“系统监视器”并按下Enter键。在“进程”选项卡中找到gedit进程(可点击“进程名称”标题按字母顺序排序以便查找),右键单击gedit命令,选择“结束进程”或“终止进程”,屏幕上的gedit窗口应消失。
5.6 暂停进程
若要运行gedit进程并使用kill命令发送信号暂停(停止)该进程,可输入:
$ gedit &
[1] 21532
$ kill -SIGSTOP 21532
5.7 恢复进程
若要使用killall命令让之前暂停的gedit命令继续工作,可输入:
$ killall -SIGCONT gedit
确保在gedit暂停后输入的文本现在显示在窗口中。
5.8 安装并终止进程
若要安装xeyes命令,在后台运行约20次,然后使用killall命令一次性终止所有20个xeyes进程,可输入:
# yum install xorg-x11-apps
$ xeyes &
$ xeyes &
...
$ killall xeyes &
需注意,安装包时需要以root用户身份操作,安装后记得重复xeyes命令20次。将窗口分散在屏幕上,移动鼠标观看眼睛移动,输入killall xeyes时,所有xeyes窗口应立即消失。
5.9 以特定优先级启动进程
若要以普通用户身份以优先级5启动gedit命令,可输入:
# nice -n 5 gedit &
[1] 21578
5.10 更改进程优先级
若要使用renice命令将刚刚启动的gedit命令的优先级更改为7,可输入:
# renice -n 7 21578
21578: old priority 0, new priority 7
可使用任何命令验证gedit命令的当前优先级是否已设置为7,例如:
# ps -eo 'pid,user,nice,comm' | grep gedit
21578 chris 7 gedit
6. 编写简单的Shell脚本
6.1 创建脚本显示系统信息
若要在$HOME/bin目录中创建名为myownscript的脚本,该脚本运行时应输出如下信息:
Today is Sat Jun 10 15:45:04 EDT 2019.
You are in /home/joe and your host is abc.example.com.
可按以下步骤操作:
1. 若bin目录不存在,则创建它:
$ mkdir $HOME/bin
- 使用任何文本编辑器创建名为$HOME/bin/myownscript的脚本,内容如下:
#!/bin/bash
# myownscript
# List some information about your current system
echo "Today is $(date)."
echo "You are in $(pwd) and your host is $(hostname)."
- 使脚本可执行:
$ chmod 755 $HOME/bin/myownscript
6.2 创建处理位置参数的脚本
若要创建一个脚本,从命令行读取三个位置参数,分别将这些参数分配给名为ONE、TWO和THREE的变量,并按如下方式替换信息,可按以下步骤操作:
1. 创建名为$HOME/bin/myposition的文件并添加以下内容:
#!/bin/bash
# myposition
ONE=$1
TWO=$2
THREE=$3
echo "There are $# parameters that include: $@"
echo "The first is $ONE, the second is $TWO, the third is $THREE."
- 使脚本可执行:
$ chmod 755 $HOME/bin/myposition
- 测试脚本,使用一些命令行参数运行它:
$ myposition Where Is My Hat Buddy?
There are 5 parameters that include: Where Is My Hat Buddy?
The first is Where, the second is Is, the third is My.
6.3 创建交互式脚本
若要创建名为$HOME/bin/myhome的脚本,可按以下步骤操作:
1. 创建文件并使其可执行:
$ touch $HOME/bin/myhome
$ chmod 755 $HOME/bin/myhome
- 脚本内容如下:
#!/bin/bash
# myhome
read -p "What street did you grow up on? " mystreet
read -p "What town did you grow up in? " mytown
echo "The street I grew up on was $mystreet and the town was $mytown."
- 运行脚本进行测试,输入和输出示例如下:
$ myhome
What street did you grow up on? Harrison
What town did you grow up in? Princeton
The street I grew up on was Harrison and the town was Princeton.
6.4 创建选择操作系统的脚本
若要创建名为$HOME/bin/myos的脚本,可按以下步骤操作:
1. 使用任何文本编辑器创建脚本并使其可执行:
$ touch $HOME/bin/myos
$ chmod 755 $HOME/bin/myos
- 脚本内容如下:
#!/bin/bash
# myos
read -p "What is your favorite operating system, Mac, Windows or Linux? " opsys
if [ $opsys = Mac ] ; then
echo "Mac is nice, but not tough enough for me."
elif [ $opsys = Windows ] ; then
echo "I used Windows once. What is that blue screen for?"
elif [ $opsys = Linux ] ; then
echo "Great Choice!"
else
echo "Is $opsys an operating system?"
fi
6.5 创建循环脚本
若要创建名为$HOME/bin/animals的脚本,通过for循环遍历moose、cow、goose和sow这些单词,并将每个单词附加到“I have a…”行的末尾,可按以下步骤操作:
1. 使脚本可执行:
$ touch $HOME/bin/animals
$ chmod 755 $HOME/bin/animals
- 脚本内容如下:
#!/bin/bash
# animals
for ANIMALS in moose cow goose sow ; do
echo "I have a $ANIMALS"
done
- 运行脚本,输出应如下所示:
$ animals
I have a moose
I have a cow
I have a goose
I have a sow
7. 学习系统管理
7.1 启用Cockpit
若要在系统上启用Cockpit,可输入:
# systemctl enable --now cockpit.socket
Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket
→ /usr/lib/systemd/system/cockpit.socket
7.2 打开Cockpit界面
若要在Web浏览器中打开Cockpit界面,可在浏览器的地址栏输入持有Cockpit服务的系统的主机名或IP地址,后跟端口号9090,例如:
https://host1.example.com:9090/
7.3 查找非root用户拥有的文件
若要查找/var/spool目录下非root用户拥有的所有文件并进行长列表显示,建议以root用户身份操作,可按以下步骤操作:
$ su -
Password: *********
# find /var/spool -not -user root -ls | less
7.4 创建文件
若要以root用户身份创建名为/mnt/test.txt的空文件或纯文本文件,可按以下步骤操作:
$ su -
Password: *********
# touch /mnt/test.txt
# ls -l /mnt/test.txt
-rw-r--r--. 1 root root 0 Jan 9 21:51 /mnt/test.txt
7.5 编辑sudoers文件
若要以root用户身份编辑/etc/sudoers文件,允许普通用户账户(例如bill)通过sudo命令拥有完全的root权限,可按以下步骤操作:
$ su -
Password: *********
# visudo
o
bill ALL=(ALL) ALL
Esc ZZ
由于visudo在vi中打开/etc/sudoers文件,示例中输入o打开一行,然后输入允许bill拥有完全root权限的行。输入该行后,按下Esc返回命令模式,输入ZZ写入并退出。
7.6 使用sudo创建文件
若要使用sudo命令创建名为/mnt/test2.txt的文件,并验证该文件存在且由root用户拥有,可按以下步骤操作:
[bill]$ sudo touch /mnt/test2.txt
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for bill: *********
[bill]$ ls -l /mnt/text2.txt
-rw-r--r--. 1 root root 0 Jan 9 23:37 /mnt/text2.txt
7.7 挂载和卸载USB驱动器
若要挂载和卸载USB驱动器并在过程中查看系统日志,可按以下步骤操作:
1. 在终端窗口中以root用户身份运行journalctl -f命令,并在接下来的步骤中查看输出:
# journalctl -f
Jan 25 16:07:59 host2 kernel: usb 1-1.1: new high-speed USB device
number 16 using ehci-pci
Jan 25 16:07:59 host2 kernel: usb 1-1.1: New USB device found,
idVendor=0ea0, idProduct=2168
Jan 25 16:07:59 host2 kernel: usb 1-1.1: New USB device strings:
Mfr=1, Product=2, SerialNumber=3
Jan 25 16:07:59 host2 kernel: usb 1-1.1: Product: Flash Disk
Jan 25 16:07:59 host2 kernel: usb 1-1.1: Manufacturer: USB
...
Jan 25 16:08:01 host2 kernel: sd 18:0:0:0: [sdb] Write Protect is off
Jan 25 16:08:01 host2 kernel: sd 18:0:0:0: [sdb]
Assuming drive cache: write through
Jan 25 16:08:01 host2 kernel: sdb: sdb1
Jan 25 16:08:01 host2 kernel: sd 18:0:0:0: [sdb]
Attached SCSI removable disk
- 插入自动挂载文件系统的USB存储驱动器。如果未自动挂载,可在第二个终端中以root用户身份运行以下命令创建挂载点目录并挂载设备:
$ mkdir /mnt/test
$ mount /dev/sdb1 /mnt/test
$ umount /dev/sdb1
7.8 查看USB设备
若要查看连接到计算机的USB设备,可输入:
$ lsusb
7.9 加载和卸载模块
若要加载bttv模块,列出加载的模块,然后卸载它,可按以下步骤操作:
# modprobe -a bttv
# lsmod | grep bttv
ttv 167936 0
tea575x 16384 1 bttv
tveeprom 28672 1 bttv
videobuf_dma_sg 24576 1 bttv
videobuf_core 32768 2 videobuf_dma_sg,bttv
v4l2_common 16384 1 bttv
videodev 233472 3 tea575x,v4l2_common,bttv
i2c_algo_bit 16384 1 bttv
注意,使用modprobe -a加载bttv时,会加载其他模块(v4l2_common、videodev等)。
7.10 移除模块
若要移除bttv模块以及与之一起加载的任何其他模块,可输入:
# modprobe -r bttv
# lsmod | grep bttv
8. 安装Linux
8.1 从Fedora Live媒体安装Fedora系统
若要从Fedora Live媒体安装Fedora系统,可按“从Live媒体安装Fedora”部分的说明操作,一般步骤如下:
1. 启动Live媒体。
2. 系统启动时选择安装到硬盘。
3. 从摘要页面添加初始配置系统所需的信息。
4. 重启计算机并移除Live介质,使新安装的系统从硬盘启动。
8.2 更新软件包
若要在Fedora Live媒体安装完成后更新软件包,可按以下步骤操作:
1. 重启计算机,按提示填写首次启动问题。
2. 使用有线或无线连接,确保已连接到Internet。若在网络连接方面遇到问题,可参考“管理网络”部分。以root用户身份打开shell并输入sudo dnf update。
3. 提示时输入y接受显示的软件包列表,系统开始下载并安装软件包。
8.3 以文本模式运行RHEL安装
若要以文本模式运行RHEL安装,可按以下步骤操作:
1. 启动RHEL DVD。
2. 看到启动菜单时,高亮显示其中一个安装启动项并按下Tab键,将光标移动到内核行的末尾,在该行末尾输入文本选项,按下Enter键启动安装程序。
3. 尝试以文本模式完成其余的安装过程。
8.4 设置磁盘分区
若要为Red Hat Enterprise Linux DVD安装设置磁盘分区,需注意此过程最终会删除硬盘上的所有内容。若仅用于练习分区,可在开始实际安装过程之前重启计算机而不会损坏硬盘。一旦进行分区操作,假设所有数据已被删除。可按以下步骤操作:
1. 在可擦除且至少有10GB磁盘空间的计算机上,插入RHEL安装DVD,重启并开始逐步浏览安装屏幕。
2. 到达“安装摘要”屏幕时,选择“安装目标”。
3. 从“安装目标”屏幕中,选择用于安装的设备(如果只有一个硬盘,可能是sda;如果是虚拟安装,可能是vda)。
4. 选择“自定义”按钮。
5. 选择“完成”以进入“手动分区”屏幕。
6. 如果现有磁盘空间已被占用,在继续之前需要删除分区。
7. 点击屏幕底部的加号(+)按钮,然后添加以下挂载点:
- /boot - 400M
- / - 3G
- /var - 2G
- /home - 2G
8. 选择“完成”,应看到更改摘要。
9. 如果更改看起来可以接受,选择“接受更改”;如果只是练习且不想实际更改分区,选择“取消并返回自定义分区”,然后退出安装程序。
9. 获取和管理软件
9.1 搜索提供命令的软件包
若要在YUM存储库中搜索提供mogrify命令的软件包,可输入:
# yum provides mogrify
9.2 显示软件包信息
若要显示提供mogrify命令的软件包的信息并确定该软件包的主页(URL),可输入:
# yum info ImageMagick
将看到ImageMagick的主页URL为http://www.imagemagick.org。
9.3 安装软件包
若要安装包含mogrify命令的软件包,可输入:
# yum install ImageMagick
9.4 列出软件包的文档文件
若要列出提供mogrify命令的软件包中包含的所有文档文件,可输入:
# rpm -qd ImageMagick
...
/usr/share/doc/ImageMagick/README.txt
...
/usr/share/man/man1/identify.1.gz
/usr/share/man/man1/import.1.gz
/usr/share/man/man1/mogrify.1.gz
9.5 查看软件包的更改日志
若要查看提供mogrify命令的软件包的更改日志,可输入:
# rpm -q --changelog ImageMagick | less
9.6 删除并验证文件
若要从系统中删除mogrify命令并验证其软件包,可按以下步骤操作:
# type mogrify
mogrify is /usr/bin/mogrify
# rm /usr/bin/mogrify
rm remove regular file '/usr/bin/mogrify'? y
# rpm -V ImageMagick
missing /usr/bin/mogrify
9.7 重新安装软件包
若要重新安装提供mogrify命令的软件包并确保整个软件包再次完整,可输入:
# yum reinstall ImageMagick
# rpm -V ImageMagick
9.8 下载软件包
若要将提供mogrify命令的软件包下载到当前目录,可输入:
# yum download ImageMagick
ImageMagick-6.9.10.28-1.fc30.x86_64.rpm
9.9 显示软件包信息
若要通过查询当前目录中的软件包RPM文件来显示刚刚下载的软件包的一般信息,可输入:
# rpm -qip ImageMagick-6.9.10.28-1.fc30.x86_64.rpm
Name : ImageMagick
Epoch : 1
Version : 6.9.10.28
Release : 1.fc30
...
9.10 移除软件包
若要从系统中移除包含mogrify命令的软件包,可输入:
# yum remove ImageMagick
10. 管理用户账户
10.1 添加用户账户
若要在Linux系统中添加本地用户账户,用户名为jbaxter,全名是John Baxter,使用/bin/sh作为默认shell,使用下一个可用的UID(可能与示例不同),可按以下步骤操作:
# useradd -c "John Baxter" -s /bin/sh jbaxter
# grep jbaxter /etc/passwd
jbaxter:x:1001:1001:John Baxter:/home/jbaxter:/bin/sh
# passwd jbaxter
Changing password for user jbaxter
New password: My1N1te0ut!
Retype new password: My1N1te0ut!
passwd: all authentication tokens updated successfully
10.2 创建组账户
若要创建名为testing的组账户,使用组ID 315,可输入:
# groupadd -g 315 testing
# grep testing /etc/group
testing:x:315:
10.3 将用户添加到组
若要将jbaxter添加到testing组和bin组,可输入:
# usermod -aG testing,bin jbaxter
# grep jbaxter /etc/group
bin:x:1:bin,daemon,jbaxter
jbaxter:x:1001:
testing:x:315:jbaxter
10.4 临时更改用户的默认组
若要以jbaxter身份登录,临时将testing组作为jbaxter的默认组,运行touch /home/jbaxter/file.txt以使testing组被分配为文件的组,可按以下步骤操作:
$ su - jbaxter
Password: My1N1te0ut!
sh-4.2$ newgrp testing
sh-4.2$ touch /home/jbaxter/file.txt
sh-4.2$ ls -l /home/baxter/file.txt
-rw-rw-r--. 1 jbaxter testing 0 Jan 25 06:42 /home/jbaxter/file.txt
sh-4.2$ exit ; exit
10.5 删除用户账户
若要记录分配给jbaxter的用户ID,然后删除该用户账户而不删除分配给jbaxter的主目录,可输入:
$ userdel jbaxter
10.6 查找用户拥有的文件
若要使用以下命令查找/home目录(及任何子目录)中分配给最近属于名为jbaxter的用户的用户ID的所有文件(示例中UID/GID均为1001,可能与实际不同),可输入:
# find /home -uid 1001 -ls
262184 4 drwx------ 4 1001 1001 4096 Jan 25 08:00 /home/jbaxter
262193 4 -rw-r--r-- 1 1001 1001 176 Jan 27 2011 /home/jbaxter/.bash_profile
262196 4 -rw------- 1 13602 testing 93 Jan 25 08:00 /home/jbaxter/.bash_history
262194 0 -rw-rw-r-- 1 13602 testing 0 Jan 25 07:59 /home/jbaxter/file.txt
...
10.7 复制文件并添加新用户
若要将/etc/services文件复制到/etc/skel/目录,然后在系统中添加名为mjones的新用户,全名是Mary Jones,主目录为/home/maryjones,列出她的主目录以确保services文件存在,可按以下步骤操作:
# cp /etc/services /etc/skel/
# useradd -d /home/maryjones -c "Mary Jones" mjones
# ls -l /home/maryjones
total 628
-rw-r--r--. 1 mjones mjones 640999 Jan 25 06:27 services
10.8 查找用户拥有的文件
若要查找/home目录下属于mjones的所有文件,可输入:
# find /home -user mjones -ls
262184 4 drwx------ 4 mjones mjones 4096 Jan 25 08:00 /home/jbaxter
262193 4 -rw-r--r-- 1 mjones mjones 176 Jan 27 2011 /home/jbaxter/.bash_profile
262189 4 -rw-r--r-- 1 mjones mjones 18 Jan 27 2011 /home/jbaxter/.bash_logout
262194 0 -rw-rw-r-- 1 mjones testing 0 Jan 25 07:59 /home/jbaxter/file.txt
262188 4 -rw-r--r-- 1 mjones mjones 124 Jan 27 2011 /home/jbaxter/.bashrc
262197 4 drwx------ 4 mjones mjones 4096 Jan 25 08:27 /home/maryjones
262207 4 -rw-r--r-- 1 mjones mjones 176 Jan 27 2011 /home/maryjones/.bash_profile
262202 4 -rw-r--r-- 1 mjones mjones 18 Jan 27 2011 /home/maryjones/.bash_logout
262206 628 -rw-r--r-- 1 mjones mjones 640999 Jan 25 08:27 /home/maryjones/services
262201 4 -rw-r--r-- 1 mjones mjones 124 Jan 27 2011 /home/maryjones/.bashrc
10.9 使用ACLs分配文件权限
若要以mjones身份创建名为/tmp/maryfile.txt的文件,并使用ACLs为bin用户分配读写权限,为lp组分配读写权限,可按以下步骤操作:
[mjones]$ touch /tmp/maryfile.txt
[mjones]$ setfacl -m u:bin:rw /tmp/maryfile.txt
[mjones]$ setfacl -m g:lp:rw /tmp/maryfile.txt
[mjones]$ getfacl /tmp/maryfile.txt
# file: tmp/maryfile.txt
# owner: mjones
# group: mjones
user::rw-
user:bin:rw-
group::rw-
group:lp:rw-
mask::rw-
other::r& —
10.10 使用ACLs分配目录默认权限
若要以mjones身份创建名为/tmp/mydir的目录,并使用ACLs为其分配默认权限,使adm用户对该目录以及在其中创建的任何文件或目录具有读写执行权限,通过创建/tmp/mydir/testing/目录和/tmp/mydir/newfile.txt进行测试,可按以下步骤操作:
[mary]$ mkdir /tmp/mydir
[mary]$ setfacl -m d:u:adm:rwx /tmp/mydir
[mjones]$ getfacl /tmp/mydir
# file: tmp/mydir
# owner: mjones
# group: mjones
user::rwx
group::rwx
other::r-x
default:user::rwx
default:user:adm:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
[mjones]$ mkdir /tmp/mydir/testing
[mjones]$ touch /tmp/mydir/newfile.txt
[mjones]$ getfacl /tmp/mydir/testing/
# file: tmp/mydir/testing/
# owner: mjones
# group: mjones
user::rwx
user:adm:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:adm:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
[mjones]$ getfacl /tmp/mydir/newfile.txt
# file: tmp/mydir/newfile.txt
# owner: mjones
# group: mjones
user::rw-
user:adm:rwx #effective:rw-
group::rwx #effective:rw-
mask::rw-
other::r--
注意,adm用户实际上只有rw - 权限。若要解决此问题,需要扩展掩码的权限,可使用chmod命令:
[mjones]$ chmod 775 /tmp/mydir/newfile.txt
[mjones]$ getfacl /tmp/mydir/newfile.txt
# file: tmp/mydir/newfile.txt
# owner: mjones
# group: mjones
user::rwx
user:adm:rwx
group::rwx
mask::rwx
other::r-x
11. 管理磁盘和文件系统
11.1 确定USB闪存驱动器的设备名称
若要确定要插入计算机的USB闪存驱动器的设备名称,可输入以下命令并插入USB闪存驱动器(看到适当的消息后按Ctrl + C):
# journalctl -f
kernel: [sdb] 15667200 512-byte logical blocks:
(8.02 GB/7.47 GiB)
Feb 11 21:55:59 cnegus kernel: sd 7:0:0:0:
[sdb] Write Protect is off
Feb 11 21:55:59 cnegus kernel: [sdb] Assuming
drive cache: write through
Feb 11 21:55:59 cnegus kernel: [sdb] Assuming
drive cache: write through
11.2 列出USB闪存驱动器的分区
若要在RHEL 6系统上列出USB闪存驱动器的分区,可输入:
# fdisk -c -u -l /dev/sdb
若要在RHEL 7、RHEL 8或Fedora系统上列出分区,可输入:
# fdisk -l /dev/sdb
11.3 删除USB闪存驱动器的分区
若要删除USB闪存驱动器上的分区,假设设备为/dev/sdb,可按以下步骤操作:
# fdisk /dev/sdb
Command (m for help): d
Partition number (1-6): 6
Command (m for help): d
Partition number (1-5): 5
Command (m for help): d
Partition number (1-5): 4
Command (m for help): d
Partition number (1-4): 3
Command (m for help): d
Partition number (1-4): 2
Command (m for help): d
Selected partition 1
Command (m for help): w
# partprobe /dev/sdb
11.4 添加分区
若要向USB闪存驱动器添加100MB的Linux分区、200MB的交换分区和500MB的LVM分区,可按以下步骤操作:
# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First sector (2048-15667199, default 2048): <ENTER>
Last sector, +sectors or +size{K,M,G} (default 15667199): +100M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First sector (616448-8342527, default 616448): <ENTER>
Last sector, +sectors or +size{K,M,G} (default 15667199): +200M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First sector (616448-15667199, default 616448): <ENTER>
Using default value 616448
Last sector, +sectors or +size{K,M,G} (default 15667199): +500M
Command (m for help): t
Partition number (1-4): 2
Hex code (type
## 11. 管理磁盘和文件系统(续)
### 11.4 添加分区(续)
```bash
L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap / Solaris)
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)
Command (m for help): w
# partprobe /dev/sdb
# grep sdb /proc/partitions
8 16 7833600 sdb
8 17 102400 sdb1
8 18 204800 sdb2
8 19 512000 sdb3
11.5 创建文件系统
若要在Linux分区上创建ext4文件系统,可输入:
# mkfs -t ext4 /dev/sdb1
11.6 挂载分区
若要创建名为/mnt/mypart的挂载点并将Linux分区挂载到该挂载点,可按以下步骤操作:
# mkdir /mnt/mypart
# mount -t ext4 /dev/sdb1 /mnt/mypart
11.7 启用交换分区
若要启用交换分区并立即使用额外的交换空间,可输入:
# mkswap /dev/sdb2
# swapon /dev/sdb2
11.8 创建逻辑卷
若要从LVM分区创建名为abc的卷组,从该组创建名为data的200MB逻辑卷,在其上创建VFAT文件系统,将逻辑卷临时挂载到名为/mnt/test的新目录,然后检查是否成功挂载,可按以下步骤操作:
# pvcreate /dev/sdb3
# vgcreate abc /dev/sdb3
# lvcreate -n data -L 200M abc
# mkfs -t vfat /dev/mapper/abc-data
# mkdir /mnt/test
# mount /dev/mapper/abc-data /mnt/test
11.9 扩展逻辑卷
若要将逻辑卷从200MB扩展到300MB,可输入:
# lvextend -L +100M /dev/mapper/abc-data
# resize2fs -p /dev/mapper/abc-data
11.10 安全移除USB闪存驱动器
若要安全地从计算机中移除USB闪存驱动器,可按以下步骤操作:
# umount /dev/sdb1
# swapoff /dev/sdb2
# umount /mnt/test
# lvremove /dev/mapper/abc-data
# vgremove abc
# pvremove /dev/sdb3
此时,即可安全地从计算机中移除USB闪存驱动器。
12. 理解服务器管理
12.1 使用ssh登录远程账户
若要使用ssh命令登录另一台计算机上的任何账户,可输入以下命令,然后在提示时输入密码:
$ ssh joe@localhost
joe@localhost's password:
*********
[joe]$
12.2 远程执行命令查看文件内容
若要使用ssh命令的远程执行功能显示远程/etc/system-release文件的内容,并将其内容显示在本地系统上,可按以下步骤操作:
$ ssh joe@localhost "cat /etc/system-release"
joe@localhost's password: *******
Fedora release 30 (Thirty)
12.3 使用X11转发
若要使用X11转发在本地系统上显示gedit窗口,然后在远程主目录中保存文件,可按以下步骤操作:
$ ssh -X joe@localhost "gedit newfile"
joe@localhost's password: ********
$ ssh joe@localhost "cat newfile"
joe@localhost's password: ********
This is text from the file I saved in joe's remote home directory
12.4 复制远程文件到本地
若要将远程系统上的/usr/share/selinux目录中的所有文件递归复制到本地系统的/tmp目录,并在复制时将文件的修改时间更新为本地系统的时间,可按以下步骤操作:
$ scp -r joe@localhost:/usr/share/selinux /tmp
joe@localhost's password:
********
irc.pp.bz2 100% 9673 9.5KB/s 00:00
dcc.pp.bz2 100% 15KB 15.2KB/s 00:01
$ ls -l /tmp/selinux | head
total 20
drwxr-xr-x. 3 root root 4096 Apr 18 05:52 devel
drwxr-xr-x. 2 root root 4096 Apr 18 05:52 packages
drwxr-xr-x. 2 root root 12288 Apr 18 05:52 targeted
12.5 复制远程文件并保留修改时间
若要将远程系统上的/usr/share/logwatch目录中的所有文件递归复制到本地系统的/tmp目录,并保留文件从远程系统的修改时间,可按以下步骤操作:
$ rsync -av joe@localhost:/usr/share/logwatch /tmp
joe@localhost's password: ********
receiving incremental file list
logwatch/
logwatch/default.conf/
logwatch/default.conf/logwatch.conf
$ ls -l /tmp/logwatch | head
total 16
drwxr-xr-x. 5 root root 4096 Apr 19 2011 default.conf
drwxr-xr-x. 4 root root 4096 Feb 28 2011 dist.conf
drwxr-xr-x. 2 root root 4096 Apr 19 2011 lib
12.6 使用SSH密钥认证
若要创建用于SSH通信的公钥/私钥对(密钥无密码短语),使用ssh - copy - id将公钥文件复制到远程用户账户,并使用基于密钥的认证登录该用户账户而无需输入密码,可按以下步骤操作:
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/joe/.ssh/id_rsa): ENTER
/home/joe/.ssh/id_rsa already exists.
Enter passphrase (empty for no passphrase): ENTER
Enter same passphrase again: ENTER
Your identification has been saved in /home/joe/.ssh/id_rsa.
Your public key has been saved in /home/joe/.ssh/id_rsa.pub.
The key fingerprint is:
58:ab:c1:95:b6:10:7a:aa:7c:c5:ab:bd:f3:4f:89:1e joe@cnegus.csb
The key's randomart image is:
...
$ ssh-copy-id -i ~/.ssh/id_rsa.pub joe@localhost
joe@localhost's password: ********
Now try logging into the machine, with "ssh 'joe@localhost'",
and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
$ ssh joe@localhost
$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyN2Psp5/LRUC9E8BDCx53yPUa0qoOPd
v6H4sF3vmn04V6E7D1iXpzwPzdo4rpvmR1ZiinHR2xGAEr2uZag7feKgLnww2KPcQ6S
iR7lzrOhQjV+SGb/a1dxrIeZqKMq1Tk07G4EvboIrq//9J47vI4l7iNu0xRmjI3TTxa
DdCTbpG6J3uSJm1BKzdUtwb413x35W2bRgMI75aIdeBsDgQBBiOdu+zuTMrXJj2viCA
XeJ7gIwRvBaMQdOSvSdlkX353tmIjmJheWdgCccM/1jKdoELpaevg9anCe/yUP3so31
tTo4I+qTfzAQD5+66oqW0LgMkWVvfZI7dUz3WUPmcMw== chris@abc.example.com
12.7 配置日志存储
若要在/etc/rsyslog.conf中创建一个条目,将所有信息级别及更高级别的认证消息存储到名为/var/log/myauth的文件中,并在一个终端中观察数据的流入,可按以下步骤操作:
# vim /etc/rsyslog.conf
authpriv.info /var/log/myauth
# service rsyslog restart
or
# systemctl restart rsyslog.service
<Terminal 1> <Terminal 2>
# tail -f /var/log/myauth $ ssh joe@localhost
Apr 18 06:19:34 abc unix_chkpwd[30631] joe@localhost's password:
Apr 18 06:19:34 abc sshd[30631] Permission denied,try again
:pam_unix(sshd:auth):
authentication failure;logname= uid=501
euid=501 tty=ssh ruser= rhost=localhost
user=joe
Apr 18 06:19:34 abc sshd[30631]:
Failed password for joe from
127.0.0.1 port 5564 ssh2
12.8 查找大目录
若要确定/usr/share目录下最大的目录结构,按大小从大到小排序,并列出其中大小排名前十的目录,可输入:
$ du -s /usr/share/* | sort -rn | head
527800 /usr/share/locale
277108 /usr/share/fonts
196232 /usr/share/help
134984 /usr/share/backgrounds
...
12.9 查看文件系统空间使用情况
若要显示当前连接到本地系统的所有文件系统的已使用和可用空间,并排除任何tmpfs或devtmpfs文件系统,可输入:
$ df -h -x tmpfs -x devtmpfs
Filesystem Size Used Avail Use% Mounted on
/deev/sda4 20G 4.2G 16G 22% /
12.10 查找大文件
若要查找/usr目录中大于10MB的所有文件,可输入:
$ find /usr -size +10M
/usr/lib/locale/locale-archive
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.fc30.x86_64/jre/lib/rt.jar
/usr/libexec/cni/dhcp
/usr/libexec/gdb
/usr/libexec/gcc/x86_64-redhat-linux/9/lto1
/usr/libexec/gcc/x86_64-redhat-linux/9/cc1
13. 管理网络
13.1 检查网络连接
若要使用桌面检查NetworkManager是否已成功启动网络接口(有线或无线),可按以下步骤操作:
1. 左键单击GNOME桌面的右上角以查看下拉菜单,任何活动的有线或无线网络连接应显示在该菜单上。
2. 如果未连接到网络,从可用的有线或无线网络列表中选择,然后在提示时输入用户名和密码以启动活动连接。
13.2 查看活动网络接口
若要运行命令检查计算机上可用的活动网络接口,可输入以下命令之一:
$ ifconfig
or
$ ip addr show
13.3 测试DNS连接
若要从命令行尝试联系google.com并确保DNS正常工作,可输入:
$ ping google.com
Ctrl - C
13.4 查看网络路由
若要运行命令检查用于与本地网络外部通信的路由,可输入:
$ route
13.5 跟踪网络路由
若要跟踪连接到google.com的路由,可使用traceroute命令:
$ traceroute google.com
13.6 通过Cockpit查看网络信息
若要通过Cockpit查看Linux系统的网络接口和相关网络活动,可在Web浏览器中使用IP地址或主机名打开端口9090,例如:
https://localhost:9090/network
13.7 创建主机条目
若要创建一个主机条目,允许使用名称myownhost与本地主机系统进行通信,可编辑/etc/hosts文件(vi /etc/hosts),并在localhost条目末尾添加myownhost,使其如下所示,然后ping myownhost以检查是否生效:
127.0.0.1 localhost.localdomain localhost myownhost
# ping myownhost
Ctrl - C
13.8 查看DNS名称服务器
若要查看系统用于解析主机名和IP地址的DNS名称服务器(可能与示例不同),可输入:
# cat /etc/resolv.conf
nameserver 10.83.14.9
nameserver 10.18.2.10
nameserver 192.168.1.254
# dig google.com
...
google.com. 91941 IN NS ns3.google.com.
;; Query time: 0 msec
;; SERVER: 10.18.2.9#53(10.18.2.9)
;; WHEN: Sat Nov 23 20:18:56 EST 2019
;; MSG SIZE rcvd: 276
13.9 创建自定义路由
若要创建一个自定义路由,将发往192.168.99.0/255.255.255.0网络的流量定向到本地网络上的某个IP地址(如192.168.0.5),并确保该网络未在本地使用,可按以下步骤操作:
1. 确定网络接口的名称,例如enp4s0。以root用户身份在终端中运行以下命令:
# cd /etc/sysconfig/network-scripts
# vi route-enp4s0
- 在该文件中添加以下行:
ADDRESS0=192.168.99.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.5
- 重启网络并运行route命令以查看路由是否激活:
# systemctl restart NetworkManager
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.1 0.0.0.0 255.255.255.0 U 600 0 0 enp4s0
192.168.99.0 192.168.0.5 255.255.255.0 UG 600 0 0 enp4s0
13.10 检查IPv4数据包转发
若要检查系统是否已配置为允许IPv4数据包在网络接口之间进行路由,可输入:
# cat /proc/sys/net/ipv4/ip_forward
0
输出为0表示禁用了IPv4数据包转发,输出为1表示已启用。
14. 启动和停止服务
14.1 确定初始化守护进程
若要确定服务器当前使用的初始化守护进程,可考虑以下步骤:
1. 在大多数情况下,PID 1显示为systemd守护进程:
# ps -ef | head
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 17:01 ? 00:00:04 /usr/lib/systemd/systemd --
switched-root --system --deserialize 18
如果输入ps - ef后PID 1显示为init,仍可能是systemd守护进程。可使用strings命令检查是否使用了systemd:
# strings /sbin/init | grep -i systemd
systemd.unit=
systemd.log_target=
systemd.log_level=
...
- 如果初始化守护进程不是systemd,则很可能是Upstart、SysVinit或BSD init守护进程。可在http://wikipedia.org/wiki/Init上进行双重检查。
14.2 确定服务初始化脚本类型
若要确定ssh服务使用的初始化脚本类型,可尝试运行systemctl和service命令:
1. 对于systemd,如果出现以下积极结果,则表示sshd已转换为systemd:
# systemctl status sshd.service
sshd.service - OpenSSH server daemon
Loaded: loaded (/lib/systemd/system/sshd.service; enabled)
Active: active (running) since Mon, 20 Apr 2020 12:35:20...
- 如果上述测试未出现积极结果,可尝试以下针对SysVinit初始化守护进程的命令。如果出现积极结果,且上述测试为阴性,则表示sshd仍在使用SysVinit守护进程:
# service ssh status
sshd (pid 2390) is running...
14.3 查看运行级别
若要确定服务器的上一个和当前运行级别,可使用runlevel命令,该命令在所有初始化守护进程中都可用:
$ runlevel
N 3
14.4 更改默认运行级别
若要更改Linux服务器的默认运行级别或目标单元,可根据服务器的初始化守护进程选择以下操作之一:
1. 对于SysVinit,编辑/etc/inittab文件,将行id:#:initdefault:中的#更改为2、3、4或5。
2. 对于systemd,将default.target更改为所需的runlevel#.target,其中#为2、3、4或5。以下示例展示了如何将目标单元更改为runlevel3.target:
# systemctl set-default runlevel3.target
Removed /etc/systemd/system/default.target.
Created symlink /etc/systemd/system/default.target →
/usr/lib/systemd/system/multi - user.target.
14.5 列出运行的服务
若要列出服务器上运行(或活动)的服务,需根据使用的初始化守护进程使用不同的命令:
1. 对于SysVinit,可使用以下示例中的service命令:
# service --status-all | grep running | sort
anacron (pid 2162) is running...
atd (pid 2172) is running...
- 对于systemd,可使用systemctl命令:
# systemctl list-unit-files --type=service | grep -v disabled
UNIT FILE STATE
abrt-ccpp.service enabled
abrt-oops.service enabled
...
14.6 查看服务状态
若要查看特定服务的当前状态,可根据初始化守护进程使用以下命令:
- 对于SysVinit,使用service service_name status命令。
- 对于systemd,使用systemctl status service_name命令。
14.7 查看cups服务状态
若要查看Linux服务器上cups守护进程的状态,可根据不同的初始化守护进程使用以下命令:
- 对于SysVinit:
# service cups status
cupsd (pid 8236) is running...
- 对于systemd:
# systemctl status cups.service
cups.service - CUPS Printing Service
Loaded: loaded (/lib/systemd/system/cups.service; enabled)
Active: active (running) since Tue, 05 May 2020 04:43:5...
Main PID: 17003 (cupsd)
CGroup: name=systemd:/system/cups.service
17003 /usr/sbin/cupsd -f
14.8 重启cups服务
若要尝试重启Linux服务器上的cups守护进程,可根据不同的初始化守护进程使用以下命令:
- 对于SysVinit:
# service cups restart
Stopping cups: [ OK ]
- 对于systemd:
# systemctl restart cups.service
14.9 重新加载cups服务
若要尝试重新加载Linux服务器上的cups守护进程,可根据不同的初始化守护进程使用以下命令:
- 对于SysVinit:
# service cups reload
Reloading cups: [ OK ]
- 对于systemd,这是一个特殊情况,无法重新加载cups守护进程:
# systemctl reload cups.service
Failed to issue method call: Job type reload is
not applicable for unit cups.service.
15. 配置打印服务器
15.1 添加打印机
若要在Fedora 30系统中使用“打印设置”窗口添加名为myprinter的新打印机(通用PostScript打印机,连接到端口),可按以下步骤操作:
1. 安装system - config - printer软件包:
# dnf install system-config-printer
- 从GNOME 3桌面的活动屏幕中选择“打印设置”。
- 解锁界面并输入root密码。
- 选择“添加”按钮。
- 选择USB或其他端口作为设备,然后点击“前进”。
- 对于驱动程序,选择“通用”,然后点击“前进”;接着选择“PostScript”,再点击“前进”。
- 如有需要,点击“前进”跳过任何可安装的选项。
- 对于打印机名称,命名为myprinter,提供任何所需的描述和位置,然后点击“应用”。
- 点击“取消”以不打印测试页,打印机应显示在“打印设置”窗口中。
15.2 查看打印机状态
若要使用lpstat - t命令查看所有打印机的状态,可输入:
# lpstat - t
deskjet-5550 accepting requests since Mon 02 Mar 2020 07:30:03 PM EST
15.3 打印文件
若要使用lpr命令打印/etc/hosts文件,可输入:
$ lp /etc/hosts -P myprinter
15.4 检查打印队列
若要检查该打印机的打印队列,可输入:
# lpq -P myprinter
myprinter is not ready
Rank Owner Job File(s) Total Size
1st root 655 hosts 1024 bytes
15.5 取消打印作业
若要从队列中移除打印作业(取消它),可输入:
# lprm -P myprinter
15.6 发布打印机
若要使用打印窗口设置基本服务器设置,以发布打印机,使本地网络上的其他系统可以向这些打印机打印,可按以下步骤操作:
1. 在GNOME 3桌面上,从活动屏幕中输入“打印设置”并按下Enter键。
2. 选择“服务器”→“设置”,并在提示时输入root密码。
3. 点击“发布连接到此系统的共享打印机”旁边的复选框,然后点击“确定”。
15.7 允许远程管理
若要允许从Web浏览器对系统进行远程管理,可按以下步骤操作:
1. 在GNOME 3桌面上,从活动屏幕中输入“打印设置”,并按下Enter键。
2. 选择“服务器”→“设置”,并在提示时输入root密码。
3. 点击“允许远程管理”旁边的复选框,然后点击“确定”。
15.8 远程管理测试
若要演示可以从另一系统上的Web浏览器对系统进行远程管理,可按以下步骤操作:
1. 在另一台计算机的浏览器窗口的地址栏中输入以下内容,将hostname替换为运行打印服务的系统的名称或IP地址:
http://hostname:631
- 在提示时输入root作为用户和root密码,应显示该系统的CUPS主页。
15.9 查看cupsd监听端口
若要使用netstat命令查看cupsd守护进程正在监听的地址,可输入:
# netstat -tupln | grep 631
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 6492/cupsd
tcp6 0 0 :::631 :::* LISTEN 6492/cupsd
15.10 删除打印机
若要从系统中删除myprinter打印机条目,可按以下步骤操作:
1. 点击“解锁”按钮,并在提示时输入root密码。
2. 从“打印设置”窗口中,右键单击myprinter图标,然后选择“删除”。
3. 在提示时,再次选择“删除”。
16. 配置Web服务器
16.1 安装Web服务器软件包
若要在Fedora系统上安装与“Web服务器”组关联的所有软件包,可输入:
# yum groupinstall "Web Server"
16.2 创建Web页面文件
若要在主Apache配置文件中指定的DocumentRoot目录中创建名为index.html的文件,并在其中包含“ My Own Web Server”字样,可按以下步骤操作:
1. 确定DocumentRoot的位置:
# grep ^DocumentRoot /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html"
- 将“ My Own Web Server”字样写入DocumentRoot目录中的index.html文件:
# echo "My Own Web Server" > /var/www/html/index.html
16.3 启动和启用Web服务器
若要启动Apache Web服务器并将其设置为在启动时自动启动,然后检查是否可以从本地主机的Web浏览器访问它(如果正常工作,应显示“ My Own Web Server”字样),可根据不同的Linux系统使用以下命令:
- 在最近的Fedora 30或RHEL 7或8系统中:
# systemctl start httpd.service
# systemctl enable httpd.service
- 在RHEL 6或更早版本中:
# service httpd start
# chkconfig httpd on
16.4 查看httpd监听端口
若要使用netstat命令查看httpd服务器正在监听的端口,可输入:
# netstat -tupln | grep httpd
tcp6 0 0 :::80 :::* LISTEN 2496/httpd
tcp6 0 0 :::443 :::* LISTEN 2496/httpd
16.5 远程访问Web服务器
若要尝试从本地系统之外的Web浏览器连接到Apache Web服务器,如果失败,可通过检查防火墙、SELinux和其他安全功能来解决问题。如果尚未设置DNS,可使用服务器的IP地址从远程Web浏览器查看Apache服务器,例如http://192.168.0.1。如果无法连接,可在运行Apache服务器的系统上执行以下步骤后再次尝试从浏览器连接:
# iptables -F
# setenforce 0
# chmod 644 /var/www/html/index.html
- iptables - F命令临时刷新防火墙规则。如果执行该命令后可以连接到Web服务器,则需要添加新的防火墙规则以打开服务器上的TCP端口80和443。在使用firewalld服务的系统上,可在“防火墙”窗口中选中这些端口旁边的复选框。在运行iptables服务的系统上,在最后一个DROP或REJECT规则之前添加以下规则:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
- setenforce 0命令临时禁用SELinux。如果执行该命令后可以连接到Web服务器,则需要纠正SELinux文件上下文和/或布尔值问题(在这种情况下可能是文件上下文问题)。可执行以下命令:
# chcon --reference=/var/www/html /var/www/html/index.html
- chmod命令如果起作用,说明Apache用户和组没有对该文件的读取权限,可保留新的权限设置。
16.6 创建SSL证书
若要使用openssl或类似命令创建自己的私有RSA密钥和自签名SSL证书,可按以下步骤操作:
# yum install openssl
# cd /etc/pki/tls/private
# openssl genrsa -out server.key 1024
# chmod 600 server.key
# cd /etc/pki/tls/certs
# openssl req -new -x509 -nodes -sha1 -days 365 \
-key /etc/pki/tls/private/server.key \
-out server.crt
Country Name (2 letter code) [AU]: US
State or Province Name (full name) [Some - State]: NJ
Locality Name (eg, city) []: Princeton
Organization Name (eg, company) [Internet Widgits Pty
Ltd]:TEST USE ONLY
Organizational Unit Name (eg, section) []:TEST USE ONLY
Common Name (eg, YOUR name) []:secure.example.org
Email Address []:dom@example.org
此时,应拥有一个/etc/pki/tls/private/server.key密钥文件和一个/etc/pki/tls/certs/server.crt证书文件。
16.7 配置HTTPS服务
若要配置Apache Web服务器使用创建的密钥和自签名证书来提供安全的(HTTPS)内容,可按以下步骤操作:
1. 编辑/etc/httpd/conf.d/ssl.conf文件,将密钥和证书的位置更改为刚刚创建的文件:
SSLCertificateFile /etc/pki/tls/certs/server.crt
SSLCertificateKeyFile /etc/pki/tls/private/server.key
- 重启httpd服务:
# systemctl restart httpd.service
16.8 测试HTTPS连接
若要使用Web浏览器创建与Web服务器的HTTPS连接并查看创建的证书内容,可按以下步骤操作:
从运行Apache服务器的系统中,在浏览器的地址栏中输入https://localhost,应看到一条消息“ This Connection is Untrusted”。若要完成连接,可按以下步骤操作:
1. 点击“ I Understand the Risks”。
2. 点击“ Add Exception”。
3. 点击“ Get Certificate”。
4. 点击“ Confirm Security Exception”。
16.9 创建虚拟主机
若要创建名为/etc/httpd/conf.d/example.org.conf的文件,开启基于名称的虚拟主机,并创建一个虚拟主机,该虚拟主机(1)在所有接口上监听端口80;(2)服务器管理员为joe@example.org;(3)服务器名称为joe.example.org;(4)DocumentRoot为/var/www/html/joe.example.org;(5)DirectoryIndex至少包括index.html,然后在DocumentRoot中创建一个包含“ Welcome to the House of Joe”字样的index.html文件,可按以下步骤操作:
创建一个example.org.conf文件,内容如下:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin joe@example.org
ServerName joe.example.org
ServerAlias web.example.org
DocumentRoot /var/www/html/joe.example.org/
DirectoryIndex index.html
</VirtualHost>
创建index.html文件的命令如下:
# echo "Welcome to the House of Joe" > \
/var/www/html/joe.example.org/index.html
16.10 测试虚拟主机
若要将joe.example.org添加到运行Web服务器的机器的/etc/hosts文件中localhost条目的末尾,并通过在Web浏览器的地址栏中输入http://joe.example.org来检查页面是否显示“ Welcome to the House of Joe”,可按以下步骤操作:
1. 通过以下两种方式之一重新加载上一步中修改的httpd.conf文件:
# apachectl graceful
# systemctl restart httpd
- 使用任何文本编辑器编辑/etc/hosts文件,使本地主机行如下所示:
127.0.0.1 localhost.localdomain localhost joe.example.org
- 在运行httpd的本地系统的浏览器中,应能够在地址栏中输入http://joe.example.org来使用基于名称的认证访问Apache Web服务器。
17. 配置FTP服务器
17.1 查找提供服务的软件包
若要确定提供Very Secure FTP Daemon服务的软件包,以root用户身份输入:
# yum search "Very Secure FTP"
...
================ N/S Matched: Very Secure FTP ============
vsftpd.i686 : Very Secure Ftp Daemon
搜索结果显示为vsftpd软件包。
17.2 安装和查找配置文件
若要在系统上安装Very Secure FTP Daemon软件包,并搜索vsftpd软件包中的配置文件,可输入:
# yum install vsftpd
# rpm -qc vsftpd | less
17.3 配置FTP服务
若要为Very Secure FTP Daemon服务启用匿名FTP并禁用本地用户登录,可在/etc/vsftpd/vsftpd.conf文件中设置以下内容:
anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
local_enable=NO
17.4 启动和启用FTP服务
若要启动Very Secure FTP Daemon服务并将其设置为在系统启动时自动启动,在当前的Fedora或Red Hat Enterprise Linux系统中可输入:
# systemctl start vsftpd.service
# systemctl enable vsftpd.service
在Red Hat Enterprise Linux 6系统中可输入:
# service vsftpd start
# chkconfig vsftpd on
17.5 创建测试文件
若要在运行FTP服务器的系统上,在匿名FTP目录中创建一个名为test的文件,其中包含“ Welcome to your vsftpd server”字样,可输入:
# echo "Welcome to your vsftpd server" > /var/ftp/test
17.6 访问测试文件
若要在运行FTP服务器的系统上使用Web浏览器打开匿名FTP主目录中的test文件,可在浏览器的地址栏中输入以下内容并按下Enter键:
ftp://localhost/test
浏览器窗口中应显示“ Welcome to your vsftpd server”字样。
17.7 远程访问测试文件
若要在网络上可以访问FTP服务器的系统上的浏览器中访问匿名FTP主目录中的test文件,可在浏览器的地址栏中输入以下内容(将host替换为系统的完全限定主机名或IP地址):
ftp://host/test
如果在浏览器窗口中看不到欢迎消息,可检查可能阻止访问的因素。以root用户身份在FTP服务器系统的shell中输入以下命令临时关闭防火墙(刷新iptables规则),然后再次尝试访问该站点:
# iptables -F
输入以下命令临时禁用SELinux,然后再次尝试访问该站点:
# setenforce 0
确定导致FTP服务器上的文件不可用的原因后,可参考相关部分的步骤来确定可能阻止访问文件的因素,可能的情况如下:
- 对于iptables,确保服务器上有打开TCP端口21的规则。
- 对于SELinux,确保文件上下文设置为public_content_t。
17.8 配置匿名用户上传
若要配置vsftpd服务器允许匿名用户将文件上传到名为in的目录,以root用户身份在FTP服务器上可按以下步骤操作:
1. 创建in目录:
# mkdir /var/ftp/in
# chown ftp:ftp /var/ftp/in
# chmod 777 /var/ftp/in
- 在最近的Fedora或RHEL系统中,打开“防火墙配置”窗口,选中“服务”下的“FTP”复选框以打开对FTP服务的访问。在早期的RHEL和Fedora系统中,在/etc/sysconfig/iptables文件的最后一个DROP或REJECT规则之前添加以下规则,以配置iptables防火墙允许对TCP端口21的新请求:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
- 在/etc/sysconfig/iptables - config文件中加载适当的模块,以配置iptables防火墙进行连接跟踪:
IPTABLES_MODULES="nf_conntrack_ftp"
- 为了让SELinux允许上传到该目录,首先正确设置文件上下文:
# semanage fcontext -a -t public_content_rw_t "/var/ftp/in(/.*)?"
# restorecon -F -R -v /var/ftp/in
- 接下来,设置SELinux布尔值以允许上传:
# setsebool -P allow_ftpd_anon_write on
- 重启vsftpd服务(service vsftpd restart或systemctl restart vsftpd.service)。
17.9 安装FTP客户端并测试上传
若要安装lftp FTP客户端(如果没有第二个Linux系统,可在运行FTP服务器的同一主机上安装lftp),并尝试将/etc/hosts文件上传到服务器上的in目录以确保该目录可访问,以root用户身份运行以下命令:
# yum install lftp
# lftp localhost
lftp localhost:/> cd in
lftp localhost:/in> put /etc/hosts
89 bytes transferred
lftp localhost:/in> quit
虽然无法直接看到已将hosts文件复制到传入目录,但可在运行FTP服务器的主机的shell中输入以下命令来确保hosts文件存在:
# ls /var/ftp/in/hosts
如果无法上传文件,可按照练习7中的步骤进行故障排除,重新检查vsftpd.conf设置,并查看/var/ftp/in目录的所有权和权限。
17.10 访问远程FTP目录
若要使用任何FTP客户端访问ftp://ftp.gnome.org站点上的/pub/debian - meetings目录并列出该目录的内容,以下是使用lftp客户端的操作方法:
# lftp ftp://ftp.gnome.org/pub/debian-meetings/
cd ok, cwd=/pub/debian-meetings
lftp ftp.gnome.org:/pub/debian-meetings>> ls
drwxr-xr-x 3 ftp ftp 3 Jan 13 2014 2004
drwxr-xr-x 6 ftp ftp 6 Jan 13 2014 2005
drwxr-xr-x 8 ftp ftp 8 Dec 20 2006 2006
...
18. 配置Windows文件共享(Samba)服务器
18.1 安装软件包
若要安装samba和samba - client软件包,以root用户身份在本地系统的shell中输入:
# yum install samba samba-client
18.2 启动和启用服务
若要启动并启用smb和nmb服务,以root用户身份在本地系统的shell中可输入以下命令之一:
# systemctl enable smb.service
# systemctl start smb.service
# systemctl enable nmb.service
# systemctl start nmb.service
or
# chkconfig smb on
# service smb start
# chkconfig nmb on
# service nmb start
18.3 配置Samba服务器参数
若要将Samba服务器的工作组设置为TESTGROUP,NetBIOS名称设置为MYTEST,服务器字符串设置为Samba Test System,以root用户身份在文本编辑器中打开/etc/samba/smb.conf文件,并将三行内容修改如下:
workgroup = TESTGROUP
netbios name = MYTEST
server string = Samba Test System
18.4 添加用户并设置密码
若要在系统中添加名为phil的Linux用户,并为phil设置Linux密码和Samba密码,以root用户身份在shell中输入以下命令(请务必记住设置的密码):
# useradd phil
# passwd phil
New password: *******
Retype new password: *******
# smbpasswd -a phil
New SMB password: *******
Retype new SMB password: *******
Added user phil.
18.5 配置主目录共享
若要将[homes]部分设置为主目录可浏览(yes)和可写(yes),并且phil是唯一有效的用户,以root用户身份打开/etc/samba/smb.conf文件,并将[homes]部分修改如下:
[homes]
comment = Home Directories
browseable = Yes
read only = No
valid users = phil
18.6 设置SELinux布尔值
若要设置SELinux布尔值,使phil能够通过Samba客户端访问其主目录,以root用户身份在shell中输入以下命令,并重启smb和nmb服务:
# setsebool -P samba_enable_home_dirs on
# systemctl restart smb
# systemctl restart nmb
18.7 列出可用共享
若要从本地系统使用smbclient命令列出homes共享是否可用,可输入:
# smbclient -L localhost
Enter TESTGROUP\root's password: <ENTER>
Anonymous login successful
Sharename Type Comment
--------- ---- -------
homes Disk Home Directories
...
18.8 连接到共享文件夹
若要在Samba服务器的本地系统上,以phil用户身份通过Nautilus(文件管理器)窗口连接到homes共享文件夹,以便能够将文件拖放到该文件夹中,可按以下步骤操作:
1. 打开Nautilus窗口(选择文件图标)。
2. 在左侧窗格中,选择“其他位置”,然后点击“连接到服务器”框。
3. 输入服务器地址,例如smb://localhost/phil/。
4. 在提示时,选择“注册用户”,输入phil作为用户名,输入域(TESTGROUP),并输入phil的密码。
5. 打开另一个Nautilus窗口,将文件拖放到phil的主文件夹中。
18.9 打开防火墙
若要打开防火墙,使任何能够访问服务器的人都可以访问Samba服务(smbd和nmbd守护进程),可直接打开“防火墙配置”窗口,选中“samba”和“samba - client”复选框(同时适用于运行时和永久设置)。如果系统运行的是基本的iptables(而不是firewalld服务),可将/etc/sysconfig/iptables文件修改如下(添加的规则以粗体显示):
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-I INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
-I INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
-I INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-I INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A INPUT -j REJECT --reject - with icmp - host - prohibited
-A FORWARD -j REJECT --reject - with icmp - host - prohibited
COMMIT
然后输入以下命令重新加载防火墙规则:
# service iptables restart
18.10 远程访问共享文件夹
若要从网络上的另一系统(Windows或Linux)以phil用户身份再次打开homes共享文件夹,并确保能够将文件拖放到该文件夹中,可按以下步骤操作:
1. 此步骤实际上是重复前面描述的Nautilus示例,或者访问Windows文件资源管理器窗口并打开共享文件夹(通过选择“网络”,然后选择Samba服务器)。关键是要确保服务已通过Linux服务器的安全功能可用。
2. 如果无法访问Samba共享文件夹,可尝试禁用防火墙,然后禁用SELinux。如果在关闭其中任何一个服务后共享文件夹可用,则返回并调试未正常工作的服务:
# setenforce 0
# service iptables stop
- 解决问题后,将SELinux设置回强制模式,并重启iptables:
# setenforce 1
# service iptables start
19. 配置NFS文件服务器
19.1 安装NFS服务软件包
若要在所选的Linux系统上安装配置NFS服务所需的软件包,以root用户身份在shell中输入(适用于Fedora或RHEL):
# yum install nfs-utils
19.2 查看NFS服务器软件包文档
若要列出提供NFS服务器软件的软件包中包含的文档文件,可输入:
# rpm -qd nfs-utils
/usr/share/doc/nfs-utils-1.2.5/ChangeLog
...
/usr/share/man/man5/exports.5.gz
/usr/share/man/man5/nfs.5.gz
/usr/share/man/man5/nfsmount.conf.5.gz
/usr/share/man/man7/nfsd.7.gz
/usr/share/man/man8/blkmapd.8.gz
/usr/share/man/man8/exportfs.8.gz
...
19.3 启动和启用NFS服务
若要启动并启用NFS服务,以root用户身份在NFS服务器上输入:
# systemctl start nfs-server.service
# systemctl enable nfs-server.service
19.4 检查NFS服务状态
若要检查刚刚在NFS服务器上启动的NFS服务的状态,以root用户身份输入:
# systemctl status nfs-server.service
19.5 共享目录
若要将NFS服务器上的/var/mystuff目录共享给所有用户,以只读方式访问,并允许客户端上的root用户对该共享目录具有root访问权限,可先创建挂载目录:
# mkdir /var/mystuff
然后在/etc/exports文件中创建一个类似以下的条目:
/var/mystuff *(ro,no_root_squash,insecure)
为了使共享目录可用,输入:
# exportfs -v -a
exporting *:/var/mystuff
19.6 确保共享目录可访问
若要确保创建的共享目录对所有主机都可访问,可按以下步骤操作:
1. 首先,通过在/etc/hosts.allow文件的开头添加以下条目,确保rpcbind不受TCP包装器的阻止:
rpcbind: ALL
- 在使用firewalld的系统(RHEL 8和最近的Fedora系统)中,安装firewall - config软件包,然后运行firewall - config。在出现的“防火墙配置”窗口中,确保nfs和rpc - bind在永久防火墙设置中被选中为“开启”。
- 在使用iptables防火墙的系统(RHEL 6和早期的Fedora系统,无firewalld)中,需要通过在/etc/sysconfig/iptables文件中添加以下规则来打开至少TCP和UDP端口111(rpcbind)、20048(mountd)和2049(nfs),并启动iptables服务:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20048 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 20048 -j ACCEPT
SELinux在强制模式下应该能够共享NFS文件系统,而无需更改文件上下文或布尔值。为了确保创建的共享目录可以以只读方式共享,以root用户身份在NFS服务器上运行以下命令:
# setsebool -P nfs_export_all_ro on
19.7 查看NFS服务器共享目录
若要从NFS客户端查看NFS服务器上可用的共享目录,假设NFS服务器名为nfsserver,可输入:
# showmount -e nfsserver
Export list for nfsserver:
/var/mystuff *
19.8 挂载NFS共享目录
若要在NFS客户端上创建一个名为/var/remote的目录,并将NFS服务器(在本示例中名为nfsserver)上的/var/mystuff目录临时挂载到该挂载点,以root用户身份输入:
# mkdir /var/remote
# mount -t nfs nfsserver:/var/mystuff /var/remote
19.9 自动挂载NFS共享目录
若要添加一个条目,使在重启时自动进行相同的挂载操作,可先卸载/var/remote目录:
# umount /var/remote
然后在客户端系统的/etc/fstab文件中添加一个类似以下的条目:
/var/remote nfsserver:/var/mystuff nfs bg,ro 0 0
为了测试共享目录是否配置正确,以root用户身份在NFS客户端上输入:
# mount -a
# mount -t nfs4
nfsserver:/var/mystuff on /var/remote type nfs4
(ro,vers=4,rsize=524288...
19.10 复制文件到NFS共享目录
若要将一些文件复制到NFS服务器上的/var/mystuff目录,可输入:
# cp /etc/hosts /etc/services /var/mystuff
从NFS客户端,为了确保能够看到刚刚添加到该目录的文件,并确保无法从客户端向该目录写入文件,可输入:
```bash
ls /var/remote
hosts services
超级会员免费看

被折叠的 条评论
为什么被折叠?



