1. 程式人生 > >exportfs命令、NFS客戶端問題、使用vsftpd搭建ftp

exportfs命令、NFS客戶端問題、使用vsftpd搭建ftp

bad 包安裝 smb file linux man secure rtu 登陸 排障

一:exportfs命令

常用選項為[-aruv]
-a :全部掛載或者卸載
-r :重新掛載
-u :卸載某一個目錄
-v :顯示共享的目錄
使用exportfs命令,當改變/etc/exports配置文件後,不用重啟nfs服務直接用這個exportfs
即可。接下來我們做一個實驗,先改一下服務端的配置文件:
#vim /etc/exports
增加一行:
/tmp/ 192.168.0.0/24(rw,sync,no_root_squash) #no_root_squash 表示不限定root用戶
然後服務端上執行命令:
#exportfs -arv
exporting 192.168.0.0/24:/tmp
exporting 192.168.0.0/24:/home

二:NFS客戶端問題

客戶端在掛載NFS 之前,我們需要先看一看服務端都共享了哪些目錄,這需要使用
showmount命令,但是這個命令是 nfs-utils這個包所帶的,所以同樣需要安裝 nfs-utils:
#yum install -y nfs-utils
現在可以看看服務器端都共享了哪些目錄了:
#showmount -e 192.168.0.10
Export list for 192.168.0.10:
/home 192.168.0.0/24
說明:其中192.168.0.10為NFS 服務端ip。
可以看到剛才我們在服務端配置的 nfs共享信息。showmount -e 加 IP 就可以查看 NFS

的共享情況,上例中,就可以看到 192.168.0.10的共享目錄為/home,信任主機為
192.168.0.0/24這個網段。
下面的命令是在客戶端上掛載NFS:
#mount -t nfs -o nfsvers=3 192.168.137.10:/home/ /mnt/

說明:-o後面跟掛載選項,如果不加 -onfsvers=3 則在掛載目錄下的文件屬主和組都是
nobody,如果指定nfsvers=3則顯示501,所以盡量加上這個選項,避免權限混亂。
#df -h
文件系統 容量 已用 可用 已用%% 掛載點
/dev/sda3 14G 6.4G 6.7G 50% /

tmpfs 160M 0 160M 0% /dev/shm
/dev/sda1 97M 27M 66M 29% /boot
/dev/sdb5 989M 19M 920M 3% /home
192.168.0.10:/home/
989M 19M 920M 3% /mnt
用 df -h 命令可以看到多出來一個/mnt分區,它就是NFS 共享的目錄了。
在之前的命令中用到了 mount命令來掛載nfs,其實mount這個 nfs服務還是有些說法
的。首先是用-t nfs 來指定掛載的類型為 nfs。另外在使用 nfs時,常用一個選項就是-o
nolock 了,即在掛載nfs服務時,不加鎖。 在客戶端上執行:
#mkdir /test
#mount -t nfs -o nolock 192.168.0.10:/tmp/ /test/
我們還可以把要掛載的 nfs目錄寫到client上的/etc/fstab文件中,掛載時只需要執行
mount -a 即可。在 /etc/fstab 裏加一行:
192.168.0.10:/tmp/ /test nfs nolock 0 0
因為剛剛掛載過,所以先卸載:
#umount /test/
然後執行:
#mount -a
這樣也可以掛載上,而且以後開機會自動掛載上。

三:使用vsftpd搭建ftp

(1)安裝vsftpd
#yum install -y vsftpd db4-utils
這裏安裝兩個軟件包,同時會把依賴的包安裝上。其中 db4-utils用來生成密碼庫文件。
(2)建立賬號
vsftpd默認是可以支持使用系統賬號體系登錄的,但那樣不×××全,所以我建議你參考
下面的方法使用虛擬賬號體系。
建立虛擬賬號相關聯的系統賬號
#useradd virftp -s /sbin/nologin
建立虛擬賬戶相關的文件
#vim /etc/vsftpd/vsftpd_login //內容如下:
test1
123456
test2
abcdef
更改該文件的權限,提升安全級別
#chmod 600 /etc/vsftpd/vsftpd_login
vsfptd使用的密碼文件肯定不是明文的,需要生成對應的庫文件
#db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
建立虛擬賬號相關的目錄以及配置文件
#mkdir /etc/vsftpd/vsftpd_user_conf
#cd /etc/vsftpd/vsftpd_user_conf
(3)創建和用戶對應的配置文件
#vim test1 //內容如下:

