2011年3月5日 星期六

Ubuntu vsftpd安裝

1.      安裝所需的元件
$sudo apt-get install vsftpd
$sudo apt-get install mysql-server mysql-client
$sudo apt-get install libpam-mysql
$sudo apt-get install libmysqlclient15-dev
$sudo apt-get install libpam0g-dev
2.      建立資料庫
建立vsftpd這個資料庫
CREATE DATABASE IF NOT EXISTS `vsftpd`;
建立users資料表
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 30 ) NOT NULL ,
`password` VARCHAR( 50 ) NOT NULL ,
UNIQUE (`username`)
) ENG

INE = MYISAM ;

users插入一筆資料
INSERT INTO `users` (`username` ,`password`) VALUES ('user', PASSWORD('pass'));

3.      添加虛擬帳戶
這裡假定用戶名稱virtual
$sudo useradd -d /home/virtual -s /bin/false virtual
(-s /bin/false是讓其不能登陸系統,-d /home/ftp是指定用戶目錄)

設置virtual密碼
$sudo passwd virtual

修改virtual/home/virtual的權限
$chown -R virtual:virtual /home/virtual
$ chmod -R 700 /home/vitual




4.      修改vsftpd配置文件
$sudo vim /etc/vsftpd.conf

#伺服器以standalong模式運行,這樣可以進行下面的控制
listen=YES
listen_port=21
#接受匿名用戶
anonymous_enable=NO
#匿名用戶login時不詢問密碼
no_anon_password=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
#匿名用戶的傳輸比率(b/s)
anon_max_rate=51200
#
本地用戶的傳輸比率(b/s)
local_max_rate=512000
#可接受的最大client數目
max_clients=10
#每個ip的最大client數目
max_per_ip=5
#接受本地用戶
local_enable=YES
write_enable=YES
#本地用戶上傳文件的umask
local_umask=022
#YES則進入目錄時顯示此目錄下由message_file選項指定的文本文件(,默認為.message)的內容
dirmessage_enable=YES
tcp_wrappers=YES
use_localtime=YES
xferlog_enable=YES
#使用上傳/下載log,日誌文件默認為/var/log/vsftpd.log
xferlog_file=/var/log/vsftpd.log
connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=120
xferlog_std_format=YES
#login時的歡迎信息
ftpd_banner= Welcome to ES712 FTP service.
pam_service_name=vsftpd
guest_enable=YES
guest_username=virtual
user_config_dir= /etc/vsftpd_user_config
user_sub_token=$USER
virtual_use_local_privs=YES
#設置為YES則下面的控制有效
chroot_list_enable=YES
#若為 NO,則記錄在chroot_list_file選項所指定的文件(默認是/etc/vsftpd.chroot_list)中的用戶將被chroot 登錄後所在目錄中,無法離開.如果為YES,則所記錄的用戶將不被chroot.這裡選擇YES.(管理員使用居多)
chroot_local_user=YES
ls_recurse_enable=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999



5.      修改vsftpdpam認證
$sudo vim /etc/pam.d/vsftpd

把裡面原有的內容全部刪除(如果有內容),添加如下nameaccount兩行內容,其中:
user: 登入資料庫用戶名
passwd: 登入資料庫用戶密碼
host: 數據庫主機
db: 用戶資料庫
table: 表格名稱(users)
usercolumn: 對應用戶列名(username)
passwdcolumn: 對應密碼列名(passwd)
crypt: 加密方式(2)

auth required /lib/security/pam_mysql.so user=vsftpd passwd=123 host=localhost db=vsftpd table=users usercolumn=username passwdcolumn= password crypt=2

account required /lib/security/pam_mysql.so user=vsftpd passwd=123 host=localhost db=vsftpd table=users usercolumn=username passwdcolumn= password crypt=2

crypt 的值說明:
0: 在數據庫中明文存儲;
1: 使用crypt()函數加密存儲;
2: 使用MySQL PASSWORD()函數加密存儲;
3: 表示使用md5的散列方式
4: 代表sha加密




6.      配置個人帳戶
/etc/vsftpd_user_config/中建立用戶個人配置文件,文件名為用戶名

rene :
local_root=/home/virtual/rene
anon_world_readable_only=YES

normal :
local_root=/home/virtual/rene
write_enable=YES
download_enable=NO
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022

admin :
local_root=/home/virtual/rene
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022




7.      重啟動與測試
重新啟動vsftpd
$ sudo /etc/init.d/vsftpd restart

測試ftp
$ftp 127.0.0.1
Connected to 127.0.0.1.
220 Welcome to FTP service.
User (127.0.0.1:(none)): vuser_1
331 Please specify the password.
Password:
230 Login successful.
ftp>

沒有留言:

張貼留言