第一章-架设前的准备工作

架设前的准备工作

1.1 前言: Linux 有啥功能

1.1.1 只想用 Linux 架设服务器需要啥能力?

如果有人问你:『Linux 最强大的功能是什么』?大概大家都会回答『是网络功能啊!』,接下来,如果对方再问:『所以学 Linux 就是为了架设服务器啰?』

呵呵!这个问题可就见仁见智啰!说穿了, Linux 其实就是一套非常稳定的操作系统,任何工作只要能在 Linux 这个操作系统上面跑,那他就是 Linux 可以达成的功能之一啰!

所以 Linux 的作用实在不止于网络服务器的架设吶。
举例来说,在 Linux 上面开发跨平台的数值模式 (model) 诸如大型的大气仿真模式,由于 Linux 的稳定与完善的资源分配功能,使得在 Linux 上面开发出来的程序运作的又快又稳定。此外,诸如 KDE, GNOME 等漂亮的图形接口,搭配诸如 Open Office等办公室软件,Linux 立刻摇身一变而成为优秀的办公室桌面计算机了(Desktop)。此外, Google 制作出专门给手机系统用的 Android 也是以 Linux 为底开发的。所以说,千万不要小看了 Linux 的多样功能吶。

1.1.2 架设服务器难不难呢?

不管是 Windows 还是 Linux ,要架设好一部堪称完美的服务器,『基本功课』还是得做的,这包括了:

  1. 基础网络的基本概念,以方便进行联网与设定及除错;
  2. 熟悉操作系统的简易操作:包括登录分析、账号管理、文书编辑器的使用等等的技巧;
  3. 信息安全方面:包括防火墙与软件更新方面的相关知识等等;
  4. 该服务器协议所需软件的基本安装、设定、除错等,才有办法实作。

1.2 基本架设服务器流程

1.2.1 网络服务器成功联机的分析

底下我们就整个服务器的简易架设流程当中来分析一下,以了解为什么了解操作系统的基础对于网站维护是相当重要的呢?首先,到底我们是如何联机到服务器的? 联机到服务器又取得啥咚咚?我们先以底下这张图示来作个简单的说明好了:
在这里插入图片描述

所以,根据上面的流程我们大概可以将整个联机分为几个部分,包括:网络、服务器本身、内部防火墙软件设定、各项服务配置文件、细部权限的 SELinux 以及最终最重要的档案权限。底下就分几个细项来谈谈啰。

1.网络:了解网络基础知识与所需服务之通讯协议

  • 基本的网络基础知识:包括以太网络硬件与协议、TCP/IP、网络联机所需参数等;
  • 各网络服务所对应的通讯协议原理,以及各通讯协议所需对应的软件。

2.服务器本身:了解架网络服务器之目的以配合主机的安装规划

3.服务器本身:了解操作系统的基本操作

4.内部防火墙设定:管理系统的可分享资源

5.服务器软件设定:学习设定技巧与开机是否自动执行

  • 软件如何安装、如何查询相关配置文件所在位置;
  • 服务器软件如何设定?
  • 服务器软件如何启动?如何设定自动开机启动?如何观察启动的埠口?
  • 服务器软件激活失败如何除错?如何观察登录档?如何透过登录档进行除错?
  • 透过客户端进行联机测试,如果失败该如何处理?联机失败的原因是服务器还是防火墙?
  • 服务器的设定修改是否有建立日志?登录档是否有定期分析?
  • 服务器所提供或分享的数据有无定期备份?如何定期自动备份或异地备份?

6.细部权限设定:包括 SELinux 与档案权限

1.2.2 一个常见的服务器设定案例分析

