歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> centos 6.0 vsftpd虛擬用戶配置總結

centos 6.0 vsftpd虛擬用戶配置總結

日期:2017/3/3 16:27:45   编辑:關於Linux

如果你已經對pam有所了解,請跳過,我知道的可能還不如你多。你不感興趣也請跳過,因為不看這個也可配置。

用戶 <-> vsftpd <-> PAM模塊 <-> 用戶和密碼數據庫

vsftpd用了一種很聰明同時也是unix/linux規范的方法來認證用戶,就是PAM。大家對於PAM,也許有些陌生,但是一直在用。所謂PAM,英文是:Pluggable Authentication Modules,可拔插認證模 塊(不知道這樣翻譯對不對)。看見plug這個關鍵字,就知道是很靈活的。

現在幾乎所有daemon程序一般都是用PAM來進行認證的,包括telnet/sshd/imapd,甚至你的login,都是用PAM

PAM的最大好處是靈活。它不管你的用戶和密碼用什麼數據格式存儲(數據庫也好,通常用的密碼文件也好),只要有相應的PAM模塊就可以存儲。比如說,大家不僅可以用vsftpd + PgSQL做用戶登陸 驗證,只要你喜歡你還可以用MySQL,Oracle,LDAP數據庫存儲用戶數據,只要有相應的PAM就可以。所有的daemon都可以用一個後台數據庫來做用戶驗證登陸,包括telnet/sshd等等。

1.系統版本為centos6.0,直接用yum來安裝vsftpd

[root@localhost ~]#yum -y install vsftpd db4-devel db4 db4-utils pam-devel pam pam_pkcs11 ftp //安裝軟件和vsftpd

2.[root@localhost ~]#chkconfig vsftpd on//開機2345啟動vsftpd服務

3.[root@localhost ~]#cp -rf /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.1//備份一下vsftpd.conf為vsftpd.conf.1

4.[root@localhost ~]#grep -v "#" /etc/vsftpd/vsftpd.conf.1>/etc/vsftpd/vsftpd.conf//去除#號重定向到/etc/vsftpd/vsftpd.conf文件中。

5.[root@localhost ~]#cat /etc/vsftpd/vsftpd.conf//vsftpd.conf內容如下:

anonymous_enable=NO#設定不允許匿名訪問

local_enable=YES#設定本地用戶可以訪問。注:如使用虛擬宿主用戶,在該項目設定為NO的情況下所有虛擬用戶將無法訪問。

#chroot_list_enable=YES #使用戶不能離開主目錄我這句是沒加入的加入就登錄不了不知道為什麼?

write_enable=YES

local_umask=022//生成掩碼為022

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_file=/var/log/vsftpd.log#設定vsftpd的服務日志保存路徑。注意,該文件默認不存在。必須要手動touch出來

xferlog_std_format=YES

ascii_upload_enable=YES #允許使用ASCII模式上傳

ascii_download_enable=YES #設定支持ASCII模式的上傳和下載功能。

listen=YES

guest_enable=YES#設定啟用虛擬用戶功能

guest_username=vritual#指定虛擬用戶的宿主用戶。-RHEL/CentOS中已經有內置的ftp用戶了我這裡是自己創建的vritual

pam_service_name=vsftpd#PAM認證文件名。PAM將根據/etc/pam.d/vsftpd進行認證

user_config_dir=/etc/vsftpd/vuser_conf#設定虛擬用戶個人vsftp的RHEL/CentOS FTP服務文件存放路徑。存放虛擬用戶個性的CentOS FTP服務文件(配置文件名=虛擬用戶名)

virtual_use_local_privs=YES

6.創建vsftpd密碼文件

[root@localhost ~]#vi /etc/vsftpd/vsftpd.login.txt//一行為用戶名另外一行為密碼。

zhh

123456

user1

user1

user2

user2

user3

user3

user4

user4

user5

user5

7.[root@localhost ~]#db_load -T -t hash -f /etc/vsftpd/vsftpd.login.txt /etc/vsftpd/vsftpd.login.db//生成vsftpd.login.db文件chmod 700權限。

