cifs是Common Internet File System(通用网络文件系统)的缩写,它使程序可以访问远程Internet计算机上的文件并要求此计算机的服务。
功能:
1.访问服务器本地文件并读写这些文件
2.与其它用户一起共享一些文件块
3.在断线时自动恢复与网络的连接
4.使用统一码(Unicode)文件名:文件名可以使用任何字符集,而不局限于为英语或西欧语言设计的字符集。
优点:
一般来说,CIFS使用户得到比FTP更好的对文件的控制。它提供潜在的更直接地服务器程序接口,这比使用HTTP协议的浏览器更好。CIFS最典型的应用是windows用户能够从“网上邻居”中找到网络中的其他主机并访问其中的共享文件夹.
CIFS 是开放的标准而且已经被作为Internet应用程序标准被提交到IETF。
用于Java与DCom通信的开源第三方库J-Interop就是利用CIFS协议实现的。
#############以下所有操作,为了便于说明,黄色字体为服务端操作,蓝色字体为客户端操作##############
一 cifs文件系统环境的搭建:
需要两台主机,一个作为服务端,一个作为客户端
1. 首先需要在服务端安装cifs文件系统所需要的软件,包括三个安装包:samba samba-client samba-common
在软件安装之后,需要开启服务并关闭防火墙,以便客户端进行对本机的文件访问:
2 cifs文件系统在客户端的访问是以服务端用户的身份进行的,所以需要在服务端新建用户:
只建立用户是不够的,还需要将用户和samba服务关联起来
smbpasswd -a westos 可以将用户设置为samba服务的加密用户
pdbedit -L 可以查看到设置好的用户,pdbedit -x username 可以删除用户:
3. cifs文件系统在客户端的以加密用户身份访问的默认目录是服务端用户的家目录。在服务端的用户家目录里新建几个文件用来查看效果:
4 这样在服务端的配置就完成了,接下来在客户端进行samba客户端软件的安装:yum install samba-client -y
samba-client并不是一个服务所以不需要开启。在客户端执行指令: smbclient -L //172.25.254.145 -U westos
这条指令的意思是在客户端以服务端用户westos的身份访问服务端共享的文件目录。其中172.25.254.145是服务端ip
除了对共享目录的查看,还可以进行对共享目录内容的查看:
smbclient //172.25.254.145/westos -U westos 查看服务端westos用户家目录的内容,可以看到刚才建立的文件。需要注意的是在查看共享目录时服务端ip后面是不跟内容的而有-L列出指令,而在查看时候需要加上所查看的目录,,没有-L指令。
如果需要上传文件,就需要先切换到所要上传文件的所在目录。登录之后!ls指令可以查看所在目录的内容,put 指令可以进行文件的上传。此时的selinux是处于disabled状态也就是关闭了,如果selinux处在enforcing状态也就是开启状态,在客户端就只能进行文件的查看而不能进行上传,删除等操作的。
登录之后!ls指令可以查看所在目录的内容,也就是当前所在/etc目录下的内容:
文件的上传:
在上传之后,在服务端会出现上传的文件:
二 共享目录的挂载:
1 在查看共享目录的内时,也只是看看而已,并不能进行新建文件等其他的操作,需要进行其他操作,就需要在客户端将服务端的共享目录进行挂载::
在查看服务端的共享目录使可以发现共享目录westos的格式是disk硬盘格式,也就是说,这个共享目录可以进行挂载:
2 mount -o username=westos,password=westos //172.25.254.145/westos /mnt 将westos目录挂载到/mnt目录下:
挂载之后就可以在挂载目录里查看到文件内容,并且可以新建文件。这些都是在selinux关闭的情况下进行的。
3 共享目录的开机自挂载:
方式一:
对/etc/rc.d/rc.local文件的编辑,首先解除挂载,再编辑配置文件:
将挂载指令写入配置文件:
配置文件编辑完成之后保存退出,并赋予配置文件可执行权限,这样在重启之后就可以自动挂载了:
方式二 /etc/fstab文件的编辑,同样需要先解除挂载,然后编辑/etc/fstab文件:
在/etc/fsatb文件编辑完成之后,需要mount -a刷新挂载:
4 相比较两种开机挂载方式,对于/etc/rc.d/rc.local文件的编辑,可能会出现挂载不上的情况,对于挂载指令要尽量写在配置文件的前面。
/etc/fstab文件的编辑挂载,需要在客户端重启或者开启之前,服务端得先开启。否则可能会出现无法启动的情况。
三 设置访问的黑白名单:
1 在服务端rpm -qc samba-common查看服务的配置文件,并编辑:
workgroup修改文件的工作组,hosts allow 和hosts deny为黑白名单的设置:
2 重启服务,在145和45两台主机上查看效果。
四 设置新建目录为共享目录:
1 在服务端新建目录/linux并建立文件:
2 编辑配置文件:
3 在配置文件中写入共享目录的描述和路径后保存退出:
4 重启服务:
5 在selinux开启的情况下,设置/linux目录及其中内容的安全上下文并刷新安全上下文的设置:
ls -Z /linux查看/linux的安全上下文配置:
6 在客户端就可以看到新建共享目录的内容了:
五 设置系统目录为共享目录:
1 编辑配置文件,设置系统目录的描述和路径,保存退出后重启服务:
2 设置selinux为警告模式,并开启samba服务samba_export_all_ro 的布尔值为开启:
六 对共享目录的权限设定:
1 在配置文件中,需要设置哪个目录的权限,就在哪个目录下设定。
browseabke=yes 可以查看到
write list =westos 对westos用户可写,write list=@westos 对westos用户组可写
admin users =westos 对于linux这个目录,westos拥有超级用户权限,但当wtitable = no时,此超级用户权限失效,westos建立的文件属于超级用户root
2 重启服务并新建用户linux:
3 在客户端查看/linux目录的文件内容,可以查看到:
由于只对westos用户可写,所以以用户linux身份登录时,不能够进行写操作:
而对于/mnt目录,由于设置browseable=no,所以对用户不可见:
七 客户端认证:
对于在客户端对于服务端共享文件的查看,可以设定指定身份用户可以查看,未指定用户不可以查看。
1 首先需要在客户端安装cfis-until软件:
2 新建文件/root/smbpass:
在文件中写入指定用户的用户名和密码:
3 将共享目录挂载到/mnt目录下,使用/root/smbpass文件,以ntlmssp格式加密:
4 这样其他用户就无法看到挂载目录里面的内容:
cifscreds add -u westos 172.25.254.145 用westos用户身份登陆可以查看到。如果以westos用户身份第一次密码输入错误导致登录失败,第二次登录时需要先清空缓存:cifscreds cleanall
八 匿名用户对共享目录内容的查看:
1 对于匿名用户,需要在服务端配置文件/etc/samba/smb.conf 中写入map to guest = bad user 允许游客登录
在指定目录下写入guest ok =yes 设定该目录对游客开放:
2 重启服务之后,在客户端就可以以匿名用户身份查看共享文件内容了:
3 匿名用户对于共享目录的挂载: