一. NFS
1. NFS简介
NFS全称是network file system
NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
假如有三台机器A, B, C,它们需要访问同一个目录,目录中都是图片,传统的做法是把这些图片分别放到A, B, C. 但是使用NFS只需要放到A上,然后A共享给B和C即可。访问的时候,B和C是通过网络的方式去访问A上的那个目录的。
2. 安装、配置NFS服务
需要安装两个包(nfs-utils和rpcbind)
yum install -y nfs-utils 会同时安装上rpcbind
提供nfs服务的机器上 vim /etc/exports //内容如下:
/home/ 192.168.137.0/24(rw,sync,all_squash,anonuid=501,anongid=501)
共分为三部分,第一部分就是本地要共享出去的目录,第二部分为允许访问的主机(可以是一个IP也可以是一个IP段)第三部分就是小括号里面的,为一些权限选项。它表示:共享的目录为/home,信任的主机为192.168.137.0/24这个网段,权限为读写,同步,限定所有使用者,并且限定的uid和gid都为501。
启动 /etc/init.d/rpcbind start; /etc/init.d/nfs start
3. NFS配置的一些选项说明
rw :读写;
ro :只读;
sync :同步模式,内存中数据时时写入磁盘;
async :不同步,把内存中数据定期写入磁盘中;
no_root_squash :加上这个选项后,root用户就会对共享的目录拥有至高的权限控制,就像是对本机的目录操作一样。不安全,不建议使用;
root_squash:和上面的选项对应,root用户对共享目录的权限不高,只有普通用户的权限,即限制了root;
all_squash:不管使用NFS的用户是谁,他的身份都会被限定成为一个指定的普通用户身份;
anonuid/anongid :要和root_squash 以及all_squash一同使用,用于指定使用NFS的用户限定后的uid和gid,前提是本机的/etc/passwd中存在这个uid和gid。
4. 客户端上挂载NFS
客户端同样安装 yum install -y nfs-utils
查看服务器端都共享了哪些目录
showmount -e 192.168.137.10
在客户端上挂载服务端的nfs
mount -t nfs 192.168.137.10:/home/ /mnt/
mount -t nfs -onolock,nfsvers=3 192.168.137.10:/home/ /mnt/
df -h 查看挂载的情况
5. exportfs 命令的使用
-a :全部挂载或者卸载;
-r :重新挂载;
-u :卸载某一个目录;
-v :显示共享的目录
改变/etc/exports配置文件后,不用重启nfs服务直接用这个exportfs即可
exportfs -arv 使生效
在使用nfs时,常用一个选项就是 -o nolock
我们还可以把要挂载的nfs目录写到client上的/etc/fstab文件中 192.168.137.10:/tmp/ /test nfs nolock 0 0 然后 mount -a
二. ftp
1. 什么是ftp
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为 “文传协议” 用于Internet上的控制文件的双向传输。
FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)查看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
在CentOS或者RedHat Linux上有自带的ftp软件叫做vsftpd
2. 使用pure-ftpd搭建FTP服务
pure-ftpd 官网 http://www.pureftpd.org/project/pure-ftpd
wget http://download.pureftpd.org/pub ... ftpd-1.0.32.tar.bz2
tar jxf pure-ftpd-1.0.32.tar.bz2
cd pure-ftpd-1.0.32
./configure --prefix=/usr/local/pureftpd --without-inetd --with-altlog --with-puredb --with-throttling --with-peruserlimits --with-tls
make && make install
cd configuration-file
mkdir -p /usr/local/pureftpd/etc/
cp pure-ftpd.conf /usr/local/pureftpd/etc/pure-ftpd.conf
cp pure-config.pl /usr/local/pureftpd/sbin/pure-config.pl
chmod 755 /usr/local/pureftpd/sbin/pure-config.pl
vim /usr/local/pureftpd/etc/pure-ftpd.conf //内容如下:
- ChrootEveryone yes
- BrokenClientsCompatibility no
- MaxClientsNumber 50
- Daemonize yes
- MaxClientsPerIP 8
- VerboseLog no
- DisplayDotFiles yes
- AnonymousOnly no
- NoAnonymous no
- SyslogFacility ftp
- DontResolve yes
- MaxIdleTime 15
- PureDB /usr/local/pureftpd/etc/pureftpd.pdb
- LimitRecursion 3136 8
- AnonymousCanCreateDirs no
- MaxLoad 4
- AntiWarez yes
- Umask 133:022
- MinUID 100
- AllowUserFXP no
- AllowAnonymousFXP no
- ProhibitDotFilesWrite no
- ProhibitDotFilesRead no
- AutoRename no
- AnonymousCantUpload no
- PIDFile /usr/local/pureftpd/var/run/pure-ftpd.pid
- MaxDiskUsage 99
- CustomerProof yes
mkdir /data/ftp #创建ftp服务的目录
useradd www #创建以哪个账号的身份登录ftp
/usr/local/pureftpd/bin/pure-pw useradd test1 -uwww -d /data/ftp #建立虚拟账号
/usr/local/pureftpd/bin/pure-pw mkdb #创建密码文件
/usr/local/pureftpd/bin/pure-pw list #列出用户
/usr/local/pureftpd/bin/pure-pw userdel test1 #删除账号
启动pure-ftpd服务的命令: /usr/local/pureftpd/sbin/pure-config.pl /usr/local/pureftpd/etc/pure-ftpd.conf
2. vsftp配置ftp服务
yum install -y vsftpd db4-utils
建立虚拟账号相关联的系统账号 useradd virftp -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
建立虚拟账号相关的目录以及配置文件 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 -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
再修改/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
三. samba服务
1. 什么是samba
Samba服务类似于windows上的共享功能,可以实现在Linux上共享文件,windows上访问,当然在Linux上也可以访问到。
是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
2. 安装配置samba
yum install -y samba samba-client
配置文件解说:
[global] 定义全局的配置,workgroup用来定义工作组,相信如果您安装过windows的系统,你会对这个workgroup不陌生。一般情况下,需要我们把这里的MYGROUP改成WORKGROUP(windows默认的工作组名字)。
security = user #这里指定samba的安全等级。关于安全等级有四种:
share:用户不需要账户及密码即可登录samba服务器
user:由提供服务的samba服务器负责检查账户及密码(默认)
server:检查账户及密码的工作由另一台windows或samba服务器负责
domain:指定windows域控制服务器来验证用户的账户及密码。
passdb backend = tdbsam # passdb backend(用户后台),samba有三种用户后台:smbpasswd, tdbsam和ldapsam.
3. samba配置文件
smbpasswd:该方式是使用smb工具smbpasswd给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用此密码访问Samba资源。smbpasswd在/etc/samba中,有时需要手工创建该文件。
tdbsam:使用数据库文件创建用户数据库。数据库文件叫passdb.tdb,在/etc/samba中。passdb.tdb用户数据库可使用 smbpasswd -a 创建Samba用户,要创建的Samba用户必须先是系统用户。也可使用pdbedit创建Samba账户。pdbedit参数很多,列出几个主要的:
pdbedit -a username:新建Samba账户。
pdbedit -x username:删除Samba账户。
pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit -Lv:列出Samba用户列表详细信息。
pdbedit -c “[D]” -u username:暂停该Samba用户账号。
pdbedit -c “[]” -u username:恢复该Samba用户账号。
ldapsam:基于LDAP账户管理方式验证用户。首先要建立LDAP服务,设置 “passdb backend = ldapsam:ldap://LDAP Server”
load printers 和 cups options 两个参数用来设置打印机相关。
除了这些参数外,还有几个参数需要你了解:
netbios name = MYSERVER # 设置出现在网上邻居中的主机名
hosts allow = 127. 192.168.12. 192.168.13. 172.16.# 用来设置允许的主机,如果在前面加 ”;” 则表示允许所有主机
log file = /var/log/samba/%m.log #定义samba的日志,这里的%m是上面的netbios name
max log size = 50 # 指定日志的最大容量,单位是K
[homes] 该部分内容共享用户自己的家目录,也就是说,当用户登录到samba服务器上时实际上是进入到了该用户的家目录,用户登陆后,共享名不是homes而是用户自己的标识符,对于单纯的文件共享的环境来说,这部分可以注视掉。
[printers] 该部分内容设置打印机共享。
4. samba实践一
要求共享一个目录,任何人都可以访问,即不用输入密码即可访问,要求只读
[global]部分 MYGROUP 改为WORKGROUP
security = user 改为 security = share
末尾处加入:
- [share]
- comment = share all
- path = /tmp/samba
- browseable = yes
- public = yes
- writable = no
mkdir /tmp/samba
chmod 777 /tmp/samba
touch /tmp/samba/sharefiles
echo "111111" > /tmp/samba/sharefiles
启动:/etc/init.d/smb start
检查配置的smb.conf是否正确 testparm
测试:win机器浏览器输入 file://192.168.0.22/share
或者运行栏输入: \192.168.0.22
5. Samba实践二
共享一个目录,使用用户名和密码登录后才可以访问,要求可以读写
[global] 部分内容如下:
- [global]
- workgroup = WORKGROUP
- server string = Samba Server Version %v
- security = user
- passdb backend = tdbsam
- load printers = yes
- cups options = raw
还需加入:
- [myshare]
- comment = share for users
- path = /samba
- browseable = yes
- writable = yes
- public = no
创建目录:mkdir /samba
修改权限:chmod 777 /samba
创建系统账号:
useradd user1
useradd user2
添加user1/user2为samba账户:
pdbedit -a user1
pdbedit -a user2
列出samba所有账号: pdbedit –L
重启服务 service smb restart
测试:浏览器输入file://192.168.0.22/myshare
6. Linux访问samba共享文件
安装客户端软件 yum install -y samba-client
命令格式:smbclient //IP/共享名 -U 用户名
如:smbclient //127.0.0.1/share 如果是匿名访问可以省略掉-U
mount挂载samba目录:mount -t cifs //192.168.0.22/myshare /mnt -o username=user1,password=123456