vsftp本地用户,虚拟用户,匿名用户同时工作
vsftpd+mysql ?實現本地用戶,匿名用戶,虛擬用戶同時工作
大綱
1.安裝vsftpd mysql ?pam-mysql
2.添加虛擬用戶(使用本地數據庫和數據庫服務器)
3.實現本地用戶,匿名用戶,虛擬用戶同時工作
4.說下vsftpd.conf文件的內容
一、安裝
先說下環境我是在centos 5.6下做的 ?安裝vsftpd mysql
vsftpd和mysql是使用yum源安裝的,pam_mysql使用編譯安裝的是因為我沒找到rpm軟件包!!!
首先安裝vsftpd+mysql ?以及必要軟件(pam_mysql db4*)
yum install vsftpdmysql ?db4* -y
編譯安裝需要用以下軟件:
yum install gcc gcc-c++ pam-devel mysql-devel ? ?也還需要更多的開發工具,到時只需使用
使用下面的命令與地址下載pam_mysql:
wget http://downloads.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz?use_mirror=nchc
解壓和安裝
tar zxf pam_mysql-0.7RC1.tar.gz -C /tmp/
cd /tmp/pam_mysql-0.7RC1/
./configure --with-openssl
make
make install
當使用find / -name pam_mysql.so命令找到pam_mysql.so時就是代表安裝成功了。
ls /usr/lib/security/pam_mysql.so ?#查看下是否有這個文件存在
pam_mysql的安裝可以參考下面的內容:
http://bbs.51cto.com/thread-825165-1.html
二、添加虛擬用戶
虛擬用戶可以使用兩種方式添加 mysql數據和db4工具生成的數據文件。
建立虛擬用戶使用的系統帳戶virtual
這個帳戶不需要登錄所以將他的home設為/var/ftp/ ? 或者不指定
useradd -d /var/ftp/ -s /sbn/nologin virtual
chown virtual.virtual /var/ftp ? #將ftp目錄的屬主和屬組改為virtual
1.使用mysql添加虛擬用戶
建立vsftpd使用的mysql數據庫和表,并插入用戶名和密碼到表中:
mysqladmin -u root password 'your_Passw0rd';
mysql –u root –p;
mysql>create database vsftpd;
mysql>use vsftpd;
mysql>create table users(name char(20),password char(20));
mysql> insert into users(name,password) values ('pei','pei');
mysql> insert into ftpusers(name,password) values ('admin','12345');
mysql>grant allon vsftpd.users to virtual@localhost identified by 'passwd';
mysql>quit;
編輯pam文件加入以下內容:
vim /etc/pam.d/vsftpd
auth ? ? ? ?sufficient ? /usr/lib/security/pam_mysql.so user=virtual passwd=majinlong host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0
account ? ? sufficient ?/usr/lib/security/pam_mysql.so ?user=virtual passwd=majinlong host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0
除以上內容外的其他內容全部使用#號注釋掉
注意:
crypt= n
crypt=0:明文密碼
crypt=1:使用crpyt()函數(對應SQL數據里的encrypt(),encrypt()隨機產生salt)
crypt=2:使用MYSQL中的password()函數加密
crypt=3:表示使用md5的散列方式
虛擬用戶的vsftpd.conf配置文件內容
#virtual users
guest_enable=YES ? ? ? ? 啟用虛擬用戶
guest_username=virtual ? ? ? ?虛擬用戶使用的系統賬戶
virtual_use_local_privs=NO ? ?虛擬用戶和本地用戶是否有相同的權限
user_config_dir=/etc/etc/vsftpd_user_config ?單獨的用戶配置文件位置
2.使用本地數據添加虛擬用戶
添加虛擬用戶口令文件格式如下:
user
passwd
例如:
vi user.txt
admin
12345
生虛擬用戶口令認證數據庫文件,需要使用db4-utils軟件
db_load -T -t hash -f 口令文件的路徑 生成后的數據認證文件
db_load -T -t hash -f user.txt /etc/vsftpd/vuser.db
編輯pam文件 ?加入下面兩行:
auth ? ?sufficient ? ? pam_userdb.so db=/etc/vsftpd/vuser
account sufficient ? ? ?pam_userdb.so db=/etc/vsftpd/vuser
其他的內容全部使用#號注釋掉
虛擬用戶的vsftpd.conf配置文件內容
#virtual users
guest_enable=YES ? ? ? ? ? ? ? 啟用虛擬用戶
guest_username=virtual ? ? ? ? ? ?虛擬用戶使用的系統賬戶
virtual_use_local_privs=NO ? ? ? ? ?虛擬用戶和本地用戶是否有相同的權限
user_config_dir=/etc/etc/vsftpd_user_config ? //單獨的用戶配置文件位置
注意:從頭到尾pam_service_name=vsftpd這個選項都沒有動過,因為我們一直在修改/etc/pam.d/vsftpd這個文件,沒有建立新的pam文件所以不需要改變這一項。
至此虛擬用戶的內容就完了下面可以使用虛擬用戶測試下
三、實現本地用戶,匿名用戶,虛擬用戶同時工作
實現本地用戶,匿名用戶,虛擬用戶同時工作的方法有兩種:
一個是添加多個vsftpd.conf配置文件,修改監聽端口使其工作在21端口以外的端口上
一個是修改pam文件使vsftpd直接支持本地,匿名和虛擬用戶同時登錄
上面第一種方法不是很難,網上有許多教程,我使用的是第二種方法下面就說下怎么實現的:
修改后完整的pam文件/etc/pam.d/vsftpd的內容如下:
auth ? ? ? ?sufficient ? /usr/lib/security/pam_mysql.so user=virtual passwd=majinlong host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0
account ? ? sufficient ?/usr/lib/security/pam_mysql.so ?user=virtual passwd=majinlong host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=passwd crypt=0
#auth ? ? ? required ? ?pam_listfiles.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed(不允許ftpusers文件中的用戶登錄)
#auth ? ? ? required ? ?pam_shell.so(這個還不太清楚)
auth ? ? ? ?include ? ? system-auth(認證本地用戶的默認選項)
account ? ? include ? ? system-auth(認證本地用戶的默認選項)
session ? ? include ? ? system-auth(認證本地用戶的默認選項)
session ? ? required ? ?pam_loginuid.so(認證系統用戶的默認選項)
#session ? ? ? ? ? ?optional ? ?pam_keyinit.so force revoke(可有可無)
如果想弄清楚上面的內容具體是什么意思建議參考下‘pam百度百科’
大家可以參考下面:
http://spazzzz.blog.51cto.com/2707720/677799
一般第一列指定的內容是:module-type,一共就只有4種,分別是:
1 auth:對用戶身份進行識別,如提示輸入密碼,判斷是root否;
2 account:對賬號各項屬性進行檢查,如是否允許登錄,是否達到最大用戶數;
3 session:定義登錄前,及退出后所要進行的操作,如登錄連接信息,用戶數據的打開和關閉,掛載fs;
4 password:使用用戶信息來更新數據,如修改用戶密碼。
第二列內容是:control-flag,有很多,不過一般常用的是4種,分別是:
5 optional:不進行成功與否的返回,一般返回一個pam_ignore;
6 required:表示需要返回一個成功值,如果返回失敗,不會立刻將失敗結果返回,而是繼續進行同類型的下一驗證,所有此類型的模塊都執行完成后,再返回失敗;
7 requisite:與required類似,但如果此模塊返回失敗,則立刻返回失敗并表示此類型失敗;
8 sufficient:如果此模塊返回成功,則直接向程序返回成功,表示此類成功,如果失敗,也不影響這類型的返回值。
第三列內容是PAM模塊的存放路徑,默認是在/lib/security/目錄下,如果在此默認路徑下,要填寫絕對路徑。
第四列內容是PAM模塊參數,這個需要根據所使用的模塊來添加。
四、詳解vsftpd.conf文件的內容
1. 匿名及本地用戶共同參數
listen=yes ?//vsftpd工作在standalone 模式下
write_enable=yes/no //是否允許全局可寫
download_enable=yes/no //是否允許所有用戶可以下載
dirlist_enable=yes/no //是否允許所有用戶可以瀏覽(列出文件列表)
pam_service_name=vsftpd ?
ftpd_banner=歡迎語字符串
banner_file=文件
dirmessage_enable=yes/no
message_file=文件
參數ftpd_banner設置的歡迎語字符串將在登錄時看到,如果想做出多行歡迎語,就要把內容單獨存為banner_file參數指定的文件,應用中 這兩個參數二選一即可。dirmessage_enable和message_file參數是進入某個目錄后顯示的歡迎信息,用法與前兩個參數一樣。
2.本地用戶
local_root=/path //本地用戶登陸服務器后直接進入的目錄 ?
local_umask=八進制數 //本地用戶上傳檔案權限的 umask值 ?
local_max_rate=數字 //本地用戶傳輸速率單位為 bps ?
chmod_enable=yes/no // 是否允許本地用戶改變ftp 服務器上檔案的權限 ?
user_config_dir=/path //用戶單獨配置文件所在目錄
userlist_enable=yes/no //是否啟用 userlist 功能模塊 ?
userlist_deny=yes/no //是否拒絕 userlist 文件中用戶登陸 ftp 服務 ?
userlist_file=/path/to/file //指定的 userlist 文件名 ?
chroot_list_enable=yes/no //是否啟用 chroot_list 文件 ?
chroot_local_user=yes/no //是否限制本地用戶的根目錄為自己的主目錄 ?
chroot_list_file=/path/to/file //設置 chrootlist 文件名
3.匿名用戶
anonymous_enable=YES /NO ? ?//是否允許匿名訪問
no_anon_password=YES ?//匿名用戶不需要輸入密碼
anon_root=/var/ftp ? ?//設置匿名用戶的FTP根目錄(缺省為/var/ftp)
anon_upload_enable=YES/NO ? //匿名用戶是否可以上傳
anon_umask=022 ? ?//設置匿名用戶所上傳文件的默認權限掩碼值
anon_other_write_enable=YES/NO //是否允許匿名用戶可以使用除了建立文件夾和上傳文件以外其他的ftp寫操作命令。例如:delete、rename 等等 ?
anon_world_readable_only=YES/NO ? ? ?//匿名用戶是否可以瀏覽
anon_mkdir_write_enbale=YES/NO ? ?//是否允許匿名用戶有創建目錄的寫入權限
anon_max_rate=0 ? ?//限制匿名用戶最的最大傳輸速率(0為無限制,單位為字節)
4.虛擬用戶
guest_enable=YES ?//啟用虛擬用戶
guest_username=virtual ? //虛擬用戶使用的系統賬戶
user_config_dir=/etc/etc/vsftpd_user_config ? ?//單獨的用戶配置文件位置
virtual_use_local_privs=NO ?
當virtual_use_local_privs=YES時,虛擬用戶和本地用戶有相同的權限;
當virtual_use_local_privs=NO時,虛擬用戶和匿名用戶有相同的權限,默認是NO
用戶單獨的配置文件可以使用匿名用戶配置文件的全部內容,
local_root=/var/ftp/123 ? ?//用戶的主目錄
#anon_world_readable_only=NO ? //匿名用戶是否可以瀏覽
anon_upload_enable=YES ? //匿名用戶是否可以上傳
anon_mkdir_write_enable=YES ? //是否允許匿名用戶有創建目錄的寫入權限
anon_other_write_enable=YES//是否允許匿名用戶可以使用除了建立文件夾和上傳文件以外其他的ftp寫操作命令。例如:delete、rename 等等
anon_max_rate=512000 ? ?//限制匿名用戶最的最大傳輸速率(0為無限制,單位為字節)
5.其他設置
日志文件
xferlog_enable=yes/no ? ? ? ? ? ?//是否啟用 xferlog 日志格式
xferlog_std_format=yes/no ? ? //是否采用標準格式記錄日
xferlog_file=/path/to/logfile ? ? ? ? ? ?//xferlog 日志文件所在位置,默認為/var/log/xferlog
dual_log_enable=yes/no ? ? ? ? //是否采用Vsftpd自己的日志記錄方式
log_ftp_protocol=yes/no ? ? ? ? ?//是否記錄所有的ftp命令日志
vsftpd_log_file=/path/to/logfile ? ? //指定vsftpd 日志文件位置,默認為/var/log/vsftpd.log
主動模式
port_enable=YES ? ? ? ? ? ? ? //開啟主動模式
connect_from_port_20=YES ? ? ?//當主動模式開啟的時候 是否啟用默認的20端口監聽
ftp_date_port=%portnumber% ? ?//上一選項使用NO參數是 指定數據傳輸端口
被動模式
pasv_enable=YES ? //開啟被動模式
pasv_min_port=%number% //被動模式最低端口
pasv_max_port=%number% //被動模式最高端口
連接限制
max_client=%number% ? //最大連接數
max_per_ip=%number% ? //每ip最大連接數
anon_max_rate=%number% ? ?//匿名用戶最大速率 單位kbps
local_max_rate=%number% ? //本地用戶最大速率 單位kbps
超時限制
idle_session_timeout=600 //空閑連接超時
data_connection_timeout=120 //數據傳輸超時
accept_timeout=60 //PAVS請求超時
connect_timeout=60 //PROT模式連接超時
更多vsftpd.conf詳細配置:
http://tzsky.blog.51cto.com/1062094/237322
http://www.linux.gov.cn/ ?linux學園
http://redking.blog.51cto.com/27212/136218
轉載于:https://blog.51cto.com/xiaoshi1991/386879
總結
以上是生活随笔為你收集整理的vsftp本地用户,虚拟用户,匿名用户同时工作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js中String的常用扩展
- 下一篇: seo 线上工具