8.[root@localhost ~]#vi /etc/pam.d/vsftpd//這個文件最前面添加vsftpd.login最好添加在最前面。

#%PAM-1.0

auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd.login//第一句

account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd.login//第二句

session optional pam_keyinit.so force revoke

auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

auth required pam_shells.so

auth include password-auth

account include password-auth

session required pam_loginuid.so

session include password-auth

~

9.[root@localhost ~]#mkdir /etc/vsftpd/vuser_conf/ //創建vuser_conf文件夾

10.[root@localhost ~]#vi /etc/vsftpd/vuser_conf/zhh//創建虛擬用戶個性RHEL/CentOS FTP服務文件

local_root=/home/ftpsite/zhh//虛擬用戶的根目錄(根據實際修改)

write_enable=YES可寫

anon_umask=022掩碼

anon_world_readable_only=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

11.[root@localhost ~]#useradd -d /home/ftpsite/ -s /sbin/nologin vritual //建立虛擬賬號

12.[root@localhost ~]#touch /var/log/vsftpd.log

13.[root@localhost ~]# service vsftpd start//啟動vsftpd服務

14.[root@localhost ftp]# ftp localhost//登錄ftp

Trying ::1...

ftp: connect to address ::1Connection refused

Trying 127.0.0.1...

Connected to localhost (127.0.0.1).

220 (vsFTPd 2.2.2)

Name (localhost:root): zhh

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> mkdir zhh

257 "/home/ftpsite/zhh" created

15.常見問題:

553 Could not create file

一般都是SELinux的問題,設置SELinux的一個值,重啟服務器即可。

setsebool -P ftpd_disable_trans 1

service vsftpd restart

500 OOPS: bad bool value in config file for: write_enable

注意你的CentOS FTP服務文件中保證每一行最後沒有任何空格,一般出錯就是在多余的空格上。

虛擬用戶上傳後默認權限為:600,用戶無法下載文件

在配置文件中添加或修改anon_umask項的值。如anon_umask=022或000

使用命令添加ftp用戶

添加ftp用戶,命令格式:

#adduser -d /目錄路徑 -g ftp -s /sbin/nologin 用戶名

如何把帳號ftp默認的路徑/var/ftp更改到別處?或者是,我的linux所有的目錄都放在/根分區,因為空間緊張,我能否把ftp這個用戶的默認路徑放到別的分區??

對於ftp這個用戶的管理,我們應該查看/etc/passwd ,然後修改ftp用戶那行;

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

比如我們想把ftp用戶的家目錄改為,則要把類似上一行改為

ftp:x:14:50:FTP User:/在這裡修改就行了/ftp:/sbin/nologin

然後我們要建立ftp用戶的新的家目錄。

疑問:

創建chroot list,將ftp用戶加入其中://這個起到什麼作用不清楚所以沒添加。

touch /etc/vsftpd/chroot_list

echo ftp >> /etc/vsftpd/chroot_list

16.最後為了方便大家自己寫了一個shell給大家加上附件,如果不符合要求可以自己自行修改參數。

#!/bin/sh

yum -y install vsftpd db4-devel db4 db4-utils pam-devel pam pam_pkcs11 ftp

chkconfig vsftpd on

cp -rf /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.1

cp -rf /root/ftp/vsftpd.conf /etc/vsftpd

cp -rf /root/ftp/vsftpd /etc/pam.d/

cp -rf /root/ftp/vuser_conf /etc/vsftpd

cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user1

cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user2

cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user3

cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user4

cp -rf /etc/vsftpd/vuser_conf/zhh /etc/vsftpd/vuser_conf/user5

db_load -T -t hash -f /root/ftp/vsftpd.login.txt /root/ftp/vsftpd.login.db

mv /root/ftp/vsftpd.login.db /etc/vsftpd/

useradd -d /home/ftpsite vritual

service vsftpd start

ftp localhost

本文出自 “有志者事竟成!” 博客,請務必保留此出處http://zh888.blog.51cto.com/1684752/793761

Copyright © Linux教程網 All Rights Reserved