一: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 test1@127.0.0.1
口令:
lftp test1@127.0.0.1:~> 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是否有拦截。