1、详细描述一次加密通讯的过程,结合图示最佳。

答:

单向加密解密过程:   

发送方:

1)发送方用对称加密的方法提取文件的特征码,用自己的私钥加密这段特征码,并附加在文件后面(还是明文的);

2)用一个对称密钥,借助于对称加密算法把整个文件加密;

3)再用对方的公钥加密对称密钥,附加在文件后面;

                           

接收方:

1)接收方先用自己的私钥解密出对称密钥;(能解密说明的确是用自己的公钥加密的;)

2)把解密出来的密码,借助于解密算法,就能解密出文件数据;

3)得到文件的明文数据和加密的特征码;

4)用发送方的公钥去解密特征码;(能解密说明对方的身份得到认证)

5)再用同样的加密算法计算文件数据的特征码;比较两个特征码是否一样;如果是一样的说明文件的数据完整性得到认证;


2、描述创建私有CA的过程,以及为客户端发来的证书请求进行办法证书。

答:openssl的配置文件:/etc/pki/tls/openssl.cnf

1)创建所需要的文件:

[root@Server ~]# cd /etc/pki/CA
[root@Server CA]# touch index.txt
[root@Server CA]# echo 01>serial
[root@Server CA]# ll

2CA自签证书

[root@Server CA]# umask 077; openssl genrsa -out private/cakey.pem 2048

[root@Server CA]# ls -l private/

[root@Server CA]# openssl req -new -x509 -key private/cakey.pem -days 7300 -out cacert.pem

说明:

  -new:生成新证书签署请求;

  -x509:专用于CA生成自签证书;

  -key:生成请求时用到的私有文件;

  -days # :证书的有效期限;

  -out/PATH/TO/SOMECERTFILE :证书的保存路径;

3)发证

a)用到证书的主机生成证书请求:
[root@Client ~]# mkdir /etc/httpd/ssl
[root@Client ~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
[root@Client ~]# cd /etc/httpd/ssl/
root@Client ssl]# openssl req -new -key httpd.key -days 365 -out httpd.csr
b)把请求文件传递给CA:
[root@Client ssl]# scp httpd.csr 10.11.0.240:/tmp/
3)CA签署证书,并将证书发还给请求者:
[root@Server CA]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
[root@Server CA]# scp /etc/pki/CA/certs/httpd.crt 10.11.0.242:/etc/httpd/ssl/


3、搭建一套DNS服务器,负责解析magedu.com域名(自行设定主机名及IP

(1)、能够对一些主机名进行正向解析和逆向解析;

(2)、对子域cdn.magedu.com进行子域授权,子域负责解析对应子域中的主机名;

(3)、为了保证DNS服务系统的高可用性,请设计一套方案,并写出详细的实施过程

答:

了解需用到的配置文件存放位置:

服务脚本:/etc/rc.d/init.d/named
主配置文件:/etc/named.conf , /etc/named.rfc1912.zones, /etc/rndc.key(域共享密钥);解析库文件:/var/named/ZONE_NAME.ZONE

1)配置主DNS服务器,IP10.11.0.240

1)先安装bind

[root@ilinux~]# yum install -y bind
[root@ilinux~]# rpm -q bind
bind-9.8.2-0.47.rc1.el6_8.2.x86_64

2)修改主配置文件/etc/named.conf

[root@ilinux~]# cp /etc/named.conf{,.bak}
[root@ilinux~]# vim /etc/named.conf
options{
        listen-on port 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;
 
        dnssec-enable no;
        dnssec-validation no;
 
        /* Path to ISC DLV key */
//      bindkeys-file"/etc/named.iscdlv.key";
 
//      managed-keys-directory"/var/named/dynamic";
};
 
logging {
        channel default_debug{
                file"data/named.run";
                severitydynamic;
        };
};
 
zone "." IN {
        type hint;
        file"named.ca";
};
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

3)在主配置文件/etc/named.rfc1912.zones中定义区域