local_root=/home/virftp/test1
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000
說明:
local_root為該賬號的家目錄,anonymous_enable 用來限制是否允許匿名賬號登陸,若
為NO表示不允許匿名賬號登陸,write_enable=YES 表示可寫,local_umask指定 umask值,
anon_upload_enable是否允許匿名賬號上傳文件,anon_mkdir_write_enable 是否允許匿名賬
號可寫。以上為關鍵配置參數,其他暫時不用關心。創建 test2賬號的步驟和test1一樣。
#mkdir /home/virftp/test1
#chown -R virftp:virftp /home/virftp
#vim /etc/pam.d/vsftpd //在最開頭添加兩行
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
說明:我的Linux 為32位系統,所以庫文件路徑為/lib/security/pam_userdb.so,若你的
系統為64,那你的庫文件是在/lib64/security/pam_userdb.so。
(4)修改全局配置文件/etc/vsftpd.conf
#vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES 改為anonymous_enable=NO
#anon_upload_enable=YES 改為 anon_upload_enable=NO
#anon_mkdir_write_enable=YES 改為 anon_mkdir_write_enable=NO
再增加:
chroot_local_user=YES
guest_enable=YES
guest_username=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
最後啟動vsftpd服務
#/etc/init.d/vsftpd start
如果服務啟動不了,很有可能是前面的pure-ftpd 服務還沒有關閉。測試過程和前面
pure-ftpd的一樣。另外,如果用戶登錄不了,請查看一下/var/log/secure日誌。

vsftp部署的500,530排障經驗
[root@yon ~]# lftp [email protected]
口令:
lftp [email protected]:~> ls
ls: 登錄失敗: 500 OOPS: cannot change directory:/home/virftp/test
造成這種故障的原因是我在test用戶的配置文件裏寫的 local_root=/home/virftp/test
而我建立的家目錄是test1
[root@yon vsftpd_user_conf]# ls /home/virftp/
test1

500 OOPS: cannot change directory:/home/xxxxLogin failed.
在安裝完vsftp服務後登陸時可能遇到cannot change directory,後面是登陸者的目錄的錯誤,這是因為SE設置的關閉了ftp的原因。
使用命令

getsebool ftpd_disable_trans

可以查看當前的狀態如果不是on

那麽是輸入命令

setsebool ftpd_disable_trans 1

當然也可以加入-P參數 以便不需要每次開機都輸入這個命令

setsebool -P ftpd_disable_trans 1

service vsftpd restart

同理 如果smb服務也遇到相同的問題 ,也可以這麽做。

setsebool -P samba_enable_home_dirs=1
selinux的問題也可以使用 管理工具中的 selinux management 來調整相關設置
也可以選擇直接關閉selinux
setenforce 0 ——這是臨時關閉
永久關閉修改/etc/selinux/config
SELINUX=disable

登錄失敗: 500 oops: bad bool value in config file for: anonymous_enablev
登錄時候提示這種500故障是用戶配置文件裏的anonymous_enablev那行後面有空格,去掉即可;
而啟動時候出去的這種500故障是全局配置文件裏的anonymous_enablev那行後面有空格,去掉即可。

530 login incorrect
操作系統與/etc/pam.d/vsftpd配置文件裏的庫文件不匹配。64位系統,選擇/lib64/security/pam_userdb.so
32位選擇/lib/security/pam_userdb.so
還有就是註意你的iptables是否有攔截。

exportfs命令、NFS客戶端問題、使用vsftpd搭建ftp