上面讲完后或许你还是不很清楚到底这些技能如何串起来?鸟哥这里提供一个简单的案例来分析一下好了, 这样你应该就比较容易清楚的知道为何需要学习这些咚咚。

  • 网络环境:假设你的环境里面 (不管是家里还是宿舍) 共有五部计算机,这五部计算机需要串接在一起,且都可以对外联机;
  • 对外网络:你的环境只有一个对外的联机方式,这里假设是台湾较流行的ADSL 或 10M 的光纤这种透过电话线拨接的类型;
  • 额外服务:你想要让这五部计算机都可以上网,而且其中还有一部可以做为网络驱动器机,提供同学或家人作为数据备份与分享之用;
  • 服务器管理:由于你可能需要进行远程管理,因此你这部服务器得要开放联机机制,以让远程计算机可以联机到这部主机来进行维护;
  • 防火墙管理:因为担心这部做为档案分享服务器的系统被攻击,因此你需要针对 IP 来源进行登入权力的控制;
  • 账号管理:另外,由于同学的数据有隐密与共享之分,因此你还得要提供每个同学个别的账号, 且每个账号都有磁盘容量的使用限制;
  • 后端分析:最后,由于担心系统出问题所以你得要让系统自动定期分析磁盘使用量、登录文件参数信息等等。

在上述的环境中,你要考虑的东西有哪些呢?依据本小节一开始谈到的六个步骤来分析的话,你可能需要底下这些咚咚喔!

1.2.2-1 了解网络基础

硬件规划

联机规划

网络基础

1.2.2-2 服务器本身的安装规划与架站目的的搭配

那你该如何安装你的系统呢?

下载最新的 Linux 映像档来刻录

学习者经常只有一部主机,建议你使用 Virtualbox来仿真出一部实体主机

Virtualbox 的安装与设定请自行参考其官网上面的 Documentation 介绍,这里不再赘言。只是需要注意的是, 若
(1)需要架设网站来上网,建议网络使用桥接模式 (bridge) ,且网络卡类型使用 Intel 的桌面计算机类型即可。
(2)由于我们未来会教导 NAT 服务器,因此最好有两张网卡,一张使用 bridge 一张使用内网(intnet) 较佳。
(3)磁盘配置建议使用 SATA 类型,且容量请给予 25GB 以上。
(4)内存至少该给予 512MB 以上,最好有 1GB 来测试。 其他的请参考官网文件,或者使用默认配置即可。

当然啦,如果你有独立的实体机器来安装,那就更好了!不需理会这一小段文字的说明喔。

默认配置如下:

分割表请依如下方式进行:
/: 2GB
/boot: 200MB
/usr : 4GB
/var : 2GB
/tmp : 1GB
swap : 1GB
/home: 5GB,并且使用 LVM 模式建置
其他容量请保留,未来再来进行额外练习!

软件挑选时,请选择『 basic server 』项目即可;

信息安全部分,防火墙选择启动,SELinux 选择强制 (Enforce);

假设 IP 分享器有自动分配 IP 的功能,所以网络参数先选择 DHCP 即可,未来再自己修改。