[root@ilinux ~]# vim/etc/named.rfc1912.zones
#定义正向区域
zone"magedu.com" IN {
        type master;
        file "magedu.com.zone";
};
#定义反向区域
zone"0.11.10.in-addr.arpa" IN {
        type master;
        file "0.11.10.zone";
};

4)创建区域解析库文件

#正向区域解析库文件
[root@ilinux named]# vim magedu.com.zone
$TTL 86400
$ORIGIN magedu.com.
@     IN      SOA    ns1.magedu.com. admin.magedu.com. (
                   201601      ; serial
                   1D      ; refresh
                   1H      ; retry
                   1W      ; expire
                   3H)       ; minimum
      IN      NS      ns1
      IN      NS      ns2
      IN      MX 10      mx1
      IN      MX 20      mx2
ns1     IN      A      10.11.0.240
ns2     IN      A      10.11.0.243
mx1     IN      A      10.11.0.240
mx2     IN      A      10.11.0.243
www     IN      A      10.11.0.240
www     IN      A      10.11.0.243
web     IN      CNAME      www
 
#反向区域解析库文件
[root@ilinux named]# vim 0.11.10.zone
$TTL 86400
$ORIGIN 0.11.10.in-addr.arpa.
@      IN      SOA    ns1.magedu.com. admin.magedu.com. (
                  201601      ; serial
                  1D      ; refresh
                  1H      ; retry
                  1W      ; expire
                  3H)       ; minimum
      IN      NS     ns1.magedu.com.
       IN      NS     ns2.magedu.com.
240     IN      PTR    ns1.magedu.com.
243     IN      PTR    ns2.magedu.com.
240     IN      PTR    xm1.magedu.com.
243     IN      PTR    xm2.magedu.com.
240     IN      PTR    www.magedu.com.
243     IN      PTR    www.magedu.com.

5)检查是否有语法错误

#检查主配置文件
[root@ilinux named]# named-checkconf
 
#检查区域解析库文件
[root@ilinux named]# named-checkzone "magedu.com" magedu.com.zone 
zone magedu.com/IN: loaded serial 201601
OK
[root@ilinux named]# named-checkzone "0.11.10.in-addr.arpa" 0.11.10.zone              
zone 0.11.10.in-addr.arpa/IN: loaded serial 201601
OK

6)配置后的操作及检查

[root@ilinux named]# chown :named magedu.com.zone
[root@ilinux named]# chown :named 0.11.10.zone
[root@ilinux named]# service named restart
[root@ilinux named]# ps aux | grep named
named   27251  0.0  2.3 159808 11716 ?     Ssl 19:16   0:00 /usr/sbin/named -unamed
root    27261  0.0  0.1 103252  832 pts/0   S+  19:16  0:00 grep named
[root@ilinux named]# ss -tnl
State     Recv-Q Send-Q     LocalAddress:Port       PeerAddress:Port
LISTEN     0    3       10.11.0.240:53            *:*    
LISTEN     0    3        127.0.0.1:53             *:* 
[root@ilinux named]# rndc status             #查看服务器的工作状态;
version:9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6_8.2
CPUs found: 1
worker threads: 1
number of zones: 21
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running

7)区域解析测试

#正向解析
[root@ilinux named]# host -tNS magedu.com 10.11.0.240  
[root@ilinux named]# dig -tNS magedu.com @10.11.0.240
 
[root@ilinux named]# host -tA www.magedu.com 10.11.0.240 
[root@ilinux named]# dig -t Aweb.magedu.com @10.11.0.240  
 
#反向解析
[root@ilinux named]# dig -x10.11.0.240 @10.11.0.240


2)配置从DNS服务器,IP10.11.0.243

1)先安装bind

[root@ilinux~]# yum install -y bind
[root@ilinux~]# rpm -q bind
bind-9.8.2-0.47.rc1.el6_8.2.x86_64

2)修改主配置文件/etc/named.conf

 修改的内容与主DNS服务器的一样。 

3)在主配置文件/etc/named.rfc1912.zones中定义区域

