一、vsftp安裝
yum -y install vsftpd # 安裝vsftpd
chkconfig vsftpd on # 開啟啟動
二、vsftp相關命令
service vsftpd start # 啟動ftp服務
service vsftpd status # 查看ftp服務狀態
service vsftpd restart # 重啟ftp服務
service vsftpd stop # 關閉ftp服務
三、vsftp配置
vim /etc/vsftpd/vsftpd.conf #進入vsftpd配置文件
anonymous_enable=NO # 禁止匿名用戶anonymous登錄
local_enable=YES # 允許本地用戶登錄
write_enable=YES # 讓登錄的用戶有寫權限(上傳,刪除)
local_umask=022 # 默認umask
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=NO # 把傳輸記錄的日志保存到/var/log/vsftpd.log
ascii_upload_enable=YES # 允許ASCII模式上傳
ascii_download_enable=YES # 允許ASCII模式下載
connect_from_port_20=YES # 使用20號端口傳輸數據
ftpd_banner=Welcome to use my test ftp server. # 歡迎標語
# chroot_local_user設置了YES,那么所有的用戶默認將被chroot, 也就用戶目錄被限制在了自己的home下,無法向上改變目錄。
# chroot_list_enable設置了YES,即讓chroot用戶列表有效。
# ★超重要:如果chroot_local_user設置了YES,那么chroot_list_file 設置的文件里,是不被chroot的用戶(可以向上改變目錄)
# ★超重要:如果chroot_local_user設置了NO,那么chroot_list_file 設置的文件里,是被chroot的用戶(無法向上改變目錄)
# touch /etc/vsftpd/chroot_list 新建
chroot_list_file=/etc/vsftpd/chroot_list
use_localtime=YES
listen=YES # 以standalone模式在ipv4上運行
# PAM認證服務名,這里默認是vsftpd,在安裝vsftpd的時候已經創建了這個pam文件,
# 在/etc/pam.d/vsftpd,根據這個pam文件里的設置,/etc/vsftpd/ftpusers
# 文件里的用戶將禁止登錄ftp服務器,比如root這樣敏感的用戶,所以你要禁止別的用戶
# 登錄的時候,也可以把該用戶追加到/etc/vsftpd/ftpusers里。
pam_service_name=vsftpd
service vsftpd restart # 重啟 vsftpd
四、vsftp用戶
sudo useradd -d /home/ftp ysj # 創建用戶
chown -R username /home/ftp # 設置用戶到文件夾
usermod –s /sbin/nologin ysj /禁止用戶登錄系統
chown -R 777 /home/ftp /設置該文件的權限
passwd ysj -> 密碼 -> 確認密碼 # 添加密碼
訪問ftp時字符亂碼問題:
1.修改LANG環境變量 [root@centos ~]vim /etc/sysconfig/i18n
LANG =“zh_CN.UTF-8”
查看相關字符集命令[root@centos ~]# locale
瀏覽器默認為Unicode(UTF-8)
配置vsftpd使不同的虛擬用戶使用不同的目錄
需求:
t1 只能上傳文件
t2 只能下載文件
t3 上傳下載文件,同時可以創建文件夾,修改文件的名稱
1創建文本文件loguser.txt
格式如下:
user_id
password
創建建3個虛擬用戶,密碼是與用戶名相同,創建虛擬用戶數據庫
於是,我們/etc/vsftpd/login.txt文件的內容為
t1
111
t2
222
t3
333
2 生成數據庫
如果你以前沒裝過libdb4.7-util 或者你不清楚裝沒裝,需先執行下面的命令
rpm-qa |grep db4
然后,我們執行
db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/vsftpd_login.db
最后設置一下數據庫文件的訪問權限
chmod 600 /etc/vsftpd/vsftpd_login.db
3 配置PAM文件
新建/etc/pam.d/vsftpd 內容如下:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
我們上一步建立的數據庫 vsftpd_login 在此處被使用
我們建立的虛擬用戶將采用PAM進行驗證,這是通過/etc/vsftpd.conf文件中的 語句pam_service_name=vsftpd來啟用的,稍后你將發現。
4為虛擬用戶創建本地系統用戶
新建一個系統用戶ftp,用戶家目錄為/home/ftp, 用戶登錄終端設為/bin/false(即使之不能登錄系統)
useradd ftp -d /home/ftp -s /sbin/nologin
chown ftp:ftp /home/ftp
5根據需要創建/etc/vsftpd.conf,一般要確保含有以下設置:
listen=YES
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd
local_enable=YES
secure_chroot_dir=/var/run/vsftpd
現在為止,我們的3個用戶都可以工作了,可是它們的根目錄現在都是/home/ftp,權限也都一樣。 那么怎么才能完成我們預定的目標呢?
在上面的配置中,有這么一行
user_config_dir=/etc/vsftpd_user_conf
現在,我們要把各個用戶的配置文件放到目錄/etc/vsftpd_user_conf中
mkdir /etc/vsftpd_user_conf
cd /etc/vsftpd_user_conf
touch t1 t2 t3
t1文件中的內容如下
anon_world_readable_only=no
local_root=/home/ftp/t1
write_enable=yes
anon_upload_enable=yes
download_enable=no
anon_mkdir_write_enable=no
anon_other_write_enable=no
同樣,t2文件中的內容
anon_world_readable_only=no
local_root=/home/ftp/t2
write_enable=no
anon_upload_enable=no
anon_mkdir_write_enable=no
anon_other_write_enable=no
那么,t3的內容呢? 其實也很簡單
anon_world_readable_only=no
write_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
local_root=/home/ftp/t3
這里要注意不能有空格,不然登錄的時候會提示出錯。
重啟vsftpd我們就可以看到效果了
/etc/init.d/vsftpd restart
PS:千萬別忘了修改文件夾t1,t2,t3的訪問權限。
chown ftp:ftp /home/ftp/t1
chown ftp:ftp /home/ftp/t2
chown ftp:ftp /home/ftp/t3
或者使用命令
chown -R ftp:ftp /home/ftp
修改ftp下的所有文件夾的訪問屬性。