实际流程大致如下

  1. 由于我们使用光驱开机来安装系统,因此得先进入 BIOS ,选择光驱开机,并且将 CentOS 6.x 的 DVD 放入光驱中;

  2. 在启动安装的画面中,选择『Install or upgrade an existing system』来安装新系统;

  3. 出现『 Disc Found 』字样,此时建议可以选择『 Skip 』即可略过;

  4. 在欢迎画面以鼠标点选『 Next 』

  5. 语系数据可以选择『Chinese(Traditional)(中文(正体))』;

  6. 键盘格式保留『美式英文』即可;

  7. 安装包含的装置类型,直接选择默认的『基本储存装置』即可;

  8. 因为我们是全新的硬盘,因此会出现一个找不到分割表的错误,此时选择『重新初始化』即可;

  9. 进入网络主机名的设定,先保留『localhost.localdomain』即可。 同画面中还有一个『配置网络』的选项,我们先不要动他!等未来谈到网络设定再来处理即可;

  10. 进入时区选择

  11. 出现 root 密码制作,这里我们先设定为『 centos 』吧! 这个密码太简单,系统会出现警告,你选择『照样使用』即可。你也可以自行设定其他密码;

  12. 出现哪一类型安装的模式,因为我们有自己的分割考虑,所以,请选择『建立自定义分割格式』来处理喔!

  13. 在出现分割画面中,先点选『sda』项目,然后点选『建立』的按钮,在出现的窗口中, 再点选『标准分割区』项目,然后点『建立』。 在最后的窗口中填写挂载点、容量等信息后,最终按下『确定』即可。最终画面有点像这样:
    在这里插入图片描述

  14. 依据前面的分割规划,持续进行上述的动作,将所有的分割都处理完毕,除了 /home 之外。

  15. 由于 /home 想要使用 LVM 的方式来建立文件系统,因此点选『建立』后,选择『LVM 实体卷册』项目,按下建立,在出现的分割窗口中容量填写5GB,示意图有点像这样:

  16. 出现启动加载程序作业,都使用默认值即可,请按『下一步』;

  17. 出现安装类型,因为我们主机的角色为服务器,因此选择『BasicServer』项目! 其他项目保留默认,然后按下『下一步』就开始进行安装程序啰!

  18. 经过一段时间的等待,出现重新启动后,你就重新启动吧!喔!要记得将 DVD 拿出来喔!(怪异的是,鸟哥第一次安装后, 竟然发现电源管理有问题,得在 kernel 处增加 noapic 才能顺利开机呢!)

  19. 装好并重新启动后,就会进入 runlevel 3 的纯文本界面!因为是服务
    器嘛!

1.2.2-3 服务器本身的基本操作系统操作

既然我们这部主机得要提供不同账号来使用他们自己的网络驱动器,因此还需要建立账号啊,使用磁盘配额 (quota) 等等的。 那么你会不会建立账号呢?你会不会建置共享目录呢?你能不能处理每个账号的 Quota 配额呢?如果 /home 的容量不足了,你会不会放大 /home 的容量呢?有没有办法将系统的磁盘使用情况定期的发送邮件给管理员呢?这些都是基本的维护行为喔! 我们底下就以几个实际例子来练习看看你的基础能力吧!

例题-大量建置账号

假设我的五个朋友账号分别是 vbirduser{1,2,3,4,5},且这五个朋友未来想要共享一个目录,因此应该要加入同一个群组,假设这个群组为 vbirdgroup,且这五个账号的密码均为 password 。那该如何建置这五个账号?
答:
你可以写一支脚本程序来进行上述的工作喔!

[root@localhost ~]# mkdir bin
[root@localhost ~]# cd /root/bin
[root@localhost bin]# vim useradd.sh
#!/bin/bash
groupadd vbirdgroup
for username in vbirduser1 vbirduser2 vbirduser3 vbirduser4 vbirduser5
do
	useradd -G vbirdgroup $username
	echo "password" | passwd --stdin $username
done
[root@localhost bin]# sh useradd.sh
[root@localhost bin]# id vbirduser1
uid=501(vbirduser1) gid=502(vbirduser1)
groups=502(vbirduser1),501(vbirdgroup)
context=root:system_r:unconfined_t:SystemLow-SystemHigh

最后利用 id 这个指令来查询看看,是否群组的支持是对的啊!

例题-共享目录的权限:

这五个朋友的共享目录建置于 /home/vbirdgroup 这个目录,这个目录只能给这五个人使用,且每个人均可于该目录内进行任何动作!若有其他人则无法使用 (没有权限),那该如何建置这个目录的权限呢?
答:
考虑到共享目录,因此目录需要有 SGID 的权限才行!否则个别群组数据会让这五个人彼此间无法修改对方的数据的。因此需要这样做:

[root@localhost ~]# mkdir /home/vbirdgroup
[root@localhost ~]# chgrp vbirdgroup /home/vbirdgroup
[root@localhost ~]# chmod 2770 /home/vbirdgroup
[root@localhost ~]# ll -d /home/vbirdgroup
drwxrws---. 2 root vbirdgroup 4096 2011-07-14 14:49 /home/vbirdgroup/
# 上面特殊字体的部分就是你需要注意的部分啰!特别注意那个权限的 s 功
能喔!