[root@ilinux ~]# vim/etc/named.rfc1912.zones
#定义正向区域
zone"magedu.com" IN {
        type slave;
        masters { 10.11.0.240; };
        file "slaves/magedu.com.zone";
};
 
#定义反向区域
zone"0.11.10.in-addr.arpa" IN {
        type slave;
        masters { 10.11.0.240; };
        file "slaves/0.11.10.zone";
};

4)测试添加的区域和区域数据文件是否有错误

[root@ilinux ~]# service named configtest


5)重载named

[root@ilinux named]# rndc reload
server reload successful

 

6)检查区域文件是否同步到从DNS服务器

[root@ilinux ~]# ls /var/named/slaves/
0.11.10.zone  magedu.com.zone
注意:
若发现无法同步,请检查selinux和iptables是否禁用。
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# setenforce 0
# service iptables stop或iptables -F

 

7)测试从DNS服务器解析

[root@ilinux ~]# dig -t A www.magedu.com @10.11.0.243
[root@ilinux ~]# host -t NS magedu.com 10.11.0.240
[root@ilinux ~]# host -t PTR 10.11.0.240 10.11.0.243


3)配置子域服务器,IP10.11.0.244

1)新增一台服务器作为子域,IP10.11.0.244。并安装好bind-9.8.2-0.47.rc1.el6_8.2.x86_64

2)在主DNS服务器(父域)的区域解析库文件中添加NSA记录。

[root@ilinux ~]# vim/var/named/magedu.com.zone
       cdn     IN     NS      ns1.cdn.magedu.com.
       ns1.cdn    IN     A       10.11.0.244


      

3)在子域的配置文件中添加区域

[root@ilinux ~]# vim /etc/named.rfc1912.zones
zone"cdn.magedu.com" IN {
        type master;
        file "cdn.magedu.com.zone";
};
 
#配置主域转发
zone"magedu.com" IN {
        type forward;
        forward first;
        forwarders { 10.11.0.240; };
};

4)配置子域服务器的区域文件

正向区域文件:
[root@ilinuxnamed]# vim cdn.magedu.com.zone
$TTL86400
$ORIGINcdn.magedu.com.
@    IN     SOA     ns1.cdn.magedu.com. admin.cdn.magedu.com.(
                201601      ; serial
                1D      ; refresh
                1H      ; retry 
                1W      ; expire
                3H )      ; minimum
    IN     NS      ns1
ns1   IN     A      10.11.0.244
www   IN     A      10.11.0.244

5)设置属组,检查配置是否正确

[root@ilinuxnamed]# chown :named cdn.magedu.com.zone
[root@ilinux~]# named-checkconf 
[root@ilinux ~]# named-checkzone "cdn.magedu.com"  /var/named/cdn.magedu.com.zone
zonecdn.magedu.com/IN: loaded serial 201601
OK
[root@ilinux~]# service named configtest
[root@ilinux~]# rndc reload
serverreload successful

6)测试子域解析

[root@ilinux ~]# dig -t NS cdn.magedu.com @10.11.0.244
[root@ilinux ~]# dig -t A www.cdn.magedu.com @10.11.0.244
[root@ilinux ~]# dig -t A ns1.cdn.magedu.com @10.11.0.244



4、请描述一次完整的http请求处理过程;

答:

1)建立TCP连接

http工作开始之前,web浏览器首先要通过TCP协议与web服务器建立连接;http是比tcp更高层次的应用层协议,根据规则,只有低层协议建立之后才能进行更高层协议的连接。因此,首先要建立TCP连接,一般TCP连接的端口号是80.

2Web浏览器想Web服务器发送请求命令

一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求报文。如:GET /sample/hello.phpHTTP/1.1

3Web浏览器发送请求头部信息

web浏览器给web服务器发送其请求命令之后,还要以头信息的形式向web服务器发送一些信息,然后再发送一空行(通知服务器头信息结束)。

4Web服务器响应

