首页 > 代码库 > 马哥2016全新Linux+Python高端运维班-Linux服务 DNS,httpd,加密通讯,vsftp,NFS,samba服务练习
马哥2016全新Linux+Python高端运维班-Linux服务 DNS,httpd,加密通讯,vsftp,NFS,samba服务练习
本周作业内容:
1、详细描述一次加密通讯的过程,结合图示最佳。
一次加密通讯的过程:
首先Bob用单向加密的方法提取数据的特征码,用自己的私钥加密这段特征码,并附加到数据的后面。
Bob用对称加密算法把数据及特征码整个进行加密。
Bob用接收方的公钥加密对称密钥并附加到数据后面。
Alice用私钥解密对称密钥。
Alice用对称密钥解密出数据及加密的特征码。
Alice用发送方的公钥解密特征码,并用相同的算法算出数据的特征码,比较两个特征码是否一致,若一致即可获得Bob的数据。
如图所示:
单向加密:只能加密,不能解密,提取数据指纹(特征码),来保证数据的完整性,单向加密的协议有MD5,SHA等
非对称加密:公钥和私钥成对出现,私钥必须本机器保存,用公钥加密的数据,只能使用与之配对儿的私钥解密;反之亦然,数字签名是私钥加密特征码,实现对称秘钥交换
对称加密:加密和解密使用同样的秘钥,实现数据加密,产生对称秘钥。
2、描述创建私有CA的过程,以及为客户端发来的证书请求进行颁发证书。
(1) 创建所需要的文件
cd /etc/pki/CA # touch index.txt # echo 01 > serial # # (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)##生成私钥
(2) CA自签证书
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem -new: 生成新证书签署请求; -x509: 专用于CA生成自签证书; -key: 生成请求时用到的私钥文件; -days n:证书的有效期限; -out /PATH/TO/SOMECERTFILE: 证书的保存路径;
(3) 发证
(a) 用到证书的主机生成证书请求;
# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) # openssl req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
(b) 把请求文件传输给CA;
scp ./httpd.csr root@192.168.137.30:/etc/pki/CA/certs/
(c) CA签署证书,并将证书发还给请求者;
# openssl ca -in /etc/pki/CA/certs/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365 # cat index.txt serial V171021154656Z01unknown/C=CN/ST=Beijing/O=Magedu/OU=ops/CN=www.magedu.com/emailAddress=webadmin@magedu.com
(d) ls /etc/pki/CA/certs ##到CA服务器上可以看到证书的httpd.crt
scp ./httpd.crt root@192.168.137.32:/etc/httpd/ssl/ ls /etc/httpd/ssl ##到服务端/etc/httpd/ssl目录下查看证书。
3、搭建一套DNS服务器,负责解析magedu.com域名(自行设定主机名及IP)
(1)、能够对一些主机名进行正向解析和逆向解析;
(2)、对子域cdn.magedu.com进行子域授权,子域负责解析对应子域中的主机名;
(3)、为了保证DNS服务系统的高可用性,请设计一套方案,并写出详细的实施过程
使用node2(192.168.137.32)主机配置正向反向解析
[root@node2 ~]# yum -y install bind 常用的配置文件有: /etc/named.conf#主配置文件 /etc/named.rfc1912.zones#区域配置文件 /etc/rc.d/init.d/named#启动脚本 /var/named#存放区域解析文件 [root@node2 ~]# vim /etc/named.conf options { listen-on port 53 { any; }; ##表示监听本地IP的53端口,允许所用地址访问本地53端口;这行也可以注释掉,等同于any。 //listen-on-v6 port 53 { ::1; }; directory "/var/named"; ##区域解析文件路径 dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; // allow-query { any; }; ##允许所有地址查询,也可注释掉。 recursion yes; ##是否递归,如果是no那么这台DNS服务器将不会递归解析,yes或注释掉不写,表是允许,默认是允许的 // dnssec-enable yes; // dnssec-validation yes; /* Path to ISC DLV key */ // bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic"; }; include "/etc/named.rfc1912.zones"; ##表示加载区域配置文件。
正向与反向区域配置
[root@node2 ~]# vim /etc/named.rfc1912.zones 文件末行添加: zone "magedu.com" IN{ type master; file "magedu.com.zone"; }; zone "137.168.192.in-addr.arpa" IN { type master; file "137.168.192.zone"; };
新建正向解析的zone文件
[root@node2 ~]# vim /var/named/magedu.com.zone $TTL 86400 $ORIGIN magedu.com. @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016092101 1H 5M 7D 1D ) IN NS ns1 IN NS ns2 IN MX 10 mx1 IN MX 20 mx2 ns1 IN A 192.168.137.32 ns2 IN A 192.168.137.33 mx1 IN A 192.168.137.32 mx2 IN A 192.168.137.33 www IN A 192.168.137.32 www IN A 192.168.137.33 ftp IN CNAME www
新建反向解析zone文件
[root@node2 ~]# vim /var/named/137.168.192.zone $TTL 86400 $ORIGIN 137.168.192.in-addr.arpa. @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016092101 1H 5M 7D 1D ) IN NS ns1.magedu.com. IN NS ns2.magedu.com. 32 IN PTR ns1.magedu.com. 33 IN PTR ns2.magedu.com. 34 IN PTR mx1.magedu.com. 35 IN PTR mx2.magedu.com. 32 IN PTR www.magedu.com. 33 IN PTR www.magedu.com.
检查语法错误,重启DNS服务
[root@node2 ~]# named-checkconf ##检查配置文件 [root@node2 ~]# named-checkzone "magedu.com" /var/named/magedu.com.zone ##检查区域解析文件 [root@node2 ~]# named-checkzone "137.168.192.in-addr.arpa." /var/named/137.168.192.zone [root@node2 ~]# service named restart
正向解析测试:
[root@node2 ~]# dig -t A www.magedu.com @192.168.137.32 ##@192.168.137.32表示通过32这台主机解析,-t:指明type,A表示A记录。 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t A www.magedu.com @192.168.137.32 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58146 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.magedu.com.INA ;; ANSWER SECTION: ##应答段 www.magedu.com.86400INA192.168.137.33 www.magedu.com.86400INA192.168.137.32 ;; AUTHORITY SECTION: ##权威段 magedu.com.86400INNSns2.magedu.com. magedu.com.86400INNSns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com.86400INA192.168.137.32 ns2.magedu.com.86400INA192.168.137.33 ;; Query time: 0 msec ;; SERVER: 192.168.137.32#53(192.168.137.32) ##DNS服务器,以及解析的客户端。 ;; WHEN: Sat Sep 24 11:34:14 2016 ;; MSG SIZE rcvd: 132
反向解析测试:
[root@node2 ~]# dig -x 192.168.137.32 @192.168.137.32 ##-x:表示反向解析 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -x 192.168.137.32 @192.168.137.32 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52944 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;32.137.168.192.in-addr.arpa.INPTR ;; ANSWER SECTION: 32.137.168.192.in-addr.arpa. 86400 INPTRwww.magedu.com. 32.137.168.192.in-addr.arpa. 86400 INPTRns1.magedu.com. ;; AUTHORITY SECTION: 137.168.192.in-addr.arpa. 86400INNSns1.magedu.com. 137.168.192.in-addr.arpa. 86400INNSns2.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com.86400INA192.168.137.32 ns2.magedu.com.86400INA192.168.137.33 ;; Query time: 0 msec ;; SERVER: 192.168.137.32#53(192.168.137.32) ;; WHEN: Sat Sep 24 11:41:13 2016 ;; MSG SIZE rcvd: 155
主从同步:
##从DNS服务器主配置和node2(192.168.137.33)相同 [root@node3 ~]# vim /etc/named.rfc1912.zones zone "magedu.com" IN { type slave; masters { 192.168.137.32; }; ##指定主DNS服务器为32(node2) file "slaves/magedu.com.zone"; allow-transfer { none; }; }; zone "137.168.192.in-addr.arpa" IN { type slave; masters { 192.168.137.32; }; file "slaves/137.168.192.zone"; allow-transfer { none; }; };
重启或reload 从DNS服务器
[root@node3 ~]# service named reload | restart 服务启动后,会在/var/named/slaves/自动添加magedu.com.zone和137.168.192.zone文件 [root@node3 ~]# ls /var/named/slaves/ 137.168.192.zone magedu.com.zone
测试从DNS服务器
[root@node3 ~]# dig -t A www.magedu.com @192.168.137.33 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t A www.magedu.com @192.168.137.33 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8634 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2 ;; QUESTION SECTION: ;www.magedu.com.INA ;; ANSWER SECTION: www.magedu.com.86400INA192.168.137.33 www.magedu.com.86400INA192.168.137.32 ;; AUTHORITY SECTION: magedu.com.86400INNSns2.magedu.com. magedu.com.86400INNSns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com.86400INA192.168.137.32 ns2.magedu.com.86400INA192.168.137.33 ;; Query time: 0 msec ;; SERVER: 192.168.137.33#53(192.168.137.33) ;; WHEN: Mon Oct 24 22:49:53 2016 ;; MSG SIZE rcvd: 132
子域授权
##重新配置一台主机:liu,IP:192.168.137.30 在父域区域解析文件中添加 [root@node2 ~]# vim /var/named/magedu.com.zone liu IN NS ns1.liu.magedu.com. ns1.liu IN A 192.168.137.30 同样方式安装bind配置主配置文件 在区域配置文件末行添加: [root@liu ~]# vim /etc/named.rfc1912.zones zone "liu.magedu.com" IN { type master; file "liu.magedu.com.zone"; }; zone "magedu.com" IN { type forward; forward only; ##区域转发 forwarders { 192.168.137.32; }; ##尽转发32这台主机 };
新建区域解析库文件:
[root@liu ~]# vim /var/named/liu.magedu.com.zone $TTL 86400 @ IN SOA ns.liu.magedu.com. admin.liu.magedu.com. ( 2016092201 2H 5M 7D 12H ) IN NS ns.liu.magedu.com. IN MX 10 mx1.liu.magedu.com. IN A 192.168.137.30 ns IN A 192.168.137.30 mx1 IN A 192.168.137.30 www IN A 192.168.137.30
测试子域授权:
##子域测试 [root@liu ~]# dig @192.168.137.30 www.liu.magedu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> @192.168.137.30 www.liu.magedu.com ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20681 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.liu.magedu.com.INA ;; ANSWER SECTION: www.liu.magedu.com.86400INA192.168.137.30 ;; AUTHORITY SECTION: liu.magedu.com.86400INNSns.liu.magedu.com. ;; ADDITIONAL SECTION: ns.liu.magedu.com.86400INA192.168.137.30 ;; Query time: 30 msec ;; SERVER: 192.168.137.30#53(192.168.137.30) ;; WHEN: Sat Oct 22 09:26:43 2016 ;; MSG SIZE rcvd: 85
父域测试:
[root@node2 ~]# dig -t www.magedu.com @192.168.137.30 ;; Warning, ignoring invalid type www.magedu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> -t www.magedu.com @192.168.137.30 ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63122 ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;.INNS ;; ANSWER SECTION: .511320INNSd.root-servers.net. .511320INNSl.root-servers.net. .511320INNSg.root-servers.net. .511320INNSk.root-servers.net. .511320INNSh.root-servers.net. .511320INNSf.root-servers.net. .511320INNSi.root-servers.net. .511320INNSb.root-servers.net. .511320INNSc.root-servers.net. .511320INNSj.root-servers.net. .511320INNSe.root-servers.net. .511320INNSa.root-servers.net. .511320INNSm.root-servers.net. ;; Query time: 1 msec ;; SERVER: 192.168.137.30#53(192.168.137.30) ;; WHEN: Sat Sep 24 12:18:09 2016 ;; MSG SIZE rcvd: 228
4、请描述一次完整的http请求处理过程;
1)客户端和服务器端建立连接。服务器接收或者拒绝请求。
2)服务器端接收客户端请求。接收来自于网络的请求报文中对某资源的一次请求。对请求的处理响应,可分为单进程(启动一个进程处理请求,一次只处理一个)和多进程(并行启动多个进程,每个进程处理一个请求)。
3)服务器端处理客户端请求。对请求报文进行解析,并获取请求的资源和请求方法等相关信息。
4)服务器访问资源。web服务器负责向请求者提供对方请求的静态资源,或动态运行后生成的资源。
5)服务器构建响应报文。
6)服务器发送响应报文
7)服务器端记录日志
5、httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。
MPM:Multipath Processing Modules##多路处理模块 prefork:多进程模型,每个进程响应一个请求; 一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;最大不会超过1024个;使用于对系统要求稳定请求不是很高的环境。 worker:多线程模型,每个线程响应一个请求; 一个主进程:生成多个子进程,每个子进程负责生个多个线程,每个线程响应一个请求;工人的模式,支持多线程和多进程,用于海量请求相应的环境。 m进程,n线程:m*n event:事件驱动模型,每个线程响应n个请求; 一个主进程:生成m个子进程,每个进程直接n个请求; m*n
6、建立httpd服务器(基于编译的方式进行),要求:
提供两个基于名称的虚拟主机:
(a)www1.stuX.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1.err,访问日志为/var/log/httpd/www1.access;
(b)www2.stuX.com,页面文件目录为/web/vhosts/www2;错误日志为/var/log/httpd/www2.err,访问日志为/var/log/httpd/www2.access;
(c)为两个虚拟主机建立各自的主页文件index.html,内容分别为其对应的主机名;
(d)通过www1.stuX.com/server-status输出httpd工作状态相关信息,且只允许提供帐号密码才能访问(status:status);
基于编译的方式搭建LAMP环境
可见本人博客:
http://ljohn.blog.51cto.com/11932290/1863283
配置基于名称的虚拟主机
首先禁用中心主机:
# vim /etc/httpd24/httpd.conf #DocumentRoot "/usr/local/apache/htdocs" Include /etc/httpd24/extra/httpd-vhosts.conf ##启用网页压缩这个模块。
配置虚拟主机
# vim /etc/httpd24/extra/httpd-vhosts.conf <VirtualHost 192.168.137.30:80> ServerName www1.stuX.com DocumentRoot "/web/vhosts/www1" ErrorLog "/var/log/httpd/www1.err" CustomLog "/var/log/httpd/www1.access" common </VirtualHost> <Directory "/web/vhosts/www1"> Options none Require all granted </Directory> <VirtualHost 192.168.137.30:80> DocumentRoot "/web/vhosts/www2" ServerName www2.stuX.com ErrorLog "/var/log/httpd/www2.err" CustomLog "/var/log/httpd/www2.access" common </VirtualHost>
创建所需要的文件:
# mkdir -p /web/vhost/{www1,www2} && echo "www1.site" > /web/vhost/www1/index.html && echo "www2.site" /web/vhost/www2/index.html #service httpd24 restart
测试:
[root@liu www2]# curl www1.stuX.com www1.site [root@liu www2]# curl www2.stuX.com www2.site
修改第一个虚拟主机
[root@liu ~]# htpasswd -m -c /usr/local/apache/.htpasswd admin ##创建口令admin/admin [root@liu ~]# vim /etc/httpd24/extra/httpd-vhosts.conf ##修改www1的配置 <VirtualHost 192.168.137.30:80> DocumentRoot "/web/vhosts/www1/" ServerName www1.stuX.com ErrorLog "/var/log/httpd/www1.err" CustomLog "/var/log/httpd/www1.access" common <Directory "/web/vhosts/www1/"> AllowOverride None Options None Require all granted </Directory> <Location /server-status> SetHandler server-status AuthType Basic AuthName "Only for Admin" AuthUserFile "/usr/local/apache/.htpasswd" ##密码存放位置 Require valid-user </Location> </VirtualHost>
测试:
[root@liu ~]# curl www1.stuX.com/server-status 或者打开浏览器输入:www1.stuX.com/server-status 输入账号密码即可查看服务器的状态。
如图:
7、为第6题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;
(1)要求使用证书认证,证书中要求使用的国家(CN)、州(HA)、城市(ZZ)和组织(MageEdu);
(2)设置部门为Ops,主机名为www2.stuX.com,邮件为admin@stuX.com;
自建CA
[root@liu CA]# cd /etc/pki/CA/ [root@liu CA]# touch index.txt serial [root@liu CA]# echo 01 > serial [root@liu CA]# (umask 007; openssl genrsa -out ./private/cakey.pem 1024) [root@liu CA]# openssl req -new -x509 -key ./private/cakey.pem -days 7300 -out ./cacert.pem ##自签证书
httpd生成私钥,创建证书签署请求,然后由CA签署
[root@liu CA]# mkdir -pv /usr/local/apache/ssl [root@liu CA]# (umask 077; openssl genrsa -out /usr/local/apache/ssl/http.key 1024) ##创建私钥 [root@liu CA]# openssl req -new -key /usr/local/apache/ssl/http.key -out /usr/local/apache/ssl/http.csr [root@liu CA]# openssl ca -in /usr/local/apache/ssl/http.csr -out /usr/local/apache/ssl/http.crt -days 3600 ##CA颁发证书
配置文件修改
修改httpd.conf: # vim /etc/httpd24/httpd.conf LoadModule ssl_module modules/mod_ssl.so ##开启ssl模块,默认是注释掉的 Include /etc/httpd24/extra/httpd-ssl.conf ##导入ssl配置文件,默认是注释掉的。 修改ssl模块配置文件 # vim /etc/httpd24/extra/httpd-ssl.conf <VirtualHost *:443> # General setup for the virtual host DocumentRoot "/web/vhosts/www2/" ServerName www2.stuX.com ServerAdmin you@example.com ErrorLog "/var/log/httpd/www2.err" CustomLog "/var/log/httpd/www2.access" common SSLCertificateFile "/usr/local/apache/ssl/http.crt" SSLCertificateKeyFile "/usr/local/apache/ssl/http.key"
重启或reload
# service httpd24 restart
浏览器访问:https://www2.stuX.com
如图:
8、建立samba共享,共享目录为/data,要求:(描述完整的过程)
1)共享名为shared,工作组为magedu;
2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;
3)添加samba用户gentoo,centos和ubuntu,密码均为“mageedu”;
4)此samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式访问;
5)此samba共享服务仅允许来自于172.16.0.0/16网络的主机访问;
安装samba
[root@node2 ~]# yum install -y samba samba-client [root@node2 ~]# rpm -ql samba | less /etc/pam.d/samba #配置文件所在目录 /etc/rc.d/init.d/nmb /etc/rc.d/init.d/smb #服务脚本,nmb和smb /etc/samba/smb.conf ##主配置文件
创建组,用户及samba用户:
[root@node2 ~]# useradd -G develop gentoo [root@node2 ~]# useradd -G develop centos [root@node2 ~]# useradd ubantu [root@node2 ~]# echo ‘gentoo‘ | passwd --stdin gentoo 更改用户 gentoo 的密码 。 passwd: 所有的身份验证令牌已经成功更新。 [root@node2 ~]# echo ‘centos‘ | passwd --stdin centos 更改用户 centos 的密码 。 passwd: 所有的身份验证令牌已经成功更新。 [root@node2 ~]# echo ‘ubantu‘ | passwd --stdin ubantu 更改用户 ubantu 的密码 。 passwd: 所有的身份验证令牌已经成功更新。 [root@node2 ~]# smbpasswd -a gentoo New SMB password: Retype new SMB password: Added user gentoo. [root@node2 ~]# smbpasswd -a centos New SMB password: Retype new SMB password: Added user centos. [root@node2 ~]# smbpasswd -a ubantu New SMB password: Retype new SMB password: Added user ubantu.
创建samba目录并赋权
[root@node2 ~]# mkdir /data [root@node2 ~]# ls -ld /data/ drwxr-xr-x. 2 root root 4096 10月 27 12:00 /data/ [root@node2 ~]# chmod g+w /data/ [root@node2 ~]# ls -ld /data/ drwxrwxr-x. 2 root root 4096 10月 27 12:00 /data/ [root@node2 ~]# chown :develop /data/ [root@node2 ~]# ls -ld /data/ drwxrwxr-x. 2 root develop 4096 10月 27 12:00 /data/
修改主配置文件:
# vim /etc/samba/smb.conf [global] workgroup = MAGEDU hosts allow = 192.168. [shared] comment = My Shared Testing.. path = /data guest ok = yes valid users = gentoo,centos,ubantu write list = @develop writable = yes
启动samba服务:
[root@node2 ~]# service nmb start;service smb start 启动 NMB 服务: [确定] 启动 SMB 服务: [确定]
客户端测试:
[root@node2 ~]# smbclient -L 192.168.137.30 -U gentoo ##获取samba共享信息
Enter gentoo‘s password:
Domain=[MAGEDU] OS=[Unix] Server=[Samba 3.6.9-164.el6]
Sharename Type Comment
--------- ---- -------
shared Disk My Shared Testing..
IPC$ IPC IPC Service (Samba Server Version 3.6.9-164.el6)
gentoo Disk Home Directories
Domain=[MAGEDU] OS=[Unix] Server=[Samba 3.6.9-164.el6]
Server Comment
--------- -------
NODE2 Samba Server Version 3.6.9-164.el6
Workgroup Master
--------- -------
MAGEDU NODE2
[root@node2 ~]# smbclient //192.168.137.30/shared -U centos ##通过smbclient访问共享存储。
Enter centos‘s password:
Domain=[MAGEDU] OS=[Unix] Server=[Samba 3.6.9-164.el6]
smb: \>
Windows访问共享存储:
如图所示:
9、搭建一套文件vsftp文件共享服务,共享目录为/ftproot,要求:(描述完整的过程)
1)基于虚拟用户的访问形式;
2)匿名用户只允许下载,不允许上传;
3)禁锢所有的用户于其家目录当中;
4)限制最大并发连接数为200:;
5)匿名用户的最大传输速率512KB/s
6)虚拟用户的账号存储在mysql数据库当中。
7)数据库通过NFS进行共享。
部署前准工作
两台机器: node1:192.168.137.31 在这服务器上安装nfs服务,设置共享目录:nfsahre,为数据库提供共享目录。 [root@node1 ~]# yum -y install nfs-utils [root@node1 ~]# mkdir /nfshare 创建mysql用户,设置 /nfshare 的所属主,所属组为mysql [root@node1 ~]# groupadd –g 306 mysql [root@node1 ~]# useradd –g 306 –u 306 –s /sbin/nologin –M mysql [root@node1 ~]# chown -R mysql.mysql /nfshare 配置nfs的配置文件vim /etc/exports /nfshare 192.168.137.32/255.255.255.0(no_root_squash,rw) 启动nfs:service nfs start node2:192.168.137.30 在这台机器上安装mysql,创建目录/mydata 用来挂载nfs共享目录。 [root@node2 ~]# mkdir /mydata 挂载nfs共享目录: [root@node2 ~]# vim /etc/fstab 添加:192.168.137.31:/nfshare /mydata nfs defaults 0 0 [root@node2 ~]# mount -a
创建mysql用户,设置/mydata 所属主,及所属组。
[root@node2 ~]# groupadd –g 306 mysql [root@node2 ~]# useradd –g 306 –u 306 –s /sbin/nologin –M mysql [root@node2 ~]# chown -R mysql:mysql /mydata
安装数据库,vsftpd,pam_mysql
# yum -y vsftpd pam_mysql ##pam_mysql要安装epelyum源 [root@node2 ~]# ls /lib/security/pam_mysql.so /lib/security/pam_mysql.so ##查看lib中是否有这个pam_mysql.so 库文件 编译安装mysql数据库 下载mysql-5.5的二进制的源码包。 # tar xf mysql-5.5.33-linux2.6-i686.tar.gz -C /usr/local # cd /usr/local/ # ln -sv mysql-5.5.33-linux2.6-i686 mysql # cd mysql # chown -R mysql:mysql . # scripts/mysql_install_db --user=mysql --datadir=/mydata/data # chown -R root . 为mysql提供主配置文件: # cd /usr/local/mysql # cp support-files/my-large.cnf /etc/my.cnf # mkdir -pv /mydata/data 并修改此文件中thread_concurrency的值为你的CPU个数乘以2 thread_concurrency = 2 指定mysql数据文件的存放位置: datadir = /mydata/data 为mysql提供sysv服务脚本: # cd /usr/local/mysql # cp support-files/mysql.server /etc/rc.d/init.d/mysqld # chmod +x /etc/rc.d/init.d/mysqld 添加至服务列表: # chkconfig --add mysqld 启动数据库:service mysqld start
配置数据库,和vsftpd
创建数据库:vsftpd,用户:vsftp 表名:users 并插入两条(虚拟用户)数据 mysql> create database vsftpd; mysql> grant select on vsftpd.* to vsftp@192.168.137.30 identified by ‘magedu‘; mysql> use vsftpd mysql> create table users (id int AUTO_INCREMENT NOT NULL,name char(20) binary NOT NULL,password char(48) binary NOT NULL,primary key(id)); mysql> insert into users(name,password) values(‘magedu1‘,password(‘magedu‘)),(‘magedu2‘,password(‘magedu‘)); mysql> select * from users; mysql> flush privileges;
配置vsftp
1.建立pam认证所需文件 #vi /etc/pam.d/vsftpd.mysql 添加如下两行 auth required /lib/security/pam_mysql.so user=vsftp passwd=magedu host=192.168.137.30 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 ##用于用户认证 account required /lib/security/pam_mysql.so user=vsftp passwd=magedu host=192.168.137.30 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 ##用于检查用户时效性 2.修改vsftpd的配置文件,使其适应mysql认证 建立虚拟用户映射的系统用户及对应的目录 [root@node2 ~]# useradd -s /sbin/nologin -d /var/ftproot vuser [root@node2 ~]# chmod go+rx /var/ftproot/ 请确保/etc/vsftpd.conf中已经启用了以下选项 anonymous_enable=YES local_enable=YES write_enable=YES anon_upload_enable=NO anon_mkdir_write_enable=NO chroot_local_user=YES ##禁锢所有本地用户于家目录下 pam_service_name=vsftpd.mysql ##认证文件 max_clients=200 ##并发连接数 anon_max_rate=524288 ##单位是字节每秒,512KB/s 512*1024
启动vsftpd,并测试
service vsftpd start 到node1上安装ftp客户端工具 # yum install -y ftp lftp # ftp 192.168.137.30 验证magedu1,magedu2两个用户
本文出自 “Ljohn” 博客,请务必保留此出处http://ljohn.blog.51cto.com/11932290/1866905
马哥2016全新Linux+Python高端运维班-Linux服务 DNS,httpd,加密通讯,vsftp,NFS,samba服务练习