例题-Quota 实作:

假设这五个用户均需要进行磁盘配额限制,每个用户的配额为 2GB (hard) 以及 1.8GB (soft),该如何处理?
答:
这一题实作比较难,因为必须要包括文件系统的支持、quota 数据文件建置、quota 启动、建立用户 quota 信息等过程。整个过程在基础篇有讲过了,这里很快速的带领大家进行一次吧!

# 1. 启动 filesystem 的 Quota 支持
[root@localhost ~]# vim /etc/fstab
UUID=01acf085-69e5-4474-bbc6-dc366646b5c8 /
ext4 defaults 1 1
UUID=eb5986d8-2179-4952-bffd-eba31fb063ed /boot ext4 defaults 1 2
/dev/mapper/server-myhome /home
ext4
defaults,usrquota,grpquota 1 2
UUID=605e815f-2740-4c0e-9ad9-14e069417226 /tmp
ext4 defaults 1 2
....(底下省略)....
# 因为是要处理用户的磁盘,所以找到的是 /home 这个目录来处理的啊!
# 另外,CentOS 6.x 以后,默认使用 UUID 的磁盘代号而非使用文件名。
# 不过,你还是能使用类似 /dev/sda1 之类的档名啦!
[root@localhost ~]# umount /home; mount -a
[root@localhost ~]# mount | grep home //查看系统中已经挂载的文件系统,注意有虚拟文件系统
/dev/mapper/server-myhome on /home type ext4 (rw,usrquota,grpquota)
# 做完使用 mount 去检查一下 /home 所在的 filesystem 有没有上述的字!
# 2. 制作 Quota 数据文件,并启动 Quota 支持
[root@localhost ~]# quotacheck -avug
quotacheck: Scanning /dev/mapper/server-myhome [/home] done
....(底下省略)....
# 会出现一些错误的警告信息,但那是正常的!出现上述的字样就对了!
[root@localhost ~]# quotaon -avug
/dev/mapper/server-myhome [/home]: group quotas turned on
/dev/mapper/server-myhome [/home]: user quotas turned on
# 3. 制作 Quota 数据给用户
[root@localhost ~]# edquota -u vbirduser1
Disk quotas for user vbirduser1 (uid 500):
Filesystem
blocks
soft
hard
inodes soft
5 0
hard
/dev/mapper/server-myhome
20
1800000
2000000
0
# 因为 Quota 的单位是 KB ,所以这里要补上好多 0 啊!看的眼睛都花了!
[root@localhost ~]# edquota -p vbirduser1 vbirduser2
# 持续作几次,将 vbirduser{3,4,5} 通通补上去!
[root@localhost ~]# repquota -au
*** Report for user quotas on device /dev/mapper/server-myhome
Block grace time: 7days; Inode grace time: 7days
Block limits
File limits
User
used
soft
hard grace
used soft hard
grace
----------------------------------------------------------------------
root--

vbirduser1 --

vbirduser2 --

vbirduser3 --

vbirduser4 --

vbirduser5 --

# 看到没?上述的结果就是有发现到设定的 Quota 值啰!整个流程就是这样!

例题-文件系统的放大 (LVM):

纯粹假设的,我们的 /home 不够用了,你想要将 /home 放大到 7GB 可不可行啊?
答:
因为当初就担心这个问题,所以 /home 已经是 LVM 的方式来管理了。此时我们要来瞧瞧 VG 够不够用,如果够用的话,那就可以继续进行。如果不够用呢?我们就得要从 PV 着手啰!整个流程可以是这样来观察的。

