1、建立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网络的主机访问;

  1. 建立共享samba目录文件,创建工作组,添加用户:

    ]# mkdir -pv /data/shared

    [root@localhost CA]# groupadd develop

    [root@localhost CA]# useradd -G develop gentoo

    [root@localhost CA]# useradd -G develop centos

    [root@localhost CA]# useradd ubuntu

    [root@localhost CA]# echo gentoo | passwd --stdin gentoo

    更改用户 gentoo 的密码 。

    passwd:所有的身份验证令牌已经成功更新。

    [root@localhost CA]# echo gentoo | passwd --stdin centos

    更改用户 centos 的密码 。

    passwd:所有的身份验证令牌已经成功更新。

    [root@localhost CA]# echo gentoo | passwd --stdin ubuntu

    更改用户 ubuntu 的密码 。

    passwd:所有的身份验证令牌已经成功更新。

2.安装samba   :yum install samba

1)编辑smb.conf 文件 vim /etc/samba/smb.conf 

3 添加samba用户gentoo,centos和Ubuntu,密码为各自用户名:

wKioL1mi0MjATOdxAAApTh7ZGCg398.jpg

] # vim /etc/samba/smb.conf后面添加
       // 自定义共享:
           [shared]
           comment = shared  test  file
           path =  /data/shared
           writable =  yes
           guest ok =  yes

测试配置文件是否有错误及生效

#] testparm

4  启动samba服务:]# systemctl start smb

5 配置共享文件权限:共享权限和文件系统权限二者缺一不可.必须都拥有写权限才能写入.

[root@localhost ~]# setfacl -m group:develop:rwx /data/shared

[root@localhost ~]# set -m user:ubuntu:rx /data/shared

[root@localhost ~]# ls -ld /data/shared

drwxrwxr-x+ 2 root root 6 8月  28 05:49 /data/shared

6 交互式数据访问:

wKioL1mi2jiCOGrhAABUcH6CdaU974.jpg

7 测试结果

  首先以一台cent6客户端分别用centos和Ubuntu用户登录samba服务,前者可上传文件,后者则只读:

wKioL1mi3CSRH7lWAABuKx69S04825.jpg

wKiom1mi3JmTidQzAAB97AUEj_Y967.jpg

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

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

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

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

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

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

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

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

实验环境如下

ip
用途
192.168.10.132
mysql+vsftp
192.168.10.128nfs

1 安装nfs服务器

[root@cent6 /]# yum install nfsutil* rpcbind       #安装nfs和rpcbind服务所需软件包
[root@cent6 /]# mkdir /nfs        #创建共享文件夹
[root@cent6 ~]# groupadd -g 1001 mysql        #添加mysql组
[root@cent6 ~]# useradd -u 1001 -g 1001 mysql        #添加mysql用户
[root@cent6 ~]# chown mysql:mysql /nfs        #修改/nfs属组为mysql,为之后挂载到mysql服务器上做datadir做准备
[root@cent6 /]# vim /etc/exports        #编辑/etc/exports文件,添加权限
/nfs 192.168.10.132(rw,sync,fsid=0,no_root_squash)
[root@cent6 /]# systemctl start rpcbind.service        ##启动rpcbind服务
[root@cent6 /]# systemctl start nfs-server.service        #启动nfs服务

如果是Centos6的请注意

启动rpcbind  rpcbind是6.0版本后默认的RPC服务,所以要先于nfs启动。如果不启动rpcidmap则会造成用户权限的映射错误,用户的权限看起来是一串数字。

#] /etc/init.d/rpcbind start

Starting rpcbind:                                          [  OK  ]

#] /etc/init.d/nfs start    

Starting NFS services:                                     [  OK  ]

Starting NFS mountd:                                       [  OK  ]

Starting NFS daemon:                                       [  OK  ]

Starting RPC idmapd:                                       [  OK  ]

2  客户端挂载nfs文件夹

[root@localhost /]# mkdir /mydata/data   -pv        #创建挂载路径
[root@localhost /]# mount -t nfs 192.168.10.128:/nfs /mydata/data        #挂载nfs目录到/mydata/data  

