一、 NFS 1、NFS简介 NFS全称是network file system 网络文件系统nfs依赖网络带宽的支持 NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS用户和程序可以像访问本地文件一样访问远端系统上的文件。 假如有三台机器A, B, C它们需要访问同一个目录目录中都是图片传统的做法是把这些图片分别放到A,B, C. 但是使用NFS只需要放到A上然后A共享给B和C即可。访问的时候B和C是通过网络的方式去访问A上的那个目录的。 2、安装、配置NFS服务 需要安装两个包(nfs-utils和rpcbind) #yuminstall -y nfs-utils 会同时安装上依赖包rpcbind 提供nfs服务的机器上 vim /etc/exports 输入以下内容 /home/ 192.168.1.0/24(rw,sync,all_squash,anonuid=501,anongid=501) 共分为三部分 /home/ 第一部分是本地要共享出去的目录 192.168.1.0/24 第二部分为允许访问的主机可以是一个IP也可以是一个IP段 (rw,sync,all_squash,anonuid=501,anongid=501) 第三部分就是小括号里面的为一些权限选项。权限为读写同步限定所有使用者并且限定的uid和gid都为501501账号必须真实存在。 启动nfs服务先启动rpcbind再启动nfs启动顺序错误的话会导致后面出错 /etc/init.d/rpcbind start /etc/init.d/nfs start 3、NFS配置的一些选项说明 rw 可读可写 ro 只读 sync 同步模式内存中数据时时写入磁盘 async 不同步把内存中数据定期写入磁盘中 no_root_squash squash的意思为挤压压制字面意思为不压制root的权限加上这个选项后root用户就会对共享的目录拥有至高的权限控制就像是对本机的目录操作一样。不安全不建议使用 root_squash和上面的选项对应root用户对共享目录的权限不高只有普通用户的权限即限制了root all_squash不管使用NFS的用户是谁他的身份都会被限定成为一个指定的普通用户身份 anonuid/anongid要和root_squash 以及all_squash一同使用用于指定使用NFS的用户限定后的uid和gid前提是本机的/etc/passwd中存在这个uid和gid。 4、客户端上挂载NFS 客户端机器也同样需要安装nfs包# yuminstall -y nfs-utils 同时需要检查iptables清空iptables 关闭selinux防火墙 查看服务器端都共享了哪些目录 #showmount -e 192.168.20.30
nfs服务器的ip地址 客户端使用showmount -e 时报错RPC程序没有注册 [root@yong ~]# showmount -e 192.168.20.30 clnt_create: RPC: Program not registered 出错原因是rpcbind服务与NFS服务启动顺序不对先停止服务重新启动先启动rpcbind服务再启动nfs服务 [root@localhost ~]# /etc/init.d/nfs stop [root@localhost ~]# /etc/init.d/rpcbind stop 重新启动后执行显示正确 [root@localhost ~]# /etc/init.d/rpcbind start [root@localhost ~]# /etc/init.d/nfs start [root@yong ~]# showmount -e 192.168.1.10 Export list for 192.168.1.10: /home 192.168.1.0/24 在客户端上挂载服务端的nfs命令 mount -t nfs -o nolock,nfsvers=3 192.168.1.10:/home/ /mnt/ //如果不加-onolock,nfsvers=3 则在挂载目录下的文件属主和组都是nobody如,果指定nfsvers=3则显示root -o nolock 不上锁指定nfsvers版本是3默认是4 df -h 查看挂载的情况 [root@Basemnt]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 38G 857M 35G 3% / tmpfs 939M 0 939M 0% /dev/shm /dev/sda1 194M 27M 158M 15% /boot 192.168.1.10:/home/ 22G 6.7G 14G 33% /mnt 挂载成功. [root@Base mnt]# mkdir nfs(192.168.1.200) mkdir: cannot create directory `nfs': Permissiondenied 修改权限: [root@aming /]# chmod 777 -R home [root@aming /]# cd /home/ [root@aming home]# ls mysql php-fpm [root@aming home]# ls -al total 16 drwxrwxrwx. 4root root 4096 Jul 26 22:12 . dr-xr-xr-x. 22 root root 4096 Jul 29 18:38 .. drwxrwxrwx. 2mysql mysql 4096 Jul 26 22:06 mysql drwxrwxrwx. 2php-fpm php-fpm 4096 Jul 26 22:12 php-fpm [root@Base mnt]# mkdir test [root@Base mnt]# ls -al total 20 drwxrwxrwx 5root root 4096 Jul 29 2015 . dr-xr-xr-x. 22 root root 4096 Jul 29 18:55 .. drwxrwxrwx 2 500 500 4096 Jul 26 22:06 mysql drwxrwxrwx 2 501 501 4096 Jul 26 22:12 php-fpm drwxr-xr-x 2 501 501 4096 Jul 29 2015 test 创建成功. 5、exportfs 命令的使用 -a 全部挂载或者卸载 -r 重新挂载 -u 卸载某一个目录 -v 显示共享的目录 /home/ 192.168.20.0/24(rw,sync,no_root_squash) 不限制root用户客户端再创建的用户的所属主组都是root 可以进行更改权限删除文件。 改变/etc/exports配置文件后不用重启nfs服务执行命令#exportfs -arv 使/etc/exports配置文件生效 [root@aming home]# exportfs -arv exporting 192.168.1.0/24:/home 在使用nfs时,常用一个选项就是 -o nolock 我们还可以把要挂载的nfs目录写到client上的/etc/fstab文件中 192.168.1.10:/tmp/ /test nfs nolock 0 0 然后 mount -a 二、 ftp 1、什么是ftp FTP 是FileTransfer Protocol文件传输协议的英文简称而中文简称为“文传协议” 用于Internet上的控制文件的双向传输。 FTP的主要作用就是让用户连接上一个远程计算机这些计算机上运行着FTP服务器程序查看远程计算机有哪些文件然后把文件从远程计算机上拷到本地计算机或把本地计算机的文件送到远程计算机去。 在CentOS或者RedHat Linux上有自带的ftp软件叫做vsftpd。 2、使用pure-ftpd搭建FTP服务 pure-ftpd 官网http://www.pureftpd.org/project/pure-ftpd pure-ftpd 是服务端工具 先安装epel扩展源然后安装pure-ftpd包 #yum install -yepel-release #yuminstall -y pure-ftpd yum list 可以查看包所在的源 [root@pma ~]# yum list |grep pure-ftpd pure-ftpd.i686 1.0.30-1.el6 epel pure-ftpd-selinux.i686 1.0.30-1.el6 epel pure-ftpd 配置模板参考 [root@aming home]# grep '^[A-Za-z]'/etc/pure-ftpd/pure-ftpd.conf ChrootEveryone yes BrokenClientsCompatibility no MaxClientsNumber 50 Daemonize yes MaxClientsPerIP 8 VerboseLog no DisplayDotFiles yes AnonymousOnly no NoAnonymous yes SyslogFacility ftp DontResolve yes MaxIdleTime 15 PureDB /etc/pure-ftpd/pureftpd.pdb LimitRecursion 3136 8 AnonymousCanCreateDirs no MaxLoad 4 AntiWarez yes Umask 133:022 MinUID 10 AllowUserFXP no AllowAnonymousFXP no ProhibitDotFilesWrite no ProhibitDotFilesRead no AutoRename no AnonymousCantUpload no CustomerProof yes % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 105 846 105 846 0 0 970 0 --:--:-- --:--:----:--:-- 9400 生成随机字符串用户名长度为5没有特殊字符没有数字没有大写字母密码没有特殊字符然后重定向到一个文件中 如果没有mkpasswd命令需要安装expect包 # yum install -y expect user=`mkpasswd -l 5 -s 0 -d 0 -C 0` pass=`mkpasswd -s 0` echo $user $pass > /tmp/ftp.pass [root@localhost ~]# cat /tmp/ftp.pass zwdlc EEoz14swg 创建ftp服务的目录用于共享 #mkdir /data/ftp #echo -e "$pass\n$pass"|pure-pw useradd $user-u test -d /data/ftp/ pure-pw 创建一个用户 -u test 映射一个用户系统里必须存在的用户。使用创建的随机用户映射到系统里的用户 pure-pw mkdb #创建密码文件把用户和密码保存到一个二进制的文件中。路径在/etc/pure-ftpd/pure-ftpd.conf配置文件里PureDB指定的路径中 [root@localhost ~]# ls -l /etc/pure-ftpd/pureftpd.pdb -rw------- 1 root root 2141 5月 22 15:24 /etc/pure-ftpd/pureftpd.pdb pure-pw list #列出用户 [root@localhost ~]# pure-pw list zwdlc /data/ftp/./ pure-pw userdel $user #删除账号 /etc/init.d/pure-ftpd start #启动服务监听端口为21 ftp客户端需要安装lftp包#yum install -y lftp 输入命令#lftp 用户名@ftp服务器ip地址 用户名为服务器创建的随机用户名ftp服务器ip地址输入密码就登录ftp服务器 put 文件上传到ftp服务端 get 文件下载到本地客户端目录 Password: 804164 bytes transferred 但是上传返回put: Access failed: 553 Can't openthat file: Permission denied (install.log) 修改[root@aming data]# chmod 777 -R ftp 2、vsftp配置ftp服务 服务端安装yum install -yvsftpd db4-utils 建立虚拟账号相关联的系统账号useraddvirftp -s /sbin/nologin 建立虚拟账户相关的文件 vim /etc/vsftpd/vsftpd_login //内容如下 test1 123456 test2 abcdef chmod 600 /etc/vsftpd/vsftpd_login 生成对应的库文件db_load-T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db db_load命令可以将用户文本信息文件转换为db数据库并使用hash加密。 选项-T允许应用程序能够将文本文件转译载入进数据库。由于我们之后是将虚拟用户的信息以文件方式存储在文件里的为了让Vsftpd这个应用程序能够通过文本来载入用户数据必须要使用这个选项。 指定了选项-T那么一定要追加子选项-t ; 子选项-t追加在在-T选项后用来指定转译载入的数据库类型。 hash就是使用hash码加密。 -f 参数后面接包含用户名和密码的文本文件文件的内容是:奇数行用户名、偶数行密码 如果更改密码更改文件后还需要db_load一下并重启ftp服务使其生效 建立虚拟账号相关的目录以及配置文件 mkdir /etc/vsftpd/vsftpd_user_conf cd /etc/vsftpd/vsftpd_user_conf 创建和用户对应的配置文件 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 mkdir /home/virftp/test1 修改权限 chown -Rvirftp:virftp /home/virftp vim /etc/pam.d/vsftpd 用户认证的配置文件在最开头添加两行 auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login //如果是64位系统则改为/lib64/security/pam_userdb.so account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login //如果是64位系统则改为/lib64/security/pam_userdb.so 再修改vsftpd主配置文件 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/vsftpdstart 我启动一直失败,原因是在上面启动了pure-ftpd ,关掉再启动即可。 客户端实验验证 ftp客户端需要安装lftp包yum install -y lftp 登录命令lftp test1@ftp服务端的ip地址 客户端访问ftp服务器故意输错密码竟然也能登录但是执行ls就提示登录失败使用正确口令登录使用ls正常 [root@localhost ~]# lftp test1@192.168.1.10 口令: ls: 登录失败:530 Login incorrect. 口令: -rw-r--r-- 10 0 0 May 24 15:21 1.txt put上传一个文件ls查看文件的所属主、组为501在ftp服务器查看显示为virftp账号对应的uid即501 这儿就和(pure-ftp一样了)。
|