N26 --- 第十三次博客作业(ftp,nfs,samba)
(一)建立samba共享,共享目录为/data,要求:(描述完整的过程)
1)共享名为shared,工作组为magedu;
2)添加组develop,添加用户geetoo,centos和Ubuntu,其中geetoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;
3)添加samba用户geetoo,centos和ubuntu,密码均为“mageedu”;
4)此samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式访问,共享对应的文件系统的路径为/mydata/data
5)此samba共享服务仅允许来自于192.168.0.0/16网络的主机访问;
试验环境搭建 准备两台CentOS 7主机,Samba服务端ip为:192.168.10.213,Samba客户端IP为:192.168.10.214,Samba的服务端程序为:samba,Samba的客户端程序为:samba-client 试验步骤 (1)在服务端安装samba程序(IP:192.168.10.213)
yum install -y samba
被依赖到的安装包为:
已安装:
samba.x86_64 0:4.4.4-12.el7_3
作为依赖被安装:
libkadm5.x86_64 0:1.14.1-27.el7_3
作为依赖被升级:
krb5-libs.x86_64 0:1.14.1-27.el7_3 krb5-workstation.x86_64 0:1.14.1-27.el7_3
libsmbclient.x86_64 0:4.4.4-12.el7_3 libtalloc.x86_64 0:2.1.6-1.el7
libwbclient.x86_64 0:4.4.4-12.el7_3 pytalloc.x86_64 0:2.1.6-1.el7
samba-client.x86_64 0:4.4.4-12.el7_3 samba-client-libs.x86_64 0:4.4.4-12.el7_3
samba-common.noarch 0:4.4.4-12.el7_3 samba-common-libs.x86_64 0:4.4.4-12.el7_3
samba-common-tools.x86_64 0:4.4.4-12.el7_3 samba-libs.x86_64 0:4.4.4-12.el7_3
切换到/etc/samba目录,目录中的文件有:
-rw-r--r-- 1 root root 20 1月 18 03:07 lmhosts
-rw-r--r-- 1 root root 667 1月 18 03:07 smb.conf 主配置文件
-rw-r--r-- 1 root root 11327 1月 18 03:07 smb.conf.example 主配置文件的模板
将smb.conf文件重命名为smb.conf.backup 并且将smb.conf.example拷贝一份,重命名为smb.conf
启动samba服务
systemctl start smb.service
systemctl start nmb.service
编辑smb.conf文件,由题设:共享名为shared,工作组为magedu
在 Global Settings 中修改workgroup = magedu
在 Share Definitions 中添加 [shared]
共享名称
添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名
退出编辑器
创建用户 : useradd geetoo ; useradd centos; useradd ubantu
创建组:groupadd develop
将gentoo,centos和ubuntu设置samba密码,成为samba用户
smbpasswd -a geetoo
smbpasswd -a centos
smbpasswd -a ubantu
使用pdbedit查看samba用户
pdbedit -L
geetoo:1000:
ubantu:1002:
centos:1001:
将gentoo和centos以develop为附加组
usermod -aG develop centos
usermod -aG develop geetoo
添加samba用户gentoo,centos和ubuntu,密码均为“mageedu”,删除已经设定的samba用户并重新添加用户
smbpasswd -x geetoo
smbpasswd -x centos
smbpasswd -x ubantu
pdbedit -L 查看, 结果无samba用户
smbpasswd -a geetoo
密码为“mageedu”
smbpasswd -a centos
密码为“mageedu”
smbpasswd -a ubantu
密码为“mageedu”
此samba共享shared仅允许develop组具有写权限,其他用户只能以只读方式访问,共享对应的文件系统的路径为/mydata/data
创建目录:mkdir -pv /mydata/data
修改目录访问权限:setfacl -m g:develop:rwx /mydata/data/
编辑主配置文件/etc/samba/smb.conf
[shared]
comment = data
path = /mydata/data
write list = @develop
writable = no
browseable = yes
检查语法并查看主配置文件的信息
testparm
在客户端检验用户访问情况(IP:192.168.10.214)
查看共享目录: smbclient -L 192.168.10.213 -U centos
测试centos的读写:smbclient //192.168.10.213/shared -U centos
(可上传下载)
测试geetoo的读写:smbclient //192.168.10.213/shared -U geetoo
(可上传下载)
测试ubantu的读写:smbclient //192.168.10.213/shared -U ubantu
(只能下载)
此samba共享服务仅允许来自于192.168.0.0/16网络的主机访问
在全局配置中添加 hosts allow = 192.168.
(二)搭建一套文件vsftp文件共享服务,共享目录为/ftPRoot,要求:(描述完整的过程)
1)基于虚拟用户的访问形式;
2)匿名用户只允许下载,不允许上传;
3)禁锢所有的用户于其家目录当中;
4)限制最大并发连接数为200:;
5)匿名用户的最大传输速率512KB/s
6)虚拟用户的账号存储在MySQL数据库当中。
7)数据库通过NFS进行共享。
试验环境搭建 准备两台CentOS 7主机,vsftpd的服务端IP为:192.168.10.215,fpt的客户端IP为:192.168.10.216。 试验步骤 (1)在vsftpd的服务端安装vsftpd程序 yum install -y vsftpd 启动vsftpd程序 systemctl start vsftpd 查看vsftpd的监听端口 netstat -lntup (2)编辑主配置文件/etc/vsftpd/vsftpd.conf 匿名用户只允许下载,不允许上传
anonymous_enable=YES
注意:如果需要开启写权限,需要write_enable=YES
,并且对远程的本地文件系统的目录也要有写权限才行
#anon_upload_enable
禁锢所有的用户于其家目录当中
local_enable=YES
注意:如果是只禁锢个别用户,开启以下两个注释,但是这两种禁锢功能不能同时使用
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd/chroot_list
同时本地用户不能有服务端的家目录的文件系统有写权限
chmod -w /home/centos/
限制最大并发连接数为200,匿名用户的最大传输速率512KB/s
max_clients=200
anon_max_rate=512000
基于虚拟用户的访问形式访问ftp服务
yum install -y pam-devel openssl-devel mariadb-devel mariadb-server
下载pam-mysql源码包pam_mysql-0.7RC1.tar
解压,cd pam_mysql-0.7RC1
./configure --with-mysql=/usr --with-openssl=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/security
登入mysql创建vsftpd数据库,并在数据库里面创建基于虚拟用户的认证表,授权vsftpd用户可以访问数据库
create database vsftpd;
use vsftpd;
create table users (
id int auto_increment not null primary key,
name char(30) not null,
passWord char(48) binary not null);
insert into users(name,password) values ('tom',password('mageedu'));
insert into users(name,password) values ('jerry',password('mageedu'));
grant select on vsftpd.* to [email protected]'localhost' identified by 'mageedu';
grant select on vsftpd.* to [email protected]'127.0.0.1' identified by 'mageedu';
flush privileges;
重新创建pam的用户认证配置文件
vim /etc/pam.d/vsftpd.msyql
auth required pam_mysql.so user=vsftpd passwd=mageedu host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=mageedu host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
在本地先创建一个数据库users表中的用户所映射到的本地用户,取名为vuser
useradd -s /sbin/nologin -d /ftproot vuser
chmod go+rx /ftproot
(修改vuser的家目录权限,使得来宾用户可以访问)
编译vsftpd的配置文件,设定重新定义的用户认证的配置文件的路径,并且指定本地访问的vuser
添加:guest_enable=yes
guest_username=vuser
pam_service_name=vsftpd.mysql
并且设置vuser的家目录,不能有写权限,如果有写权限会报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
重启vsftpd
systemctl restart vsftpd.service
(3)在客户端(IP:192.168.10.216)检测虚拟用户的设置
ftp 192.168.10.215
(检测结果为:虚拟用户是被禁锢的,只能在/ftproot目录下,并且没有写权限,只有读权限)
(4)在服务端的vuser的家目录/ftproot下,创建pub和upload目录,设置upload目录的属主为vuser, 并且可写。再将/etc/vsftpd/vsftpd.conf中设置匿名用户可写, 重启vsftpd
chown vuser /ftproot/upload/
(drwxr-xr-x 2 vuser root 6 2月 12 16:56 upload/)
anon_upload_enable=YES
systemctl restart vsftpd
(5)在客户端端测试
虚拟用户在upload中可以上传,在pub中不能上传
(6)如果想要不同的两个虚拟用户一个能上传,一个不能上传怎么办?
解决办法:由于所有的虚拟用户都是映射到本地的vuser用户,那么不能通过属组权限的方式解决。由于在主配置文件中支持每一个虚拟用户可以有自己的单独的配置文件这样的方式解决,在/etc/vsftpd/目录下创建一个目录,目录中创建不同虚拟用户的文件名,文件里面自定义anon_upload_enable=YES
,在主配置文件中注释anon_upload_enable=YES
, 并且加上user_config_dir=/etc/vsftpd/目录
(7)由题设数据库通过NFS进行共享。
在服务端(IP:192.168.10.215)下载nfs-utils
编辑/etc/exports文件 :vi /etc/exports
添加:/var/lib/mysql 192.168.0.0/16(rw,root_squash)
导出共享目录: exportfs -r
在客户端查看共享目录,并挂载
showmount -e 192.168.10.215
mount -t nfs 192.168.10.215:/var/lib/mysql /mydata/data/