从Linux小白到大牛——与狼共舞的日子13
马哥教育网络班21期+第13周课程练习
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.82.0/24网络的主机访问;
1.安装samba [root@web ~]# yum install samba.x86_64 -y 2.添加develop组,添加指定用户 [root@web ~]# groupadd develop [root@web ~]# useradd -s /sbin/nologin -G develop gentoo [root@web ~]# echo "gentoo" | passwd --stdin gentoo [root@web ~]# useradd -s /sbin/nologin -G develop centos [root@web ~]# echo "centos"|passwd --stdin centos [root@web ~]# useradd -s /sbin/nologin ubuntu [root@web ~]# echo "ubuntu" |passwd --stdin ubuntu 3.添加samba用户 [root@web ~]# smbpasswd -a gentoo [root@web ~]# smbpasswd -a centos [root@web ~]# smbpasswd -a ubuntu 4.创建共享目录/data并设置权限 [root@web ~]# mkdir /data [root@web ~]# setfacl -m g:develop:rwx /data 5.编辑samba配置文件 [root@web ~]# vim /etc/samba/smb.conf workgroup = magedu hosts allow = 192.168.82.0/24 [shared] comment = shared path = /data public =no writable = yes valid users = ubuntu,@develop read list = ubuntu write list = @develop public = yes/no 说明:public用来指定该共享是否允许guest账户访问。 write list = 允许写入该共享的用户 说明:write list用来指定可以在该共享下写入文件的用户。 例如:write list = ubuntu,@develop valid users = 允许访问该共享的用户 说明:valid users用来指定允许访问该共享资源的用户。 例如:valid users = ubuntu,@develop(多个用户或者组中间用逗号隔开, 如果要加入一个组就用“@+组名”表示。) writable = yes/no 说明:writable用来指定该共享路径是否可写。 6.清空防火墙和seLinux [root@web ~]# iptables -F [root@web ~]# service iptables save [root@web ~]# setenforce 0 [root@web ~]# vim /etc/seLinux/config SELINUX=permissive 7.启动smb和nmb服务 [root@web ~]# service nmb start [root@web ~]# service smb start 8.使用windows和Linux客户端测试 Linux客户端 [root@web ~]# smbclient //192.168.82.58/shared -U ubuntu smb: \> mkdir aaaa NT_STATUS_MEDIA_WRITE_PROTECTED making remote directory \aaaa smb: \> ls . D0 Wed Aug 17 01:52:49 2016 .. DR0 Tue Aug 16 19:29:05 2016 aa D0 Thu Aug 11 05:02:33 2016 [root@web ~]# smbclient //192.168.82.58/shared -U gentoo smb: \> mkdir a smb: \> ls . D0 Wed Aug 17 01:52:49 2016 .. DR0 Tue Aug 16 19:29:05 2016 aa D0 Thu Aug 11 05:02:33 2016 a D0 Wed Aug 17 01:52:49 2016 39371 blocks of size 1048576. 32252 blocks available 注:Linux客户端用exit退出,Windows客户端用 net use * /del /y Windows客户端

