转自:http://www.centoscn.com/CentOS/2015/0528/5555.html
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
1991 年的 10 月 5 日,Linux 创始人林纳斯 · 托瓦兹(Linus Torvalds)在 comp.os.minix 新闻组上发布消息,正式向外宣布 Linux 内核的诞生,1994 年 3 月,Linux 1.0 发布,代码量 17 万行,当时是按照完全自由免费的协议发布,随后正式采用 GPL(General Public License 的缩写,是一份 GNU 通用公共授权)协议。
Linux 具有如下优点:
? 稳定、免费或者花费少
? 安全性高
? 多任务,多用户
? 耗资源少
? 由于内核小,所以它可以支持多种电子产品,如:Android 手机、PDA 等。
随着 IT 产业的不断发展,用户对网站体验要求也越来越高,而目前主流网站后端承载系统都是 Linux 系统,目前 Android 手机全部基于 Linux 内核研发。企业大数据、云存储、虚拟化等先进技术都是基于 Linux 系统。
2010 年据有关权威部门统计:将来几年内我国软件行业的从业机会十分庞大,中国每年对软件人才的需求将达到 50 万人左右。而对于 Linux 专业人才的就业前景,更是广阔;据悉在未来 5-10 年内 Linux 专业人才的需求将达到 120 万 +!尤其是有经验的资深的 Linux 工程师目前非常的缺乏,薪资也是非常诱人,平均月薪都是 15-20K,能力强的薪资更高。
所以机会对每个人都是公平的,关键是我们每个人如何去行动,选择大于努力。
在安装 Linux 系统之前,先来了解 windows 系统结构,windows 系统一般是安装在 C 盘系统盘,同样 Linux 也有类似的系统盘(/ 根分区),Linux 通常分区为(根分区 /、swap 分区),Linux 系统以文件的存储方式,所有的文件都是存储在某个目录下的,类似于 windows 的文件夹。
对于文件系统的属性来说,windows 文件系统类型一般是 ntfs、fat32 等,而 Linux 文件系统类型则为 ext2、ext3、ext4 等(文件系统:是操作系统用于明确磁盘或分区上的文件的方法和数据结构,文件系统由三部分组成:与文件管理有关软件、被管理文件以及实施文件管理所需数据结构。)
安装 Linux 系统是每一个初学者的第一个门槛。在这个过程中间,最大的困惑莫过于给硬盘进行分区。虽然现在各种发行版本的 Linux 已经提供了友好的图形交互界面,但是很多人还是感觉无从下手。这其中的原因主要是不清楚 Linux 的分区规定。就好比如果我们了解了 windows 分区的规则,系统盘 C、数据盘 D 等,就很好分区了。
在 Linux 中规定,每一个硬盘设备最多只能有 4 个主分区(其中包含扩展分区)构成,任何一个扩展分区都要占用一个主分区号码,也就是在一个硬盘中,主分区和扩展分区一共最多是 4 个。
下面正式来安装 Linux 系统,安装系统前需要准备如下软件:
ü VMware workstation 10.0
ü CentOS 5.8 x86_i386.iso
安装图解如下:
第一步,新建虚拟机如下图:
第二步,选择相关选项,如下图:
第三步选择 "稍后安装操作系统",如下图:
第四步,选择客户机操作系统类型如下图:
第五步,设置虚拟机硬盘大小为 20G,最低不能小于 5G,如下图:
第六步,虚拟机新建完成,如下图:
第七步,修改虚拟机内存为 512M,并添加 ISO 镜像,如下图:
自此,虚拟机新建完成,接下来点击 "启动此虚拟机" 进行 Linux 系统安装,Linux 系统安装图解如下:
第一步,进入安装界面,直接按 Enter 回车键即可。
第二步,光盘检测,选择 SKIP 跳过。
第三步,选择安装过程中的语言,初学者可以选择 "简体中文"。
第四步,选择初始化整个硬盘,清除所有数据。
第五步,选择分区方式为 "自定义分区"。
第五步,点击 "新建"- 首先创建一个 swap 交换分区,大小为物理内存的 2 倍(1024M)。
第六步,继续创建分区,选择 "新建",然后创建根分区 /,如下图选择,大小为剩余所有空间即可。
第七步,默认点击下一步,同时默认 DHCP 配置,时钟选择上海,去掉 UTC 勾,点击下一步。
第八步,设置 root 密码,至少六位,点击下一步。
第九步,系统安装包选择,这里选择 "现在定制"。
第十步,系统安装包选择,左侧选择 "开发"---- 右侧选择 "开发工具" 和 "开发库",语言选择 "支持中文",其他一概不选择。
安装完毕会提示 "reboot",直接回车即可。
初学者可以自己安装虚拟机,然后把 linux 常用命令例如 cd、ls、chmod、useradd、vi 等等多练习几十遍,把自己敲打命令的熟练程度提升上来。
然后根据文档搭建 Linux 下常见的各种服务(DHCP、SAMBA、DNS、Apache、Mysql 等),遇到问题后可以在 google 搜索,搜索的时候多看几篇文章,综合最好的文章来解决问题。
能够熟练的搭建服务后,理解每个服务的完整配置和优化,可以拓展思维。例如 LAMP,我们一般是把所有服务放在一台机器上,如果分开多台该如何部署呢?等等。
平时多积累 shell 编程,可以在网上查找前辈们写的非常好的 shell,自己下载下来多练习几遍,从中吸取,不断提高。
建立一个自己的学习博客,把平时工作学习中的知识都记录在里面,这样也可以供别人来参考同时也能提高自己的编写文档及方案的能力。
通过以上学习能够满足企业的一般应有,需要达到资深级别,还需要深入学习集群架构、负载均衡、自动化运维、运维开发等知识。最后还是一句话:多练习才是硬道理!实践出真知!
通过前两章的学习,我们已经能够独立安装 Linux 系统,已经掌握了 Linux 学习的技巧,那接下来,我们将系统的来了解 Linux 系统各目录、权限及常用命令的使用。
通过前面的学习, 我们已经能够独立安装完一个 linux 系统,那接下来我们来熟悉一下 Linux 系统里面的各个目录文件夹的大致功能:
主要的目录树的有 /、/root、/home、/usr、/bin 等目录。下面是一个典型的 linux 目录结构如下: (附图表)
/ 根目录
/bin 存放必要的命令
/boot 存放内核以及启动所需的文件
/dev 存放设备文件
/etc 存放系统配置文件
/home 普通用户的宿主目录,用户数据存放在其主目录中
/lib 存放必要的运行库
/mnt 存放临时的映射文件系统,通常用来挂载使用。
/proc 存放存储进程和系统信息
/root 超级用户的主目录
/sbin 存放系统管理程序
/tmp 存放临时文件
/usr 存放应用程序,命令程序文件、程序库、手册和其它文档。
/var 系统默认日志存放目录
默认进入系统,我们会看到这样的字符: [root@localhost ~]#, 其中 #代表当前是 root 用户登录,如果是 $ 表示当前为普通用户。
我们了解 linux 由很多目录文件构成,那我们来学习第一个 Linux 命令:
cd 命令, cd /home ;解析:进入 / home 目录
cd /root 进入 / root 目录 ;cd ../ 返回上一级目录; cd ./ 当前目录;(. 和.. 可以理解为相对路径;例如 cd /hom/test ,cd 加完整的路径,可以理解为绝对路径)
接下来继续学习更多的命令:
ls ./ 查看当前目录所有的文件和目录。
ls -a 查看所有的文件,包括隐藏文件, 以. 开头的文件。pwd 显示当前所在的目录。
mkdir 创建目录,用法 mkdir test ,命令后接目录的名称。
rmdir 删除空目录
rm 删除文件或者目录,用法 rm –rf test.txt (-r 表示递归,-f 表示强制)。
cp 拷贝文件,用法, cp old.txt /tmp/new.txt ,常用来备份;如果拷贝目录
需要加 –r 参数。mv 重命名或者移动文件或者目录,用法, mv old.txt new.txt
touch 创建文件,用法,touch test.txt,如果文件存在,则表示修改当前文件时间。
Useradd 创建用户,用法 useradd wugk ,userdel 删除用户。
Groupadd 创建组,用法 groupadd wugk1 ,groupdel 删除组。find 查找文件或目录,用法 find /home -name "test.txt", 命令格式为:
find 后接查找的目录,-name 指定需要查找的文件名称,名称可以使用 * 表示所有。
find /home -name "*.txt" ; 查找 / home 目录下,所有以. txt 结尾的文件或者目录。
vi 修改某个文件,vi 有三种模式:
命令行模式、文本输入模式、末行模式。
默认 vi 打开一个文件,首先是命令行模式,然后按 i 进入文本输入模式,可以在文件里写入字符等等信息。
写完后,按 esc 进入命令模式,然后输入: 进入末行模式,例如输入: wq 表示保存退出。
如果想直接退出,不保存,可以执行: q!, q! 叹号表示强制退出。
cat 查看文件内容,用法 cat test.txt 可以看到 test.txt 内容
more 查看文件内容,分页查看,cat 是全部查看,如果篇幅很多,只能看到最后的篇幅。可以使用 cat 和 more 同时使用, 例如: cat test.txt |more 分页显示 text 内容,| 符号是管道符,用于把 | 前的输出作为后面命令的输入。
echo 回显,用法 echo ok,会显示 ok,输入什么就打印什么。
echo ok > test.txt ;把 ok 字符覆盖 test.txt 内容,> 表示追加并覆盖的意思。
>> 两个大于符号,表示追加,echo ok >> test.txt, 表示向 test.txt 文件追加 OK 字符,不覆盖原文件里的内容。
初学者常见的命令就如上所示,当然还有很多深入的命令需要学习,后面的课程会讲解。
在 Linux 操作系统中,root 的权限是最高的,相当于 windows 的 administrator,拥有最高权限,能执行任何命令和操作。在系统中,通过 UID 来区分用户的权限级别,UID 等于 0,表示此用户具有最高权限,也就是管理员。其他的用户 UID 依次增加,通过 / etc/passwd 用户密码文件可以查看到每个用户的独立的 UID。
每一个文件或者目录的权限,都包含一个用户权限、一个组的权限、其他人权限,例如下:
标红第一个 root 表示该文件所有者是 root 用户,第二个 root 代表该文件的所属的组为 root 组,其他用户这里默认不标出。
[root@node1 ~]# ls -l monitor_log.sh
-rw-r--r-- 1 root root 91 May 7 20:21 monitor_log.sh
[root@node1 ~]#
如果我们想改变某个文件的所有者或者所属的组,可以使用命令 chown
chown –R test:test monitor_log.sh 即可。
每个 Linux 文件具有四种访问权限:可读 (r)、可写(w)、可执行(x) 和无权限(-)。
利用 ls -l 命令可以看到某个文件或目录的权限,它以显示数据的第一个字段为
准。第一个字段由 10 个字符组成,如下:
[root@node1 ~]# ls -l monitor_log.sh
-rw-r--r-- 1 root root 91 May 7 20:21 monitor_log.sh
[root@node1 ~]#
第一位表示文件类型,- 表示文件,d 表示目录;后面每三位为一组。
第一组:2-4 位表示文件所有者的权限,即用户 user 权限,简称 u
第二组:5-7 位表示文件所有者所属组成员的权限,group 权限,简称 g
第三组:8-10 位表示所有者所属组之外的用户的权限,other 权限,简称 o
从上面这个文件,我们可以看出,monito_log.sh 文件对应的权限为:
root 用户具有读和写的权限,root 组具有读的权限,其他人具有读的权限。
为了能更简单快捷的使用和熟悉权限,rwx 权限可以用数字来表示,分别表示为 r(4)、w(2)、x(1)。
Monitor_log.sh 权限可以表示为:644
如果给某个文件授权,命令为 chmod:chmod 777 monitor_log.sh
熟悉了常用的命令和 Linux 权限,那接下来如何让所在的 Linux 系统上网呢?管理 linux 服务器网络有哪些命令呢?
Linux 服务器默认网卡配置文件在 / etc/sysconfig/network-scripts / 下,命名的名称一般为: ifcfg-eth0 ifcfg-eth1 ,eth0 表示第一块网卡,eth1 表示第二块网卡,依次类推。一般 DELL R720 标配有 4 块千兆网卡。
修改网卡的 IP,可以使用命令: vi /etc/sysconfig/network-scripts/ifcfg-eth0 如果是 DHCP 获取的 IP,默认配置如下:
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=dhcp
HWADDR=00:0c:29:52:c7:4e
ONBOOT=yes
TYPE=Ethernet
如果是静态配置的 IP,ifcfg-eth0 网卡配置内容如下:
# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE]
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:0c:29:52:c7:4e
ONBOOT=yes
TYPE=Ethernet
IPADDR=192.168.33.10
NETMASK=255.255.255.0
GATEWAY=192.168.33.1
网卡参数详解如下:
DEVICE=eth0 #物理设备名
ONBOOT=yes # [yes|no](重启网卡是否激活设备)
BOOTPROTO=static #[none|static|bootp|dhcp](不使用协议 | 静态分配 | BOOTP 协议 | DHCP 协议)
- TYPE = Ethernet #网卡类型
IPADDR=192.168.33.10 #IP 地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.33.1 #网关地址
网卡配置完毕,重启网卡,命令: /etc/init.d/network restart 即可。
查看 ip 命令:ifconfig 查看当前服务器所有网卡的 IP,可以单独指定,ifconfig eth0 查看 eth0 的 IP 地址。
网卡配置完毕,如果来配置 DNS,首先要知道 DNS 配置在哪个目录文件下,vi /etc/resolv.conf 文件:
在该文件里面添加如下两条:
nameserver 202.106.0.20
nameserver 8.8.8.8
从上到下,分别表示主 DNS,备 DNS。配置完毕后,不需要重启网卡, DNS 立即生效。
可以 ping www.baidu.com 看看效果:
IP 配置完毕后,我们可以通过远程工具来连接 Linux 服务器,常见的 Linux 远程连接工具有: putty、secureCRT(主流)、xshell、xmanger 等工具。
下载安装 secureCRT,打开工具,然后如图配置:
点击左上角 quick connect 快速连接,弹出界面,然后输入 IP,用户名,端口默认是 22,然后点击下方的 connect 连接,会提示输入密码,输入即可。
弹出输入密码框:
进入远程界面,与服务器真实登录一样,然后可以执行命令:
通过这几章的学习,我们已经熟练了 Linux 常用命令的操作,权限网络、网络配置、远程连接等知识,那接下来我们还能做什么呢?我们已经差不多入门了,接下来就是更进一步的服务配置,Linux 系统到底用来做什么呢?接下来的章节将跟大家一起来学习。
Linux 系统的应用,我们最开始介绍的时候简单介绍过,目前大中型企业都用它来承载 web 网站、数据库、虚拟化平台等,那接下来我们将在 Linux 系统安装各种服务和软件来实现 Linux 真正的价值。
NTP 服务器是用于局域网服务器时间同步使用的,可以保证局域网所有的服务器与时间服务器的时间保持一致,某些应用对时间实时性要求高的必须统一时间。
互联网的时间服务器也有很多,例如 ntpdate ntp.fudan.edu.cn 复旦大学的 NTP 免费提供互联网时间同步。
NTP 服务器监听端口为 UDP 的 123,那就需要在本地防火墙开启运行客户端访问 123 端口,vi /etc/sysconfig/iptables 添加如下规则:
-A INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
NTP 时间服务器配置:
yum install ntp ntpdate -y 即可!
修改 ntp.conf 配置文件
cp /etp/ntp.conf /etc/ntp.conf.bak
vi /etc/ntp.conf 只修改如下两行,把 #号去掉即可!
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
以守护进程启动 ntpd
/etc/init.d/ntpd start 即可
(注意 *: ntpd 启动后,客户机要等几分钟再与其进行时间同步,否则会提示 "no server suitable for synchronization found" 错误。)
配置时间同步客户机
crontab -e
增加一行,在每天的 6 点 10 分与时间同步服务器进行同步
10 06 * * * /usr/sbin/ntpdate ntp-server 的 ip >>/usr/local/logs/crontab/ntpdate.log
备注:如果客户机没有 ntpdate,可以 yum –y install ntp 即可!
以下是 ntp 服务器配置文件内容 (局域网 NTP,如果需要跟外网同步,添加外网 server 即可)
driftfile /var/lib/ntp/drift
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
includefile /etc/ntp/crypto/pw
keys /etc/ntp/keys
下面是参数详解:
restrict default ignore | # 关闭所有的 NTP 要求封包 |
restrict 127.0.0.1 | # 开启内部递归网络接口 lo |
restrict 192.168.0.0 mask 255.255.255.0 nomodify | #在内部子网里面的客户端可以进行网络校时,但不能修改 NTP 服务器的时间参数。 |
server 198.123.30.132 | #198.123.30.132 作为上级时间服务器参考 |
restrict 198.123.30.132 | #开放 server 访问我们 ntp 服务的权限 |
driftfile /var/lib/ntp/drift | 在与上级时间服务器联系时所花费的时间,记录在 driftfile 参数后面的文件内 |
broadcastdelay 0.008 | #广播延迟时间 |
自此 NTP 服务搭建完毕,然后在所有客户端 crontab 里面添加如下语句:
0 0 * * * /usr/sbin/ntpdate 10.0.0.155 >>/data/logs/ntp.log 2>&1
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 是一个局域网的网络协议,使用 UDP 协议工作,主要用途:给内部网络或网络服务供应商自动分配 IP 地址,DHCP 有 3 个端口,其中 UDP67 和 UDP68 为正常的 DHCP 服务端口,分别作为 DHCP Server 和 DHCP Client 的服务端口。
DHCP 可以部署在服务器、交换机或者服务器,可以控制一段 IP 地址范围,客户机登录服务器时就可以自动获得 DHCP 服务器分配的 IP 地址和子网掩码。其中 DHCP 所在服务器的需要安装 TCP/IP 协议,需要设置静态 IP 地址、子网掩码、默认网关。
正式安装 DHCP 服务:
Yum install dhcp dhcp-devel –y 即可,然后修改 DHCP /etc/dhcpd.conf 配置文件内容如下:
ddns-update-style interim;
ignore client-updates;
next-server 192.168.0.79;
filename "pxelinux.0";
allow booting;
allow bootp;
subnet 192.168.0.0 netmask 255.255.255.0 {
# --- default gateway
option routers 192.168.0.1;
option subnet-mask 255.255.252.0;
# option nis-domain "domain.org";
# option domain-name "192.168.0.10";
# option domain-name-servers 192.168.0.11;
# option ntp-servers 192.168.1.1;
# option netbios-name-servers 192.168.1.1;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192.168.0.100 192.168.0.200;
host ns {
hardware ethernet 00:1a:a0:2b:38:81;
fixed-address 192.168.0.101;}
}
参数解析如下:
选 项 | 解 释 |
ddns-update-style interim|ad-hoc|none | 参数用来设置 DHCP 服务器与 DNS 服务器的动态信息更新模式:interim 为 DNS 互动更新模式,ad-hoc 为特殊 DNS 更新模式,none 为不支持动态更新模式。 |
next-server ip | pxeclient 远程安装系统,指定 tftp server 地址 |
filename | 开始启动文件的名称,应用于无盘安装,可以是 tftp 的相对或绝对路径 |
ignore client-updates | 为忽略客户端更新 |
subnet-mask | 为客户端设定子网掩码 |
option routers | 为客户端指定网关地址 |
domain-name | 为客户端指明 DNS 名字 |
domain-name-servers | 为客户端指明 DNS 服务器的 IP 地址 |
host-name | 为客户端指定主机名称 |
broadcast-address | 为客户端设定广播地址 |
ntp-server | 为客户端设定网络时间服务器的 IP 地址 |
time-offset | 为客户端设定格林威治时间的偏移时间,单位是秒 |
注意如上配置,需要修改成对应服务器网段 IP,然后重启 DHCP 服务,/etc/init.d/dhcpd restart 即可。
客户端要从这个 DHCP 服务器获取 IP,需要做简单的设置,如果是 linux 需要把 / etc/sysconfig/network-scritps/ifcfg-eth0 里 BOOTPROTO 相改成 dhcp 即可,windows 机器的话,需要修改本地连接,把它设置成自动获取 IP 即可。
BOOTPROTO=dhcp
Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成,
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
SMB 协议是客户机 / 服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置 "NetBIOS over TCP/IP" 使得 Samba 不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
安装 SAMBA 服务器:
Yum install samba –y
安装完毕,然后做如下设置(过滤 #号行、空行如下命令)
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak ;egrep -v "#|^$" /etc/samba/smb.conf.bak |grep -v "^;" >/etc/samba/smb.conf
查看 smb.conf 配置文件如下:
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
security = share
passdb backend = tdbsam
load printers = yes
cups options = raw[temp]
comment=Temporary file space
path=/tmp
read only=no
public=yes[data]
comment=Temporary file space
path=/data
read only=no
public=yes
根据需求修改之后重启服务:
[root@node1 ~]# /etc/init.d/smb restart
Shutting down SMB services: [FAILED]
Shutting down NMB services: [FAILED]
Starting SMB services: [OK]
Starting NMB services: [OK]
security = user
workgroup = | WORKGROUP 设 Samba Server 所要加入的工作组或者域。 |
server string = Samba Server Version %v | Samba Server 的注释,可以是任何字符串,也可以不填。宏 %v 表示显示 Samba 的版本号。 |
1.share:用户访问 Samba Server 不需要提供用户名和口令, 安全性能较低。 2. user:Samba Server 共享目录只能被授权的用户访问, 由 Samba Server 负责检查账号和密码的正确性。账号和密码要在本 Samba Server 中建立。 3. server:依靠其他 Windows NT/2000 或 Samba Server 来验证用户的账号和密码, 是一种代理验证。此种安全模式下, 系统管理员可以把所有的 Windows 用户和口令集中到一个 NT 系统上, 使用 Windows NT 进行 Samba 认证, 远程服务器可以自动认证全部用户和口令, 如果认证失败, Samba 将使用用户级安全模式作为替代的方式。 4. domain:域安全级别, 使用主域控制器 (PDC) 来完成认证。 |
|
comment = test | 是对该共享的描述,可以是任意字符串。 |
path = /home/test | 共享目录路径 |
browseable= yes/no | 用来指定该共享是否可以浏览。 |
writable = yes/no | writable 用来指定该共享路径是否可写。 |
available = yes/no | available 用来指定该共享资源是否可用 |
admin users = admin | 该共享的管理者 |
valid users = test | 允许访问该共享的用户 |
invalid users = test | 禁止访问该共享的用户 |
write list = test | 允许写入该共享的用户 |
public = yes/no | public 用来指定该共享是否允许 guest 账户访问。 |
在浏览器里面访问方式为:\\192.168.33.10 (SMB 文件共享服务端 IP),如何没有权限访问,需要注意防火墙和 selinux 设置,可以使用如下命令关闭:
/etc/init.d/iptables stop ;sed –i '/SELINUX/s/enforcing/disabled' /etc/sysconfig/selinux
NFS 是 Network File System 的缩写,即网络文件系统。一种使用于分散式文件系统的协定,由 Sun 公司开发,于 1984 年向外公布。功能是通过网络让不同的机器、不同的操作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类 Unix 系统间实现磁盘文件共享的一种方法。
NFS 在文件传送或信息传送过程中依赖于 RPC 协议。RPC,远程过程调用 (Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。NFS 本身是没有提供信息传输的协议和功能的。
NFS 应用场景,常用于高可用文件共享,多台服务器共享同样的数据,可扩展性比较差,本身高可用方案不完善,取而代之的数据量比较大的可以采用 MFS、TFS、HDFS 等等分布式文件系统。
NFS 安装配置:
Yum install nfs* portmap -y 如下图,安装成功即可。
NFS 安装完毕,需要创建共享目录,共享目录在 / etc/exports 文件里面配置,可配置参数如下:
/data/ 192.168.33.11(rw,sync,no_hide,no_all_squash)
在配置文件中添加如上一行,然后重启 Portmap,NFS 服务即可,/etc/init.d/portmap restart ;/etc/init.d/nfs restart
第一列 / data / 表示需要共享的目录。
IP 表示允许哪个客户端访问。
IP 后括号里的设置表示对该共享文件的权限。
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
hide 在 NFS 共享目录中不共享其子目录
no_hide 共享 NFS 目录的子目录
all_squash 共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录。
no_all_squash 保留共享文件的 UID 和 GID(默认)
root_squash root 用户的所有请求映射成如 anonymous 用户一样的权限(默认)
no_root_squas root 用户具有根目录的完全管理访问权限
Linux 客户端,如何想使用这个 NFS 文件系统,需要在客户端挂载,挂载命令为:
Mount –t nfs 192.168.33.10:/data/ /mnt 即可。如果有报错根据错误信息排查。常见问题有 rpc 服务没有启动、防火墙没关闭、selinux 未关闭等问题。(拓展 * 有兴趣的童鞋可以研究 MFS(分布式文件系统)。)
FTP 是文件传输协议,正是由于这种协议使得主机间可以共享文件。 FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输。
vsftpd 是一款在 Linux 发行版中最主流的 FTP 服务器程序;特点是小巧轻快,安全易用;能让其自身特点得发发挥和掌握。
目前在开源操作系统中常用的 FTP 服务器程序主要有 vsftpd、ProFTPD、PureFTPd 和 wuftpd 等,这么多 FTP 服务器程序,关键在于自己熟练哪一个就使用哪一个。今天我们来研究一下 VSFTPD 简单安装及使用。安装命令: yum install vsftpd* -y
修改配置文件如下:
#vsftpd config 2014 by wugk
anonymous_enable=NO // 禁止匿名用户访问
local_enable=YES // 允许本地用户登录 FTP
write_enable=YES // 运行用户在 FTP 目录有写入的权限
local_umask=022 // 设置本地用户的文件生成掩码为 022,默认是 077
dirmessage_enable=YES // 激活目录信息, 当远程用户更改目录时, 将出现提示信息
xferlog_enable=YES // 启用上传和下载日志功能
connect_from_port_20=YES // 启用 FTP 数据端口的连接请求
xferlog_std_format=YES // 是否使用标准的 ftpd xferlog 日志文件格式
listen=YES // 使 vsftpd 处于独立启动监听端口模式
pam_service_name=vsftpd // 设置 PAM 认证服务配置文件名称,文件存放在 / etc/pam.d / 目录
userlist_enable=YES // 用户列表中的用户是否允许登录 FTP 服务器, 默认是不允许
tcp_wrappers=YES // 使用 tcp_wrqppers 作为主机访问控制方式 1) 第一种方法就是使用系统用户登录 FTP,但是也是比较危险的,先测试系统用户登录 FTP,在 Linux 系统上创建 useradd test 用户,并为其设置名,然后在 xp 客户端打开我的电脑资源里面访问 ftp://192.168.33.10,输入用户名和密码即可访问,进行创建和删除操作。
2) 第二种方法比较安全,配置相对复杂一点,就是使用 vsftpd 虚拟用户登录 FTP 服务器进行常见的操作。
? 首先安装 FTP 虚拟用户需要用到的软件及认证模块
yum install pam* db4* --skip-broken –y
创建并生成 vsftpd 数据库文件 vi /etc/vsftpd/ftpusers.txt,内容如下:
第一行为 FTP 虚拟用户,登录用户名,第二行为密码,第三行为用户名,依次类推。
wugk
1
wugk1
1
? 生成数据库文件命令:
db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
chmod 700 /etc/vsftpd/vsftpd_login.db
? 配置 PAM 验证文件:
在配置文件 vi /etc/pam.d/vsftpd 行首加入如下两行认证语句:(如果是 32 位,lib64 需改成 lib,如果 RedHat,加入的语句不一样,需注意)
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
? 创建 vsftpd 映射本地用户:
所有的 FTP 虚拟用户需要使用一个系统用户,这个系统用户不需要密码,也不需要登录。主要用来做虚拟用户映射使用。
useradd –d /home/ftpuser –s /sbin/nologin ftpuser
? 修改完整版配置文件内容如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
listen=YESguest_enable=YES
guest_username=ftpuser
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES 保存重启,/etc/init.d/vsftpd restart 即可使用虚拟用户登录,这时候所有的虚拟用户共同使用 / home/ftpuser 目录上传下载,如果想使用自己独立的目录,可以在 / etc/vsftpd/vsftpd_user_conf 目录创建各自的配置文件,如给 wugk 创建独立的配置文件:
vi /etc/vsftpd/vsftpd_user_conf/wugk ,内容如下,建立自己的 FTP 目录。
local_root=/home/ftpsite/wugk
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
重启,使用客户端登录 FTP,测试即可。关于 FTP 讲解就到此,windows 还可以使用 Server-U 来搭建 FTP 服务器端,有兴趣的童鞋可以研究一下。
? FTP 主被动模式
FTP 主动模式:客户端从一个任意的非特权端口 N(N>1024)连接到 FTP 服务器的 port 21 命令端口。然后客户端开始监听端口 N+1,并发送 FTP 命令 "port N+1" 到 FTP 服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
FTP 被动模式:客户端从一个任意的非特权端口 N(N>1024)连接到 FTP 服务器的 port 21 命令端口。然后客户端开始监听端口 N+1,同时客户端提交 PASV 命令。服务器会开启一个任意的非特权端口(P >1024),并发送 PORT P 命令给客户端。然后客户端发起从本地端口 N+1 到服务器的端口 P 的连接用来传送数据。
来源: http://www.bubuko.com/infodetail-2440201.html