# 1. 先看看 VG 的量够不够用:
[root@localhost ~]# vgdisplay
--- Volume group ---
....(中间省略)....
VG Size		4.88 GiB <==只有区区 5G 左右
Free PE / Size		0 / 0 <==完全没有剩余的容量了!
# 真惨!已经没有多余的 VG 容量可以使用了!因此,我们得要增加 PV 才行。
# 2. 开始制作出所需要的 partition 吧!作为 PV 用的!
[root@localhost ~]# fdisk /dev/sda <==详细流程我不写了!自己瞧
[root@localhost ~]# partprobe <==在虚拟机上面得要 reboot 才行!
# 3. 将 /dev/sda9 加入 PV,并将该 PV 加入 server 这个 VG 吧
[root@localhost ~]# pvcreate /dev/sda9
[root@localhost ~]# vgextend server /dev/sda9
[root@localhost ~]# vgdisplay
# 4. 准备加大 /home,开始前,还是先观察一下才增加 LV 容量较好!
[root@localhost ~]# lvdisplay
--- Logical volume ---
....(中间省略)....
LV Size		4.88 GiB <==只有 5GB 左右,需要增加 2GB 啰
....(底下省略)....
# 看起来,是需要增加容量啰!我们使用 lvresize 来扩大容量吧!
[root@localhost ~]# lvresize -L 6.88G /dev/server/myhome
Rounding up size to full physical extent 6.88 GiB
Extending logical volume myhome to 6.88 GiB <==处理完毕啰!
Logical volume myhome successfully resized
# 看来确实是扩大到 6.88GB 啰!开始处理文件系统吧!
# 5. 扩大文件系统
[root@localhost ~]# resize2fs /dev/server/myhome
[root@localhost ~]# df -h
....(其他省略)....
# 可以看到文件系统确实有放大到 6.8G 喔!这样了解了吗?                                               

1.2.2-4 服务器内部的资源管理与防火墙规划

你可知道本章第一个实作题安装好了你的 Linux 之后,系统到底开放了多少服务呢?这些服务有没有对外面的世界开放监听? 这些服务有没有漏洞或者是能不能进行网络在线更新?这些服务如果没有要用到,能不能关闭?此外, 这些服务能不能仅开放给部分的来源使用而不是对整个 Internet 开放?这都是需要了解的呢。 底下我们就以几个小案例来让你了解一下,到底哪些数据是你必须要熟悉的呢?

例题-不同 runlevel 的服务控管:

在目前的 runlevel 之下,取得预设启动的服务有哪些呢?此外,我的系统目前不想启动自动网络挂载 (autofs) 机制,我不想要启动该服务的话,该如何处理?
答:
默认的 runlevel 可以使用 runlevel 这个指令来处理,那我们预设使用 3 号的 runlevel,因此你可以这样做:

[root@localhost ~]# LANG=C chkconfig --list | grep '3:on'

上面指令的输出讯息中,会有 autofs 服务是在启动的状态,如果想要关闭他,可以这样做:

[root@localhost ~]# chkconfig autofs off
[root@localhost ~]# /etc/init.d/autofs stop
例题-查询启动在网络监听的服务

我想要检查目前我这部主机启动在网络端口口监听的服务有哪些,并且关闭不要的程序,该如何进行?
答:
网络监听的端口口分析,可以使用如下的方式分析到:

[root@localhost ~]# netstat -tulnp

现在假设我想要关闭 avahi-daemon 这个服务以移除该服务启动的埠口时,应该要如同上题一样,利用 /etc/init.d/xxx stop 关闭,再使用 chkconfig 去处理开机不启动的行为!不过,因为启动的服务名称与实际指令可能不一样,我们在 netstat上面看到的 program 项目是实际软件执行文件,可能与 /etc/init.d/ 底下的服务档名不同,因此可能需要使用 grep 去撷取数据,或者透过那好棒的 [tab] 按键去取得相关的服务档名才行。

[root@localhost ~]# /etc/init.d/avahi-daemon stop
[root@localhost ~]# chkconfig avahi-daemon off
例题-利用 yum 进行系统更新

假设你的网络已经通了,目前你想要处理全系统更新,同时需要每天凌晨 2:15自动进行全系统更新,该如何作?
答:
全系统更新使用 yum update 即可。但是由于 yum update 需要使用者手动输入 y 去确认真的要安装,因此在 crontab 里头处理相关任务时,就得要使用 yum -yupdate 了!

