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共享服务仅允许来自192.168.68.0/16网络的主机访问;
yum -y install samba samba-client#安装samba
vim /etc/samba/smb.conf [shared]
workgroup = magedu
hosts allow = 192.168.68.0/24
comment = shared
path = /data
write list = +develop
writable = yes
public =yes
[root@localhost ~]# groupadd develop
[root@localhost ~]# useradd ubuntu
[root@localhost ~]# useradd gentoo -G develop
[root@localhost ~]# useradd centos -G develop
[root@localhost ~]# smbpasswd -a gentoo
[root@localhost ~]# smbpasswd -a ubuntu
[root@localhost ~]# smbpasswd -a centos
[root@localhost ~]# pdbedit -L
gentoo:1001:
centos:1002:
ubuntu:1000:
[root@localhost ~]# setfacl -m g:develop:rwx /data/ #修改权限使得develop组的用户能有修改权限
[root@localhost ~]# getfacl /data/
getfacl: Removing leading ‘/’ from absolute path names
# file: data/
# owner: root
# group: root
user::rwx
group::r-x
group:develop:rwx
mask::rwx
other::r-x
测试
[root@localhost ~]# smbclient //192.168.68.150/shared -U gentoo
Enter SAMBA\gentoo’s password:
Domain=[LOCALHOST] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: \> ls
. D 0 Sun Nov 19 20:23:22 2017
.. DR 0 Sun Nov 19 20:23:22 2017
17811456 blocks of size 1024. 16273628 blocks available
smb: \> lcd /etc
smb: \> put fstab
putting file fstab as \fstab (34.9 kb/s) (average 34.9 kb/s)
smb: \> exit
在samba server端
[root@localhost ~]# cd /data/
[root@localhost data]# ls
fstab
同样的在windows端输入\\smaba_server的ip\共享的目录别名
2、搭建一套文件vsftp文件共享服务,共享目录为/ftproot,要求:描述完整过程
1)基于虚拟用户的访问形式
2)匿名用户只允许下载,不允许上传
3)禁锢所有用户于其家目录当中
4)限制最大并发连接数200
5)匿名用户的最大传输速率512KB/s
6)虚拟用户的账号存储在mysql数据库中
7)数据库通过NFS进行共享
虚拟用户登录:FTP的专有用户有两种方式实现虚拟用户,本地数据文件和数据库服务器
使用虚拟用户登录FTP,只能访问FTP服务器提供的资源,大大曾强了系统的安全
[root@localhost centos]# yum -y install openssl-devel mariadb-server pam-devel
源码安装PAM-MYSQL
[root@localhost ~]# wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz
[root@localhost pam_mysql-0.7RC1]# ./configure –with-mysql=/usr/local/ –with-openssl –with-pam=/usr –with-pam-mods-dir=/usr/lib64/security
报错:configure: error: Cannot locate mysql client library. Please check your mysql installation.
[root@localhost pam_mysql-0.7RC1]# ln -s /usr/local/mysql /usr/lib64/mysql/
[root@localhost pam_mysql-0.7RC1]# ln -s /usr/local/mysql/include/mysql /usr/include/mysql
[root@localhost pam_mysql-0.7RC1]# make && make install
[root@localhost mysql]# yum -y install vsftpd #安装vsftpd
将虚拟用户的账号存在数据库中:
[root@localhost mysql]# systemctl start mariadb
MariaDB [(none)]> create database vsftpd;
MariaDB [(none)]> use vsftpd;
Database changed
MariaDB [vsftpd]> create table users (
-> id int auto_increment not null primary key,
-> name char(30) not null,
-> password char(48) binary not null );
MariaDB [vsftpd]> desc users;
+———-+———-+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+———-+———-+——+—–+———+—————-+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | char(30) | NO | | NULL | |
| password | char(48) | NO | | NULL | |
+———-+———-+——+—–+———+—————-+
3 rows in set (0.00 sec)
MariaDB [vsftpd]> insert into users(name,password) values (‘jerry’,password(‘123456’));
MariaDB [vsftpd]> flush privileges;
MariaDB [vsftpd]> grant select on vsftpd.* to ‘vsftpd’@’192.%.%.%’ identified by ‘magedu’;
编辑pam文件
[root@localhost ~]# vim /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=vsftpd passwd=mageedu host=192.168.68.150 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=mageedu host=192.168.68.150 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
创建系统用户
[root@localhost ~]# useradd -s /sbin/nologin -d /ftproot/ vuser
[root@localhost ~]# chown vuser:vuser /ftproot/
[root@localhost ~]# ll -d /ftproot/
drwxr-xr-x. 2 vuser vuser 6 Nov 19 22:01 /ftproot/
配置/etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.mysql
anon_upload_enable=NO #不允许匿名用户上传文件
anonymous_enable=YES#允许匿名用户访问
chroot_local_user=YES #禁锢所有用户于其家目录当中
max_clients=200#限制最大并发连接数200
anon_max_rate=512000#匿名用户的最大传输速率512KB
guest_enable=YES #允许来宾账号登录
guest_username=vuser#指定来宾账户名
然后重启vsftpd
systemctl restart vsftpd
测试:
[root@localhost ~]# ftp 192.168.68.150
发现报错:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
网上解决方法:在vsftpd.conf中添加allow_writeable_chroot=YES
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
[root@localhost ~]# ftp 192.168.68.150
Connected to 192.168.68.150 (192.168.68.150).
220 (vsFTPd 3.0.2)
Name (192.168.68.150:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> lcd /root
Local directory now /root
ftp> put fstab
local: fstab remote: fstab
227 Entering Passive Mode (192,168,68,150,166,213).
550 Permission denied. #不能上传
ftp> get fstab
local: fstab remote: fstab
227 Entering Passive Mode (192,168,68,150,224,175).
150 Opening BINARY mode data connection for fstab (465 bytes).
226 Transfer complete.
465 bytes received in 0.000479 secs (970.77 Kbytes/sec) #能够下载
ftp> exit
221 Goodbye.
将/ftproot基于nfs共享
[root@localhost centos]# yum -y install nfs-utils
[root@localhost centos]# mkdir /ftproot
[root@localhost centos]# vim /etc/exports
/ftproot 192.168.0.0/16(rw,sync)
Ro 该主机对该共享目录有只读权限
Rw 该主机对该共享目录有读写权限
Root_squash 客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户
No_root_squash 客户机用root访问该共享文件夹时,不映射root用户
All_squash 客户机上的任何用户访问该共享目录时都映射成匿名用户
Anonuid 将客户机上的用户映射成指定的本地用户ID的用户
Anongid 将客户机上的用户映射成属于指定的本地用户组ID
Sync 资料同步写入到内存与硬盘中
Async 资料会先暂存于内存中,而非直接写入硬盘
Insecure 允许从这台机器过来的非授权访问
[root@localhost centos]# exportfs -r#使其生效
[root@localhost pam.d]# systemctl start nfs
检查:[root@localhost ~]# showmount -e 192.168.68.150
Export list for 192.168.68.150:
/ftproot 192.168.0.0/16
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88764
评论列表(1条)
写的很详细,赞