網絡文件共享服務之虛擬用戶小實驗

實驗1、實現基於文件驗證的vsftpd虛擬用戶mysql

實驗工具:主機centos7  測試機centos6sql

步驟以下:數據庫

一、建立用戶數據庫文件vim

[root@centos7 ~]# cd /etc/vsftpd/ [root@centos7 /etc/vsftpd]# vim vusers.txt (建立一個存儲用戶及密碼的文本) hehe 123456 haha 234567 xixi 345678 [root@centos7 /etc/vsftpd]# db_load -T -t hash -f vusers.txt vusers.db (轉換文本格式) [root@centos7 /etc/vsftpd]# ll -l vusers.db -rw-r--r--. 1 root root 12288 Oct 26 17:36 vusers.db [root@centos7 /etc/vsftpd]# chmod 600 vusers.db (爲了帳戶安全,權限設嚴謹一點) [root@centos7 /etc/vsftpd]# ll -l vusers.db -rw-------. 1 root root 12288 Oct 26 17:36 vusers.db

二、建立用戶和訪問FTP目錄centos

[root@centos7 /etc/vsftpd]# useradd -d /var/ftproot -s /sbin/nologin vuser (haha、hehe、xixi映射爲vuser帳號) [root@centos7 /etc/vsftpd]# chmod +rs /var/ftproot/ [root@centos7 /etc/vsftpd]# chmod -w /var/ftproot/ [root@centos7 /etc/vsftpd]# mkdir /var/ftproot/upload [root@centos7 /etc/vsftpd]# setfacl -m u:vuser:rwx /var/ftproot/upload/  (給用戶vuser讀寫執行權限)

三、建立pam配置文件安全

[root@centos7 /etc/vsftpd]# vim /etc/pam.d/vsftpd.db  auth required pam_userdb.so db=/etc/vsftpd/vusers (實名驗證須要.so文件,此文件路徑存放於db變量裏,pam_userdb.so模塊用來驗證用戶身份)
   account required pam_userdb.so db=/etc/vsftpd/vusers   (帳號有效性也是經過此模塊驗證)

四、指定pam配置文件服務器

[root@centos7 /etc/vsftpd]# vim vsftpd.conf  guest_enable=yes (啓用映射) guest_username=vuser (指定映射用戶名) pam_service_name=vsftpd.db

五、虛擬用戶創建獨立的配置文件app

[root@centos7 /etc/vsftpd]# mkdir vusers.d [root@centos7 /etc/vsftpd]# vim vsftpd.conf user_config_dir=/etc/vsftpd/vusers.d (設置每一個用戶加上獨立的權限,用戶的獨立文件存放於此路徑) [root@centos7 /etc/vsftpd/vusers.d]# vim hehe anon_upload_enable=yes (容許上傳) anon_mkdir_write_enable=yes (容許新建文件夾) anon_other_write_enable=yes [root@centos7 /etc/vsftpd/vusers.d]# vim haha local_root=/ftproot (登陸目錄改變爲指定的目錄)

六、重啓服務ide

[root@centos7 /etc/vsftpd/vusers.d]# systemctl restart vsftpd

七、測試函數

  ①hehe用戶進行測試

[root@centos6 ~]# ftp 192.168.152.167 Connected to 192.168.152.167 (192.168.152.167). 220 (vsFTPd 3.0.2) Name (192.168.152.167:root): hehe 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,152,167,22,251). 150 Here comes the directory listing. drwxrwsr-x 2 0 1016 20 Oct 26 11:46 upload 226 Directory send OK. ftp> cd upload 250 Directory successfully changed. ftp> put f1.awk local: f1.awk remote: f1.awk 227 Entering Passive Mode (192,168,152,167,58,155). 150 Ok to send data. 226 Transfer complete. 41 bytes sent in 7.6e-05 secs (539.47 Kbytes/sec) ftp> exit 221 Goodbye.

  ②xixi用戶進行測試

[root@centos6 ~]# ftp 192.168.152.167 Connected to 192.168.152.167 (192.168.152.167). 220 (vsFTPd 3.0.2) Name (192.168.152.167:root): xixi 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,152,167,191,50). 150 Here comes the directory listing. drwxrwsr-x 2 0 1016 20 Oct 26 11:46 upload 226 Directory send OK. ftp> cd upload 250 Directory successfully changed. ftp> put f1.awk local: f1.awk remote: f1.awk 227 Entering Passive Mode (192,168,152,167,191,205). 550 Permission denied. (由於xixi沒有創建獨立的配置文件,因此拒絕,默認不能上傳) ftp> exit 221 Goodbye.

實驗2、實現基於MYSQL驗證的vsftpd虛擬用戶

實驗說明:本實驗在兩臺centos主機上實現,一臺作爲FTP服務器,一臺作數據庫服務器

工具:主機 centos7(mairadb server)  主機 centos6(ftp server) 主機Centos6-1(測試機)

步驟以下:

一、安裝實驗所需包

 ①Centos7:安裝數據庫包