[root@localhost ~]# yum -y update
# 第一次作会进行非常之久!因为系统真的有些数据要更新嘛!还是得等待的!
[root@localhost ~]# vim /etc/crontab
15 2 * * * root /usr/bin/yum -y update

不过这里还是要额外提醒各位喔,如果你的系统有更新过核心 (kernel) 这个软件,务必要重新启动啊!因为核心是在开机时加载的,一经载入就无法在这次的操作中更改版本的。

那个 crontab 档案的处理,以及 crontab -e 的指令应用,
在通过了上述的各项设定后,我们的 Linux 系统应该是比较稳定些了,再接着下来,我们要开始来设定资源的保护了! 例如 ssh 这个远程可登入的服务得要限制住可登入的 IP 来源,以及制订防火墙规则流程等。 这部份则是本教学文件后续要着重介绍的部分,留待后面章节再来谈吧!

1.2.2-5 服务器软件设定:学习设定技巧与开机是否自动执行

这部份就是整个服务器架设篇的重要内容了!前一小节也曾谈过,在服务器架设部分你得要熟悉相当多的信息, 否则未来维护会显的很麻烦。我们以本章提到的大前提为例,我们想要提供一个网络驱动器机,那么网络驱动器机使用的机制有哪些呢? 常见的除了网页形式的分享磁盘之外,还有常见的网芳以及 Linux 的 NFS 方式

由于假设局域网络内的操作系统大部分是 Windows 好了,因此网芳应该是个比较合理的磁盘分享选择。 那么网芳到底启动了多少个埠口?是如何持续提供网芳数据的?
提供的账号有没有限制?提供的权限该如何设定? 是否可规定谁可登入某些特定目录?
针对网芳服务的埠口该如何设定防火墙?如果系统出错该如何查询错误信息? 这个网芳在 Linux 底下要使用什么服务来达成?这都是需要学习的呢!

直接告诉你,网芳的制作在 Linux 底下是由 Samba 这套软件来达成的。Samba 的详细设定我们会在后续章节介绍。 这里要告诉你的是, 架设一个网芳服务器,你应该要会的基础知识有哪些?以及告诉你,你可以背下来的架设流程中, 理论上应该要经过哪些步骤的过程,这样对你未来处理服务器设定时,才会有点帮助啊!

1. 软件安装与查询

例题:

查出你的系统底下有没有 samba 这套软件,若无,请自行查询与安装该软件
答:
已安装的软件可以使用 rpm 去察看看,尚未安装的则使用 yum 功能。所以可以这样进行看看:

[root@localhost ~]# rpm -qa | grep -i samba
samba-common-3.5.4-68.el6_0.2.x86_64
samba-client-3.5.4-68.el6_0.2.x86_64
samba-winbind-clients-3.5.4-68.el6_0.2.x86_64
# 看起来 samba 主程序尚未被安装啊!此时就要这样做:
[root@localhost ~]# yum search samba <==先查一下有没有相关的软件
[root@localhost ~]# yum install samba <==找到之后,那就安装吧!
# 那么如何找出配置文件呢?因为我们总是需要修改配置文件啊!这样做吧:
[root@localhost ~]# rpm -qc samba samba-common
/etc/logrotate.d/samba
/etc/pam.d/samba
/etc/samba/smbusers
/etc/samba/lmhosts
/etc/samba/smb.conf
/etc/sysconfig/samba

3.服务器主设定与相关设定

这部份可就麻烦了!因为你得要了解到,你到底需要的服务是什么,针对该服务需要设定的项目有哪些? 这些设定需要用到什么指令或配置文件等等。
一般来说,你得要先察看这个服务的通讯协议是啥,然后了解该如何设定, 接下来编辑主配置文件,根据主配置文件的数据去执行相对应的指令来取得正确的环境设定。以我们这里的网芳为例, 我们需要设定工作组,然后需要设定可以使用网芳的身份为非匿名,接下来就能够开始处理主配置文件。 因此你需要有:

  1. 先使用 vim 去编辑 /etc/samba/smb.conf 配置文件;
  2. 利用 useradd 建立所需要的网芳实体用户;
  3. 利用 smbpasswd 建立可用网芳的实体帐户;
  4. 利用 testparm 测试一下所有数据语法是否正确;
  5. 检查看看在网芳内分享的目录权限是否正确。