如果提示错误为mount.nfs: access denied by server while mounting

去nfs服务器修改,添加insecure即可,然后重启nfs服务

[root@cent6 /]# vim /etc/exports        #编辑/etc/exports文件,添加权限
/nfs 192.168.10.132(insecure,rw,sync,fsid=0,no_root_squash)

3 安装mysql

[root@localhost ~]# yum install -y mariadb mariadb-devel
[root@localhost ~]# groupadd -g 1001 mysql        #添加mysql组
[root@localhost ~]# useradd -u 1001 -g 1001 mysql        #添加mysql用户
[root@localhost ~]# vim /etc/my.cnf        #修改mysql配置文件
[mysqld]

datadir=/mydata/data

socket=/var/lib/mysql/mysql.sock

character-set = utf8
user= mysql
[root@localhost /]# mysql_install_db --datadir="/mydata/data/"        #初始化mysql
[root@localhost /]# systemctl status mariadb.service        #启动mysql

4 创建数据库

MariaDB [(none)]> create database vsftpd;               
MariaDB [vsftpd]>  grant select on vsftpd.* to vsftpd@‘192.168.10.132‘ identified by ‘magedu‘;        #创建数据库用户,添加查询权限
MariaDB [vsftpd]> create table users (id int AUTO_INCREMENT NOT NULL,name char(50) binary NOT NULL,password char(48) binary NOT NULL,primary key(id));        #在vsftpd数据库中创建表users
MariaDB [vsftpd]> use vsftpd
MariaDB [vsftpd]> flush privileges;
MariaDB [vsftpd]> insert into users(name,password) values(‘vsftpd1‘,password(‘magedu‘));        #插入用户vsftpd1            
Query OK, 1 row affected (0.02 sec)
MariaDB [vsftpd]> select * from users;
+----+---------+-------------------------------------------+
| id | name    | password                                  |
+----+---------+-------------------------------------------+
|  1 | vsftpd1 | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
+----+---------+-------------------------------------------+
1 row in set (0.00 sec)

5 pam-mysql配置

[root@localhost pam_mysql-0.7RC1]# vim /etc/pam.d/vsftpd         #编辑配置文件,添加如下两行
auth required /lib64/security/pam_mysql.so user=vsftpd passwd=magedu host=192.168.10.132 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=magedu host=192.168.10.128 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

6 修改vsftp配置

[root@localhost /]# useradd -s /sbin/nologin -d /var/ftproot vuser        #建立虚拟用户映射的系统用户及对应目录
[root@localhost /]# chmod go+rw /var/ftproot
[root@localhost /]# vim /etc/vsftpd/vsftpd.conf         #修改vsftpd配置文件
guest_enable=YES        #允许虚拟用户账号访问
guest_username=vuser        #gusest用户映射为vuser
max_clients=200        #最多同时允许100个客户连接          
anonymous_enable=YES        #允许匿名用户访问
local_enable=YES
anon_max_rate=512000        #限制anonymous传输速率为512KB/s     
anon_upload_enable=NO        #anonymous是否具有上传的权限
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@localhost vusers]# vim /etc/vsftpd/vusers/vsftpd1         #配置虚拟账号权限
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

7 运行结果

[root@cent6 /]# ftp 192.168.10.132
Connected to 192.168.10.132 (192.168.10.132).
220 (vsFTPd 3.0.2)
Name (192.168.10.132:root): vsftpd1        #用虚拟账号登陆
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> lcd /shell/
Local directory now /shell
ftp> get test        #下载文件
local: test remote: test
227 Entering Passive Mode (192,168,10,132,195,159).
150 Opening BINARY mode data connection for test (0 bytes).
226 Transfer complete.
ftp> put case.sh         #上传文件
local: case.sh remote: case.sh
227 Entering Passive Mode (192,168,10,132,234,27).
150 Ok to send data.
226 Transfer complete.
365 bytes sent in 9.2e-05 secs (3967.39 Kbytes/sec)
ftp>