[root@centos7 ~]# yum install mariadb-server (安裝) [root@centos7 ~]# systemctl start mariadb  (啓動服務)
②Centos6:安裝vsftpd和pam_mysql包
[root@centos6 ~]# yum install vsftpd [root@centos6 ~]# yum install pam_mysql(centos7不支持pam-mysql模塊,須要編譯安裝)

二、在數據庫服務器(centos7)上建立虛擬用戶帳號

   ①創建存儲虛擬用戶數據庫和鏈接的數據庫用戶

[root@centos7 ~]# mysql_secure_installation (爲了安全,設密碼) [root@centos7 ~]# mysql -uroot -p (登陸並建立虛擬帳號) Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 5.5.52-MariaDB MariaDB Server Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> creat database vsftpd; (建立數據庫) ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'creat database vsftpd' at line 1 MariaDB [(none)]> create database vsftpd; Query OK, 1 row affected (0.00 sec)
②準備相關表
MariaDB [(none)]
> use vsftpd; (使用數據庫) Database changed MariaDB [vsftpd]> create table ftpusers (name char(30),pass char(50)); (建立數據表) Query OK, 0 rows affected (0.01 sec)
③添加虛擬用戶
MariaDB [vsftpd]
> insert ftpusers values('hehe',password('123456')),('haha',password('234567')); (設用戶) Query OK, 2 rows affected (0.01 sec) Records: 2 Duplicates: 0 Warnings: 0 MariaDB [vsftpd]> grant select on vsftpd.ftpusers to 'ftp'@'192.168.152.166' identified by '123456'; Query OK, 0 rows affected (0.00 sec) (授予ftp用戶查詢權限)
MariaDB [vsftpd]> select * from ftpusers; +------+-------------------------------------------+ | name | pass | +------+-------------------------------------------+ | hehe | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | haha | *FD408300A2CBA95D1FCBB97C4E21D38D4B7E446D | +------+-------------------------------------------+ 2 rows in set (0.00 sec) MariaDB [vsftpd]>

三、在FTP服務器(centos6)上配置vsftp服務

  ①在FTP服務器上創建pam認證所需文件

[root@centos6 ~]# cd /etc/pam.d/ [root@centos6 /etc/pam.d]# vim vsftpd.mysql auth required pam_mysql.so user=ftp passwd=123456 host=192.168.152.166 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=pass crypt=2 account required pam_mysql.so user=ftp passwd=123456 host=192.168.152.166 db=vsftpd table=ftpusers usercolumn=name passwdcolumn=pass crypt=2
crypt是一種加密方式,2表示使用mysql password()函數加密

  ②創建相應用戶和修改vsftpd配置文件,使其適應mysql認證創建虛擬用戶映射的系統用戶及對應的目錄

[root@centos6 /etc/pam.d]# useradd -d /app/ftpdir -r -m ftpuser (建立用戶) [root@centos6 /etc/pam.d]# ll -d /app/ftpdir/ drwx------. 4 ftpuser ftpuser 4096 Oct 26 21:33 /app/ftpdir/ [root@centos6 /etc/pam.d]# chmod -w /app/ftpdir/ (減去寫權限) [root@centos6 /etc/pam.d]# vim /etc/vsftpd/vsftpd.conf pam_service_name=vsftpd.mysql (修改此行,原系統用戶沒法登陸) guest_enable=yes guest_username=ftpuser user_config_dir=/etc/vsftpd/conf.d/ [root@centos6 ~]# mkdir /etc/vsftpd/conf.d (建立配置文件中指定的目錄) [root@centos6 ~]# cd /etc/vsftpd/conf.d/ [root@centos6 /etc/vsftpd/conf.d]# vim hehe (修改hehe用戶配置) anon_upload_enable=yes (容許匿名用戶上傳) [root@centos6 /etc/vsftpd/conf.d]# vim haha local_root=/app/hahadir [root@centos6 /etc/vsftpd/conf.d]# mkdir /app/hehedir [root@centos6 /etc/vsftpd/conf.d]# chmod 555 /app/hehedir/ [root@centos6 /etc/vsftpd/conf.d]# mkdir /app/hehedir/upload [root@centos6 /etc/vsftpd/conf.d]# chown ftpuser /app/hehedir/upload/ [root@centos6 /etc/vsftpd/conf.d]# mkdir /app/hahadir [root@centos6 /etc/vsftpd/conf.d]# chmod 555 /app/hahadir/

四、啓動vsftpd服務

[root@centos6 /etc/vsftpd/conf.d]# service vsftpd start Starting vsftpd for vsftpd: [ OK ] [root@centos6 /etc/vsftpd/conf.d]# chkconfig vsftpd on [root@centos6 /etc/vsftpd/conf.d]# ss -ntl |grep :21 LISTEN 0      32                        *:21                       *:*    

五、測試

[root@centos6-1 ~]# ftp 192.168.152.166 Connected to 192.168.152.166 (192.168.152.166). 220 (vsFTPd 2.2.2) Name (192.168.152.166:root): hehe 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,152,166,186,189). 150 Here comes the directory listing. drwxr-xr-x    2 0        0            4096 Sep 28 01:12 pub 226 Directory send OK. ftp> 

 好啦,實驗完成,你們有什麼問題的話能夠提交評論哦~

相關文章
相關標籤/搜索