1、目標
首先我們假定你已經安裝了vsftpd,並在/home/ftp目錄下建立了以下3個子目錄
下面,我們要建3個虛擬使用者,密碼分別是使用者名稱後加"00"
使得 2.1建立文字檔案loguser.txt
//此檔案用於後邊生成使用者名稱密碼資料庫
格式如下:
user_id於是,我們/home/loguser.txt檔案的內容為password
db1如果你以前沒裝過libdb4.6-util 或者你不清楚裝沒裝,需先執行下面的命令db100
db2
db200
db3
db300
sudo apt-get install db4.6-util然後,我們執行
sudo db4.6_load -t -t hash -f /home/loguser.txt /etc/vsftpd_login.db//這步就是將剛才寫的文字文件轉換成資料庫的形式
最後設定一下資料庫檔案的訪問許可權
sudo chmod 600 /etc/vsftpd_login.db配置pam檔案
新建/etc/pam.d/vsftpd.vu 內容如下:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login新建乙個系統使用者virtual,使用者家目錄為/home/virtual, 使用者登入終端設為/bin/false(即使之不能登入系統)account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
之後我們通過在/etc/vsftpd.conf配置檔案中寫入pam_service_name=vsftpd.vu來呼叫上邊寫的這個配置檔案
(pam_service_name=vsftpd這是預設設定,用於本地使用者登入)
sudo useradd virtual -d /home/ftp -s /bin/false根據需要建立/etc/vsftpd.conf,一般要確保含有以下設定:sudo chown virtual:virtual /home/ftp
listen=yes現在為止,我們的3個使用者都可以工作了,可是它們的根目錄現在都是/home/virtual,許可權也都一樣。anonymous_enable=no
dirmessage_enable=yes
xferlog_enable=yes
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=yes
chroot_local_user=yes
//上句的作用是只允許登入的使用者訪問自己的家目錄,不能向上訪問/home或根目錄等
guest_enable=yes
guest_username=virtual
user_config_dir=/etc/vsftpd_user_conf
//我遇到的問題就在這句,這句中的vsftpd_user_conf目錄一定要在/etc下,不能在/etc/***/下,否則無效
pam_service_name=vsftpd.vu
//預設是pam_service_name=vsftpd
local_enable=yes
//上句可以是本地使用者登入
secure_chroot_dir=/var/run/vsftpd
那麼怎麼才能完成我們預定的目標呢?
5、配置/etc/vsftpd_user_conf
在上面的配置中,有這麼一行
user_config_dir=/etc/vsftpd_user_conf//虛擬使用者的最大好處就是可以通過對每個使用者應用不通配置檔案來進行管理,每個使用者的配置檔案都放在該目錄下
現在,我們要把各個使用者的配置檔案放到目錄/etc/vsftpd_user_conf中
sudo mkdir /etc/vsftpd_user_confdb1檔案中的內容如下cd /etc/vsftpd_user_conf
sudo touch db1 db2 db3
local_root=/home/ftp/dbzh1同樣,db2檔案中的內容
local_root=/home/ftp/dbzh2那麼,db3的內容呢? 其實也很簡單
write_enable=yes//我遇到的第二個問題是配置檔案,如果發現當登入之後執行ls出現500:oop 不合法的bool值這類錯誤時,基本都是配置檔案anon_world_readable_only=no
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
local_root=/home/ftp/dbzh1
的問題,我就是在配置檔案的某些行最後多了一些空格導致了這個錯誤。同時需要將每個虛擬使用者的個人目錄的組和所有者
更為virual,執行chown virtual.virtual 目錄名
重啟vsftpd我們就可以看到效果了^_^
/etc/init.d/vsftpd start|restart500 oops: cannot change directory:
linux開啟ftp遇到的問題 500 oops: cannot change directory:
google好多都是 執行這個就ok setsebool ftpd_disable_trans 1 service vsftpd restart
但是執行的時候遇到這個問題 could not change active booleans: invalid boolean搜了好久終於解決
setsebool -p ftp_home_dir=1壹、#db_load -t -t hash -f ./logins.txt ./vsftpd_login.db 更新帳號//這個問題也可以通過修改/etc/selinux/config來實現,將其中的selinux=***(***是安全級別),改為selinux=disabled,不過
這樣將是selinux完全失效。
最後我還有乙個問題沒有解決,應為我的虛擬使用者有十個,我將所有使用者寫到了loguser.txt中,不過最後登入的時候只能實現
部分使用者登入,有些使用者無法登入,尚未解決。
貳、更新vsftpd/virtual/下對應的許可權
叄、/sbin/service vsftpd restart
ubuntu下將vsftpd配置成虛擬使用者訪問方式
touch loguser.txt vim loguser.txt 將使用者名稱 密碼一行一行地填寫,比如使用者名為usera,密碼為123456,那麼,loguser.txt的內容是 usera 123456 2.根據loguser.txt檔案建立虛擬使用者資料庫 db4.8 load t t h...
Ubuntu下配置vsftpd服務
一。安裝vsftp和db4 sudo apt get install vsftpd sudo apt get install db4.6 util 二。建立虛擬使用者口令庫檔案 sudo mkdir etc vsftpd 新建名為logins.txt的使用者口令檔案,sudo gedit etc v...
Ubuntu下配置vsftpd服務
一。安裝vsftp和db4 sudo apt get install vsftpd sudo apt get install db4.6 util 二。建立虛擬使用者口令庫檔案 sudo mkdir etc vsftpd 新建名為logins.txt的使用者口令檔案,sudo gedit etc v...