ubuntu下vsftpd虛擬使用者配置

2021-05-21 12:45:25 字數 3544 閱讀 7200

1、目標

首先我們假定你已經安裝了vsftpd,並在/home/ftp目錄下建立了以下3個子目錄

下面,我們要建3個虛擬使用者,密碼分別是使用者名稱後加"00"

使得 2.1建立文字檔案loguser.txt

//此檔案用於後邊生成使用者名稱密碼資料庫

格式如下:

user_id

password

於是,我們/home/loguser.txt檔案的內容為

db1

db100

db2

db200

db3

db300

如果你以前沒裝過libdb4.6-util 或者你不清楚裝沒裝,需先執行下面的命令

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

account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

之後我們通過在/etc/vsftpd.conf配置檔案中寫入pam_service_name=vsftpd.vu來呼叫上邊寫的這個配置檔案

(pam_service_name=vsftpd這是預設設定,用於本地使用者登入)

新建乙個系統使用者virtual,使用者家目錄為/home/virtual, 使用者登入終端設為/bin/false(即使之不能登入系統)

sudo useradd virtual -d /home/ftp -s /bin/false

sudo chown virtual:virtual /home/ftp

根據需要建立/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

//上句的作用是只允許登入的使用者訪問自己的家目錄,不能向上訪問/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

現在為止,我們的3個使用者都可以工作了,可是它們的根目錄現在都是/home/virtual,許可權也都一樣。

那麼怎麼才能完成我們預定的目標呢?

5、配置/etc/vsftpd_user_conf

在上面的配置中,有這麼一行

user_config_dir=/etc/vsftpd_user_conf

//虛擬使用者的最大好處就是可以通過對每個使用者應用不通配置檔案來進行管理,每個使用者的配置檔案都放在該目錄下

現在,我們要把各個使用者的配置檔案放到目錄/etc/vsftpd_user_conf中

sudo mkdir /etc/vsftpd_user_conf

cd /etc/vsftpd_user_conf

sudo touch db1 db2 db3

db1檔案中的內容如下

local_root=/home/ftp/dbzh1
同樣,db2檔案中的內容

local_root=/home/ftp/dbzh2
那麼,db3的內容呢? 其實也很簡單

write_enable=yes

anon_world_readable_only=no

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes

local_root=/home/ftp/dbzh1

//我遇到的第二個問題是配置檔案,如果發現當登入之後執行ls出現500:oop 不合法的bool值這類錯誤時,基本都是配置檔案

的問題,我就是在配置檔案的某些行最後多了一些空格導致了這個錯誤。同時需要將每個虛擬使用者的個人目錄的組和所有者

更為virual,執行chown virtual.virtual 目錄名

重啟vsftpd我們就可以看到效果了^_^

/etc/init.d/vsftpd start|restart
500 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

//這個問題也可以通過修改/etc/selinux/config來實現,將其中的selinux=***(***是安全級別),改為selinux=disabled,不過

這樣將是selinux完全失效。

最後我還有乙個問題沒有解決,應為我的虛擬使用者有十個,我將所有使用者寫到了loguser.txt中,不過最後登入的時候只能實現

部分使用者登入,有些使用者無法登入,尚未解決。

壹、#db_load -t -t hash -f ./logins.txt ./vsftpd_login.db 更新帳號

貳、更新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...