这些设定都搞定之后,才能够继续进行启动与观察的动作呦!而想要了解更多关于 samba 的相关设定技巧与应用, 除了 google 大神之外, /usr/share/doc内的文件,以及 man 这个好用的家伙都必须要去阅读一番!

4.服务器的启动与观察

在设定妥当之后,接下来当然就是启动该服务器了。一般服务器的启动大多是使用 stand alone 的模式, 如果是比较少用的服务,如 telnet ,就比较有可能使用到 super daemon 的服务启动类型。我们这里依旧使用 samba 为例, 来瞧瞧如何启动他吧!

例题:
如何启动 samba 这个服务呢?并且设定好开机就启动他!
答:
想要了解如何启动,得要使用 rpm 去找一下软件的启动方式,然后再去处理启动的行为啰!

# 先查询一下启动的方式为何:
[root@localhost ~]# rpm -ql samba | grep '/etc'
/etc/logrotate.d/samba
/etc/openldap/schema
/etc/openldap/schema/samba.schema
/etc/pam.d/samba
/etc/rc.d/init.d/nmb
/etc/rc.d/init.d/smb <==所以说是 stand alone 且档名为 smb, nmb 两
个!
/etc/samba/smbusers
# 开始启动他!且设定开机就启动喔!:
[root@localhost ~]# /etc/init.d/smb start
[root@localhost ~]# /etc/init.d/nmb start
[root@localhost ~]# chkconfig smb on
[root@localhost ~]# chkconfig nmb on
# 接下来,让我们观察一下有没有启动相关的埠口吧!
[root@localhost ~]# netstat -tlunp | grep '[sn]mbd'
tcp 0 0 :::139

6.客户端的联机测试

接下来就是要找一部机器做为客户端,然后尝试使用本机器提供的网芳功能啊!这样才能够了解设定是对还是错! 相关的客户端联机与服务器提供的服务有关,例如 WWW 服务器就要使用 browser 去测试,网芳当然就得要使用网芳客户端程序啰!这部份也是本服务器篇要讲的基本内容啦!
但是很多时刻,客户端联机测试不成功并非是服务器设定的问题,很多是客户端使用方式不对! 包括客户端自己的防火墙没开啦,客户端的账号权限密码等等记错啦等等的,问题很大啦! 总体来说:『教育你的 Client 使用者具有最最
基础的 Linux 账号、群组、档案权限等概念,才是一个彻底解决问题的方法』,但这也是最难的部分…

7.错误克服与观察登录档

一般来说,如果 Linux 上面的服务出现问题时,通常会在屏幕上面直接告诉你错误的原因为何,所以你得要注意屏幕讯息。 老实说,屏幕讯息通常就已经告诉你该如何处理了。如果还不能处理呢?你可以这样处置看看:

先看看相关登录文件有没有错误讯息,举例来说, samba 除了会在
/var/log/messages 里面列出讯息外, 大部分的讯息应该是摆放在/var/log/samba/ 这个目录下的数据,因此你就得先去查阅一番。通常在登录文件内的信息, 会比在屏幕上的还要仔细,那你就可以自行处理完毕了

将讯息带入 Google 查询,通常可以解决登录档出现的但是你没有办
法克服的问题喔!达标率可达 95% 以上吧!

还是不成功,那就到各大讨论区去发问吧!建议到酷学园

最常出现的其实是 SELinux 的错误啦!此时就得要使用 SELinux 的方法来尝试处理啰! 这也是本服务器篇后续会稍微提到的内容。