2、搭建一套文件vsftp文件共享服务,共享目录为/ftproot,要求:(描述完整的过程)
-
1)基于虚拟用户的访问形式;
-
2)匿名用户只允许下载,不允许上传;
-
3)禁锢所有的用户于其家目录当中;
-
4)限制最大并发连接数为200:;
-
5)匿名用户的最大传输速率512KB/s
-
6)虚拟用户的账号存储在mysql数据库当中。
-
7)数据库通过NFS进行共享。
环境: RHEL6.4:ftp.example.com,192.168.82.58
RHEL6.4:mysql.example.com, 192.168.82.57
RHEL6.4:nfs.example.com, 192.168.82.56
1.在nfs上安装nfs服务并共享出mysqldata目录
[root@nfs ~]# yum install nfs-utils.x86_64
nfs-utils-lib-1.1.5-6.el6.x86_64 rpcbind-0.2.0-11.el6.x86_64 -y
[root@nfs ~]# chown 27.27 /mysqldata/
[root@nfs ~]# mkdir /mysqldata
[root@nfs ~]# vim /etc/exports
/mysqldata 192.168.82.57(rw,no_root_squash)
[root@nfs ~]# service nfs start
[root@nfs ~]# chkconfig --add nfs
[root@nfs ~]# chkconfig nfs on
2.在mysql上安装mysql服务
(1)挂载nfs共享出来的mysqldata目录
[root@mysql ~]# showmount -e 192.168.82.56
Export list for 192.168.82.56:
/mysqldata 192.168.82.57
[root@mysql ~]# mkdir /mysqldata
[root@mysql ~]# vim /etc/fstab
192.168.82.56:/mysqldata/mysqldata nfs defaults,_netdev,vers=3 0 0
[root@mysql ~]# mount -a
(2)安装mysql服务并创建数据库和表
[root@sql ~]# yum install mysql-server.x86_64 -y
[root@mysql ~]# service mysqld start
[root@mysql ~]# mysql
mysql> create database vsftpd;
mysql> grant select on vsftpd.* to vsftpd@192.168.82.58 identified by 'magedu';
mysql> flush privileges;
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'));
mysql> insert into users(name,password) values('magedu2',password('magedu'));
3.在ftp上安装vsftp和pam_mysql
(1)配置epel的yum源
[root@ftp ~]# cat /etc/yum.repos.d/mirrors.aliyun.com_epel_6Server_x86_64_.repo
[mirrors.aliyun.com_epel_6Server_x86_64_]
name=added from: http://mirrors.aliyun.com/epel/6Server/x86_64/
baseurl=http://mirrors.aliyun.com/epel/6Server/x86_64/
enabled=1
gpgcheck=0
[root@ftp ~]# yum install vsftpd.x86_64 pam_mysql.x86_64 -y
(2)创建vsftp.mysql的pam配置文件
[root@ftp ~]# vim /etc/pam.d/vsftpd.mysql
auth required /lib64/security/pam_mysql.so user=vsftpd
passwd=magedu host=192.168.82.57 db=vsftpd table=users
usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd
passwd=magedu host=192.168.82.57 db=vsftpd table=users
usercolumn=name passwdcolumn=password crypt=2
(3)创建vuser用户
[root@ftp ~]# useradd -s /sbin/nologin -d /var/ftproot vuser
[root@ftp ~]# chmod go+rx /ftproot
(4)创建vsftp用户的配置目录和配置文件
[root@ftp ~]# mkdir /etc/vsftpd/vusers_config/
[root@ftp ~]# cd /etc/vsftpd/vusers_config/
[root@ftp vusers_config]# touch magedu1 magedu2
[root@ftp vusers_config]# vim magedu1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
[root@ftp vusers_config]# vim magedu2
anon_upload_enable=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
(5)备份并编辑vsftp的配置文件
[root@ftp ~]# cp /etc/vsftpd/vsftpd.conf{,.bak}
[root@ftp ~]# grep -v '^#' /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd.mysql
userlist_enable=YES
tcp_wrappers=YES
guest_enable=yes#启用来宾用户
guest_username=vuser#来宾用户名字
user_config_dir=/etc/vsftpd/vusers_config #用户配置文件的目录
max_clients=200 #最大并发数
anon_max_rate=512 #匿名用户最大传输速率
(6)重启vsftp服务并加入开机启动列表
[root@ftp ~]# service vsftpd restart
[root@ftp ~]# chkconfig vsftpd on
(7)测试vsftp的虚拟用户和匿名用户
测试ftp匿名用户,可以下载不能上传
[root@ftp ~]# ftp 192.168.82.58
Connected to 192.168.82.58 (192.168.82.58).
220 (vsFTPd 2.2.2)
Name (192.168.82.58:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,82,58,201,37).
150 Here comes the directory listing.
drwxr-xr-x2 004096 Aug 17 09:04 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.
ftp> put /aa
local: /aa remote: /aa
227 Entering Passive Mode (192,168,82,58,64,156).
550 Permission denied.
ftp> get aa
local: aa remote: aa
227 Entering Passive Mode (192,168,82,58,143,3).
150 Opening BINARY mode data connection for aa (0 bytes).
226 Transfer complete.
测试magedu1用户可以上传,下载,删除等
[root@ftp ~]# ftp 192.168.82.58
Connected to 192.168.82.58 (192.168.82.58).
220 (vsFTPd 2.2.2)
Name (192.168.82.58:root): magedu1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put aa
local: aa remote: aa
227 Entering Passive Mode (192,168,82,58,29,124).
150 Ok to send data.
226 Transfer complete.
ftp> get aa
local: aa remote: aa
227 Entering Passive Mode (192,168,82,58,53,196).
150 Opening BINARY mode data connection for aa (0 bytes).
226 Transfer complete.
ftp> delete aa
250 Delete operation successful.