客户端想服务器发出请求后,服务器会给客户端会送应答,HTTP/1.1 200 OK,应答的第一部分是协议版本号和响应状态码。   

5web服务器发送响应头信息

正如客户端会随同请求发送一些关于自身的信息一样,服务器也会随同响应向客户端发送关于它自身的数据及被请求的文档。

6Web服务器向浏览器发送数据

Web服务器向浏览器发送头部信息后,它会发送一个空白行来表示头部信息发送结束;接着,它就以ConTent-Type响应头部信息所描述的格式发送客户端所请求的实际数据。

7Web服务器关闭TCP连接

一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,但如果浏览器或服务器在其头部信息中加入了这行代码:Connectionkeep-aliveTCP连接在发送后仍然保持打开状态;这样,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。


5httpd所支持的处理模型有哪些,他们的分别使用于哪些环境。

答:

httpd所支持的处理模型有preforkworkerevent

1prefork模型:多进程模型,每个进程响应一个请求;一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达;子进程数最大不会超过1024个。

2worker模型:多线程模型,每个线程响应一个请求;一个主进程:生成多个子进程,每个子进程负责生成多个线程,每个线程响应一个请求。m进程,n线程:最大的并发响应数是m*n

3event模型:事件驱动模型,每个线程响应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)

答:

安装前提:

[root@magedu~]# yum groupinstall -y "DelopmentTools" "Server Platform Development"
[root@magedu~]# yum install -y pcre-devel

1)编译安装apr-1.5.2

[root@magedu /]# tar xf apr-1.5.2.tar.bz2 
[root@magedu /]# cd apr-1.5.2
[root@magedu apr-1.5.2]# ./configure --prefix=/usr/local/apr                 
[root@magedu apr-1.5.2]# make && make install

2)编译安装apr-util-1.5.4

[root@magedu /]# tar xf apr-util-1.5.4.tar.bz2
[root@magedu /]# cd apr-util-1.5.4
[root@magedu apr-util-1.5.4]# ./configure  --prefix=/usr/local/apr-util  --with-apr=/usr/local/apr
[root@magedu apr-util-1.5.4]# make && make install

3)编译安装httpd-2.4.23

[root@magedu /]# tar xf httpd-2.4.23.tar.bz2 
[root@magedu /]# cd httpd-2.4.23
[root@magedu httpd-2.4.23]# groupadd -r apache
[root@magedu httpd-2.4.23]# useradd -r -g apache apache
[root@magedu httpd-2.4.23]# ./configure--prefix=/usr/local/apache --sysconf=/etc/httpd24 --enable-so --enable-ssl--enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util/ --enable-modules=most--enable-mpms-shared=all --with-mpm=prefork
[root@magedu httpd-2.4.23]# make && make install

#先确保80端口不被其他程序占用,套接字是独占端口的。

[root@ilinux ~]# ss -tnl

#启用apache服务(编译安装的启用方式):

[root@ilinux ~]# /usr/local/apache/bin/apachectl 
[root@ilinux ~]# ss -tnl
State     Recv-Q Send-Q       LocalAddress:Port      Peer Address:Port
LISTEN      0    128            :::80                 :::*

#apachebin目录加入到PATH变量中:

[root@ilinux ~]# vim /etc/profile.d/httpd.sh
PATH=/usr/local/apache/bin:$PATH
[root@ilinux ~]# . /etc/profile.d/httpd.sh


#启用服务后就可以访问测试页:

第九周作业_作业                          

4)添加两个虚拟主机

[root@ilinux ~]# vim /etc/httpd24/extra/httpd-vhosts.conf
<VirtualHost *:80>
   DocumentRoot "/web/vhosts/www1"
   ServerName www1.stuX.com
   ErrorLog "/var/log/httpd/www1.err"
   CustomLog "/var/log/httpd/www1.access" common
</VirtualHost>
 
<VirtualHost *:80>
   DocumentRoot "/web/vhosts/www2"
   ServerName www2.stuX.com
   ErrorLog "/var/log/httpd/www2.err"
   CustomLog "/var/log/httpd/www2.access" common