经过上面的流程,你就可以知道啦,架设好一部主机需要知道: (1)各个 process 与signal 的观念;(2)账号与群组的观念与相关性;(3)档案与目录的权限,这当然包含与账号相关的特性; (4)软件管理员的学习;(5)BASH 的语法与 shell scripts 的语法,还有那个很重要的 vim 啰!:(6)开机的流程分析,以及记录登录文件的设定与分析;(7)还得知道类似 quota 以及连结档等等的概念。要知道的真的很多,而且还是不能省略的步骤喔!

1.2.2-6 细部权限与 SELinux

如果有些特殊的使用情况时,权限设定就是个很重要的因素。举例来说,我们系统上面,现在有 vbirduser{1,2,3,4,5} 以及 student 等账号,而共享目录为/home/vbirdgroup。现在, vbirdgroup 的群组想要让 student 这个用户可以进入该共享目录查阅, 但是不能够更改他们原本的数据,你该如何进行呢?你或许可以这样
想:

让 student 加入 vbirdgroup 群组即可:但如此一来, student 具有
vbirdgroup 的 rwx 权限,也就可以写入与修改啰, 因此这个方案行不通。

将 /home/vbirdgroup 的权限改为 2775 即可:如此一来 student 拥有其他人的权限 (rx),但如此一来其他所有任何人均拥有 rx 权限,这个方案也行不通

传统的身份与权限概念就只有上面两种解决方案而已,这下子严重了!我们没有办法针对 student 进行权限设定! 此时就得要使用 ACL 啰~同样这个例子,我们就来
实作一下:

例题-单一用户、群组的权限设定 ACL

想要让 student 可以进入 /home/vbirdgroup 进行查询,但不可写入。同时vbirduser5 在 /home/vbirdgroup 内,不具有任何权限。
答:
只能使用 ACL 啰!由于安装时预设格式化就加上 acl 的文件系统功能支持,因此你可以直接处理如下的各项指令。如果你是使用后来新增的 partition 或filesystem ,或许得要在 /etc/fstab 内额外增加 acl 控制参数才行喔

[root@localhost ~]#
[root@localhost
[root@localhost
[root@localhost
useradd student
~]# passwd student
~]# setfacl -m u:student:rx /home/vbirdgroup
~]# setfacl -m u:vbirduser5:- /home/vbirdgroup
[root@localhost ~]# getfacl /home/vbirdgroup
# file: home/vbirdgroup
# owner: root
# group: vbirdgroup
# flags: -s-
user::rwx
user:vbirduser5:---
user:student:r-x
<==就是这两行,额外的权限参数哩!
group::rwx
mask::rwx
other::---
[root@localhost ~]# ll -d /home/vbirdgroup
drwxrws---+ 2 root vbirdgroup 4096 2011-07-14 14:49 /home/vbirdgroup

1.2.3 系统安全与备份处理

那么如何规范严格的密码规则呢?可以藉由
(1)修改 /etc/login.defs 档案里面的规则,以让用户需要每半年更改一次密码,且密码长度需要长于 8 个字符呢!
(2)利用/etc/security/limits.conf 来规范每个使用者的相关权限,让你的 Linux 可以较为安全一点点~
(3)利用 pam 模块来额外的进行密码的验证工作。

例题:

系统上比较重要的目录有 /etc, /home, /root, /var/spool/mail 等,你现在
想要在每天 2:45am 进行备份,且备份数据存到 /backup 内,备份的举动使用tar ,那该如何处理?
答:
鸟哥通常是使用 shell script 来进行备份数据的汇整,范例如下:

[root@localhost ~]# mkdir /root/bin; vim /root/bin/backup.sh
#!/bin/bash
backdir="/etc /home /root /var/spool/mail"
basedir=/backup
[ ! -d "$basedir" ] && mkdir $basedir
backfile=$basedir/backup.tar.gz
tar -zcvf $backfile $backdir
[root@localhost ~]# vim /etc/crontab
45 2 * * * root sh /root/bin/backup.sh

1.3 自我评估是否已经具有架站的能力

猜你喜欢

转载自blog.csdn.net/qq_52835624/article/details/120069254