CIFS通常用于Windows之间的共享,Windows、Linux之间共享。
NFS通常用于Unix、Linux之间数据共享
SMB提供CIFS文件系统
文件共享使用端口:tcp139,445(服务名:smb)
名称解析使用端口:udp137,138(服务名:nmb)
smbclient -L //172.17.8.74 -U administrator #查看SMB共享
如果不指定用户名,就是匿名登录,Linux支持匿名登录,Windows不支持匿名。
<code>[root@rh1 ~]</code><code># smbclient -L //172.17.8.74 -U administrator</code>
<code>Enter administrator's password: </code>
<code>Domain=[WIN-3F7Q3K0ONCA] OS=[Windows Server 2008 R2 Datacenter 7600] Server=[Windows Server 2008 R2 Datacenter 6.1]</code>
<code> </code><code>Sharename Type Comment</code>
<code> </code><code>--------- ---- -------</code>
<code> </code><code>ADMIN$ Disk 远程管理</code>
<code> </code><code>C$ Disk 默认共享</code>
<code> </code><code>D$ Disk 默认共享</code>
<code> </code><code>IPC$ IPC 远程 IPC</code>
<code> </code><code>oms Disk </code>
<code> </code><code>暂存 Disk </code>
<code>Connection to 172.17.8.74 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)</code>
<code>NetBIOS over TCP disabled -- no workgroup available</code>
/etc/samba/smb.conf 配置文件
<code> </code><code>workgroup = MYGROUP</code>
<code> </code><code>server string = Samba Server Version %</code><code>v</code> <code>#Samba版本,此处建议修改,避免露出。</code>
<code> </code>
<code>; netbios name = MYSERVER</code>
<code>#此处的名字是在网上邻居里面看到的名字,如果用;注释了,默认使用计算机名。</code>
<code>; interfaces = lo eth0 192.168.12.2</code><code>/24</code> <code>192.168.13.2</code><code>/24</code>
<code>#代表Samba监听在哪些接口上,;注释之后默认监听所有。</code>
<code>; hosts allow = 127. 192.168.12. 192.168.13.</code>
<code>#代表允许哪些主机访问,;注释之后默认允许所有</code>
<code>; max protocol = SMB2 </code><code>#协议版本</code>
用户认证相关
<code> </code><code>security = user</code>
<code> </code><code>passdb backend = tdbsam </code><code>#密码存放方式</code>
user:代表访问需要身份验证
share:代表不需要身份验证,相当于Windows的guest账号
用户需要从本地用户中添加,如何把本地用户添加到Samba:
<code>[root@rh1 ~]</code><code># id user1</code>
<code>uid=1001(user1) gid=1001(user1) </code><code>groups</code><code>=1001(user1)</code>
<code>[root@rh1 ~]</code><code># smbpasswd -a user1</code>
<code>New SMB password:</code>
<code>Retype new SMB password:</code>
<code>Added user user1.</code>
查看Samba用户有哪些:
<code>[root@rh1 ~]</code><code># pdbedit -L</code>
<code>user1:1001:</code>
<code>[mytmp] </code><code>#共享名</code>
<code># comment = All Printers #添加注释</code>
<code> </code><code>path = </code><code>/data/tmp</code> <code>#共享文件路径</code>
<code> </code><code>writable = no </code>
<code> </code><code>#此项默认为no,不添加默认为no</code>
<code> </code><code>write list = user1</code>
<code> </code><code>#表示只有添加了的用户才有写的权限。</code>
<code> </code><code>valid </code><code>users</code> <code>= user1</code>
<code> </code><code>#有效的用户,表示只有添加了的用户才有权限访问此共享。</code>
<code> </code><code>browseable = </code><code>yes</code> <code>#是否可以看到此共享。</code>
<code> </code><code>#此项默认为yes,不添加默认为yes</code>
<code> </code><code>hosts deny = 10.42.1.26</code>
<code> </code><code>hosts allow = 10.42.1.26</code>
<code> </code><code>#当二者添加的IP冲突,allow优先!</code>
<code> </code><code>public = </code><code>yes</code> <code>#是否允许匿名登录,不写默认为no</code>
<code> </code><code>#public允许的时候,valid user需要注释掉,匿名才能访问。</code>
<code> </code><code>hosts deny = 10.42.1.0</code><code>/24</code>
<code> </code><code>#此网段仅26号可以访问。但是其它网段默认都allow!!</code>
<code> </code><code>#Samba的规则是尽可能允许!</code>
testparm 语法检测命令
用Linux挂载
客户端需要安装cifs-utils这个包,否则挂载会报错,注意!
<code>[root@rh2 ~]</code><code># mount -t cifs //10.42.1.27/mytmp /data/ -o username=user1</code>
setsebool -P samba_enable_home_dirs 1
chcon -t samba_share_t /data/tmp/ -R
登录到共享目录,如果不指定用户名,则为匿名登录
<code>[root@rh2 ~]</code><code># smbclient //10.42.1.27/mytmp</code>
<code>Enter root's password: </code>
<code>Anonymous login successful</code>
<code>Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]</code>
<code>smb: \> </code><code>ls</code>
<code> </code><code>. D 0 Tue Oct 13 16:19:28 2015</code>
<code> </code><code>.. D 0 Mon Oct 12 17:56:14 2015</code>
<code> </code><code>inter.txt N 0 Mon Oct 12 17:56:27 2015</code>
<code> </code><code>11 N 0 Tue Oct 13 16:19:28 2015</code>
<code> </code><code>新建文本文档.txt A 0 Tue Oct 13 14:27:27 2015</code>
<code> </code><code>58929 blocks of size 1048576. 51134 blocks available</code>
添加子配置文件,在全局设置部分里面添加
<code> </code><code>server string = Samba Server Version %</code><code>v</code>
<code> </code><code>config </code><code>file</code> <code>= </code><code>/etc/samba/</code><code>%U.conf </code>
<code> </code><code>#添加此行,并在samba目录中为单独用户名添加配置文件。</code>
添加到fstable文件,开机挂载
UUID=1d3ca96b-b587-4c99-8237-06f5c315a252 swap swap defaults 0 0
//10.42.1.27/mytmp /data cifs defaults,credentials=/etc/samba/cred.txt 0 0
创建/etc/samba/cred.txt这个文件,添加用户名,密码
username=user1
password=redhat
目前客户端只有root才能在挂载的cifs目录下进行写操作。其它的用户没有权限,如何添加:
在客户端fstable文件中添加挂载选项
<code>defaults,credentials=</code><code>/etc/samba/cred</code><code>.txt,multiuser,sec=ntlmssp</code>
然后su到一个非root用户,运行命令
<code>[chomperwu@rh2 data]$ cifscreds add -u user1 10.42.1.27</code>
输入服务端user1用户的密码就ok了
如果要清除这个用户的权限,运行命令
<code>[chomperwu@rh2 data]$ cifscreds clearall</code>
但是运行之后,权限并没有被清除,还是可以写???
本文转自 chomperwu 51CTO博客,原文链接:http://blog.51cto.com/chomper/1702621,如需转载请自行联系原作者