</VirtualHost>

 

5)启用虚拟主机,禁用中心主机

[root@ilinux ~]# vim /etc/httpd24/httpd.conf
# Virtual hosts
Include/etc/httpd24/extra/httpd-vhosts.conf
#DocumentRoot"/usr/local/apache/htdocs"

6)创建所需目录

[root@ilinux ~]# mkdir -pv /web/vhosts/{www1,www2}
mkdir: created directory `/web'
mkdir: created directory `/web/vhosts'
mkdir: created directory `/web/vhosts/www1'
mkdir: created directory `/web/vhosts/www2'
[root@ilinux ~]# mkdir -pv /var/log/httpd
mkdir: created directory `/var/log/httpd'

7)设置两个虚拟主机目录访问权限

[root@ilinux ~]# vim /etc/httpd24/httpd.conf
<Directory"/web/vhosts/www1">
   options none
   allowoverride none
   Require all granted
</Directory>
 
<Directory "/web/vhosts/www2">
   options none
   allowoverride none
   Require all granted
</Directory>

8)创建网站主页面文件

[root@ilinux ~]# vim /web/vhosts/www1/index.html
Page at www1
[root@ilinux ~]# vim /web/vhosts/www2/index.html
Page at www2

9)由于DNS无法解析本地域名,这里用10.11.0.243Linux主机作为客户端来访问,修改它的hosts文件,增加如下一行:

[root@magedu ~]# vim /etc/hosts
10.11.0.240 www1.stuX.com www2.stuX.com
Windows客户端访问,需修改C:\Windows\system32\drivers\etc\hosts文件。

10)用10.11.0.243主机测试访问页面

[root@magedu ~]# curl http://www1.stuX.com
Page at www1
[root@magedu ~]# curl http://www2.stuX.com
Pate at www2

11server-status设置

www1.stuX.com的虚拟主机配置文件里增加<Location /server-status>内容。

[root@ilinux ~]# vim /etc/httpd24/extra/httpd-vhosts.conf
<VirtualHost *:80>
   DocumentRoot "/web/vhosts/www1"
   ServerName www1.stuX.com
   ErrorLog "/var/log/httpd/www1.err"
   CustomLog "/var/log/httpd/www1.access" common
    <Location /server-status>
       SetHandler server-status
        Orderdeny,allow
        Allowfrom all
       Authtype Basic
       Authname "server-status"
        AuthUserFile/etc/httpd24/.htpasswd
        Requirevalid-user
   </Location>
</VirtualHost>

(12)创建用户states和密码,并生成用户密码文件

[root@ilinux httpd24]# htpasswd -c -m /etc/httpd24/.htpasswd status

重启服务后,访问如下:

第九周作业_http_02

 

7、为第6题中的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;

(1)要求使用证书认证,证书中要求使用的国家(CN)、州(HA)、城市(ZZ)和组织(MageEdu)

(2)设置部门为Ops,主机名为www2.stuX.com邮件为admin@stuX.com

答:

1)创建所需的文件

[root@ilinux httpd24]# cd /etc/pki/CA/
[root@ilinux CA]# touch index.txt
[root@ilinux CA]# echo 01  serial

2CA自签证书

[root@ilinux CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048)
[root@ilinux CA]# openssl req -new -x509 -key private/cakey.pem -days 7300 -outcacert.pem
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HA
Locality Name (eg, city) [Default City]:ZZ
Organization Name (eg, company) [DefaultCompany Ltd]:MageEdu
Organizational Unit Name (eg, section)[]:Ops
Common Name (eg, your name or your server'shostname) []:www2.stuX.com
Email Address []:admin@stuX.com

3)发证

[root@ilinux CA]# mkdir /etc/httpd24/ssl
[root@ilinux CA]# cd /etc/httpd24/ssl
[root@ilinux ssl]# (umask 077;openssl genrsa -out httpd.key 2048)
[root@ilinux ssl]# openssl req -new -key httpd.key -days 365 -out httpd.csr
[root@ilinux ssl]# openssl ca -in httpd.csr -out httpd.crt -days 365


4)修改httpd.conf配置文件

[root@ilinux ~]# vim /etc/httpd24/httpd.conf
LoadModule ssl_module modules/mod_ssl.so             #启用ssl模块;
LoadModule socache_shmcb_modulemodules/mod_socache_shmcb.so
Include /etc/httpd24/extra/httpd-ssl.conf                #导入ssl配置文件;


5)修改ssl模块配置文件

[root@ilinux ~]# vim /etc/httpd24/extra/httpd-ssl.conf
<VirtualHost *:443>
#  General setup for the virtual host
DocumentRoot "/web/vhosts/www2"
ServerName www2.stuX.com
ServerAdmin admin@stuX.com
ErrorLog"/var/log/httpd/www2.err"
CustomLog"/var/log/httpd/www2.access" common
SSLCertificateFile"/etc/httpd24/ssl/httpd.crt"
SSLCertificateKeyFile"/etc/httpd24/ssl/httpd.key"

6)访问测试,如下图:

第九周作业_作业_03


8、建立samba共享,共享目录为/data,要求:(描述完整的过程)

1)共享名为shared,工作组为magedu

2)添加组develop,添加用户gentoo,centosubuntu,其中gentoocentosdevelop为附加组,ubuntu不属于develop组;密码均为用户名;

3)添加samba用户gentoo,centosubuntu,密码均为“mageedu”;

4)samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式访问;

5)samba共享服务仅允许来自于172.16.0.0/16网络的主机访问;

答:

1)先安装sambasamba-client

[root@ilinux ~]# yum install -y samba samba-client

2)查看samba所需配置文件

[root@ilinux ~]# rpm -ql samba | less
/etc/pam.d/samba             #配置文件所在目录;
/etc/rc.d/init.d/nmb           #服务脚本;
/etc/rc.d/init.d/smb           #服务脚本;
/etc/samba/smb.conf            #主配置文件;

3)创建组和用户

#创建系统用户和组
[root@ilinux samba]# groupadd develop
[root@ilinux samba]# useradd -G develop gentoo
[root@ilinux samba]# useradd -G develop centos
[root@ilinux samba]# useradd ubuntu
[root@ilinux samba]# echo "gentoo" | passwd --stdin gentoo
[root@ilinux samba]# echo "centos" | passwd --stdin centos
[root@ilinux samba]# echo "ubuntu" | passwd --stdin ubuntu
#创建samba用户
[root@ilinux samba]# smbpasswd -a gentoo
[root@ilinux samba]# smbpasswd -a centos
[root@ilinux samba]# smbpasswd -a ubuntu


4)创建samba目录并设置权限

[root@ilinux samba]# mkdir /data
[root@ilinuxsamba]# chmod g+w /data/
[root@ilinux samba]# ls -ld /data/  
drwxrwxr-x 2 root root 4096 Nov  8 14:39 /data/
[root@ilinux samba]# chown :develop /data/
[root@ilinux samba]# ls -ld /data/        
drwxrwxr-x 2 root develop 4096 Nov  8 14:39 /data/

5)修改主配置文件

[root@ilinux samba]# vim /etc/samba/smb.conf
       workgroup = magedu
        hosts allow = 10.11.0.
[shared]
    comment = My Shared Testing.        #描述信息;
    path = /data                 #设置共享路径;
    guest ok = no               
    valid users = gentoo,centos,ubuntu        #设置可访问的用户;
    write list = +develop               #设置有写入权限的列表;
    writable = yes

6)重启服务

[root@ilinux ~]# service smb start

7)访问共享测试

#有写入权限的访问测试

[root@ilinux ~]# smbclient //10.11.0.240/shared -U gentoo
Enter gentoo's password:
Domain=[MAGEDU] OS=[Unix] Server=[Samba3.6.23-36.el6_8]
smb: \> ls
 .                D        0  Tue Nov 8 14:39:38 2016
 ..               DR        0  Tue Nov 8 14:39:38 2016
 
                39743 blocks of size 4194304.37209 blocks available
smb: \> lcd /etc/
smb: \> put fstab 
putting file fstab as \fstab (41.4 kb/s)(average 41.4 kb/s)
smb: \> ls
 .                D        0  Tue Nov 8 16:44:25 2016
 ..               DR        0  Tue Nov 8 14:39:38 2016
fstab                A          805 Tue Nov  8 16:44:25 2016
 
               39743 blocks of size4194304. 37209 blocks available
smb: \>

#无写入权限的访问测试

[root@ilinux ~]# smbclient //10.11.0.240/shared -U ubuntu
Enter ubuntu's password:
Domain=[MAGEDU] OS=[Unix] Server=[Samba3.6.23-36.el6_8]
smb: \> lcd /tmp
smb: \> put test.txt 
NT_STATUS_ACCESS_DENIED opening remote file \test.txt
smb: \>


9、搭建一套文件vsftp文件共享服务,共享目录为/ftproot,要求:(描述完整的过程)

1)基于虚拟用户的访问形式;

2)匿名用户只允许下载,不允许上传;

3)禁锢所有的用户于其家目录当中;

4)限制最大并发连接数为200:

5)匿名用户的最大传输速率512KB/s

6)虚拟用户的账号存储在mysql数据库当中。

7)数据库通过NFS进行共享。

答:

实验环境:

10.11.0.243    nfs

10.11.0.244    mysql+vsftpd

1)安装nfs-utils10.11.0.243

[root@c66-moban ~]# yum install -y nfs-utils
[root@c66-moban ~]# mkdir /nfs
[root@c66-moban ~]# groupadd -g 1001 mysql
[root@c66-moban ~]# useradd -u 1001 -g 1001 mysql
[root@c66-moban ~]# chown mysql:mysql /nfs
#编辑/etc/exports文件,添加权限 
[root@c66-moban ~]# vim /etc/exports
/nfs 10.11.0.244(rw, no_root_squash)
#启动服务
[root@c66-moban~]# service rpcbind start    #CentOS7启动法:systemctl start rpcbind.service
Starting rpcbind:                       [  OK  ]
[root@c66-moban ~]# service nfs start      #CentOS7启动法:systemctl start nfs-server.service
Starting NFS services:                                 [  OK  ]
Starting NFS quotas:                                  [  OK  ]
Starting NFS mountd:                                  [  OK  ]
Starting NFS daemon:                                  [  OK  ]
Starting RPC idmapd:                                  [  OK  ]

2)安装mysql10.11.0.244

[root@c66-moban ~]# yum install -y mysql mysql-server mysql-devel
[root@c66-moban ~]# mkdir /mydata
[root@c66-moban ~]# groupadd -g 1001 mysql
[root@c66-moban ~]# useradd -g 1001 -u 1001 -s /sbin/nologin mysql
[root@c66-moban ~]# chown mysql:mysql /mydata/
[root@c66-moban ~]# ll -d /mydata/           
drwxr-xr-x. 2 mysql mysql 4096 Nov 16 22:17/mydata/
 
挂载nfs共享目录
[root@c66-moban ~]# mount 192.168.1.110:/nfs  /mydata/ 
注意:这里出现了一个错误mount: wrong fs type,bad option, bad superblock on. . .
此时,需安装nfs-utils即可解决。
[root@ilinux ~]# yum install nfs-utils
 
修改mysql的配置文件,制定datadir的位置为/mydata
[root@c66-moban ~]# vim /etc/my.cnf
[mysqld]
datadir=/mydata
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommendedto prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/mydata/mysqld.pid

初始化mysql
[root@c66-moban ~]# mysql_install_db--datadir=/mydata
[root@c66-moban ~]# service mysqld start
Starting mysqld:                             [  OK  ]

如果无法启动mysqld,那么记得禁用selinux和iptables即可。
[root@c66-moban ~]# setenforce 0
[root@c66-moban ~]# getenforce 
Permissive
[root@c66-moban ~]# service iptables stop

3)安装vsftpdpam_mysql10.11.0.244

[root@c66-moban ~]# yum install -y vsftpd 
由于pam_mysql包在epel源中,这里需先添加epel源。
[root@c66-moban~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
[root@c66-moban~]# yum install -y pam_mysql         #pam_mysql在epel源中;
 
[root@c66-moban~]# mysql
mysql> create database vsftpd;               #创建数据库vsftpd;
QueryOK, 1 row affected (0.00 sec)
 
#创建数据库用户,添加查询权限
mysql>grant select on vsftpd.* tovsftpd@192.168.1.120 identified by 'magedu';
QueryOK, 0 rows affected (0.00 sec)
mysql> grant select on vsftpd.* tovsftpd@127.0.0.1 identified by 'magedu';             
QueryOK, 0 rows affected (0.00 sec)
 
mysql> use vsftpd
Databasechanged
mysql>flush privileges;
QueryOK, 0 rows affected (0.01 sec)

#在vsftpd数据库中创建表users
mysql> create table users (id int AUTO_INCREMENTNOT NULL,name char(20) binary NOT NULL,password char(48) binary NOTNULL,primary key(id));
#插入用户vsftpd1
mysql> insert into users(name,password)values('vsftpd1',password('magedu'));
QueryOK, 1 row affected (0.01 sec)
mysql> select * from users;
+----+---------+-------------------------------------------+
| id | name    | password                                  |
+----+---------+-------------------------------------------+
|  1| vsftpd1 | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
+----+---------+-------------------------------------------+
1 row in set (0.02 sec)
 
pam_mysql配置
[root@ilinux ~]# vim /etc/pam.d/vsftpd        #编辑配置文件,添加如下两行
auth      required    /lib64/security/pam_mysql.so user=vsftpd passwd=magedu hos
t=10.11.0.244 db=vsftpd talbe=usersusercolumn=name passwdcolumn=password crypt=2
account   required    /lib64/security/pam.mysql.so user=vsftpd passwd=magedu hos
t=10.11.0.244 db=vsftpd table=usersusercolumn=name passwdcolumn=password crypt=2
 
#创建虚拟用户映射的系统用户及对应目录
[root@ilinux ~]# useradd -s /sbin/nologin -d /ftproot vuser
[root@ilinux ~]# chmod go+rw /ftproot/
[root@ilinux ~]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES             #允许虚拟用户访问;
guest_username=vuser           #虚拟用户映射为vuser;
max_clients=200             #最多同时允许200个客户连接;
anonymous_enable=YES           #允许匿名用户访问;
local_enable=YES
anon_upload_enable=NO          #禁用anonymous上传的权限;
anon_max_rate=512000           #限制anonymous传输速率为512KB/s;
anon_mkdir_write_enable=NO        #不允许anonymous有创建目录的权限;
anon_other_write_enable=NO        #不允许anonymous有写入的权限;
chroot_local_user=YES          #对用户的访问只限制在主目录,不能访问其他目录;
user_config_dir=/etc/vsftpd/vusers    #虚拟用户配置目录;
pam_service_name=vsftpd.mysql        

#配置虚拟账号权限
[root@ilinux ~]# mkdir /etc/vsftpd/vusers
[root@ilinux ~]# vim /etc/vsftpd/vusers/vsftpd1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
 
[root@ilinux ~]# yum install -y ftp
[root@ilinux ~]# ftp 10.11.0.244
ftp: connect: Connection refused         
#出现连接被拒绝,执行以下命令解决。
[root@ilinux ~]# vsftpd /etc/vsftpd/vsftpd.conf &

访问测试:

[root@ilinux ~]# ftp 10.11.0.244
Connected to 10.11.0.244 (10.11.0.244).
220 (vsFTPd 2.2.2)
Name (10.11.0.244:root):