一、目标设想
二、samba源码安装
三、创建配置文件  
四、添加用户及创建相关目录
五、启动samba及双向访问
六、其它



一、目标:
用户组:cloud
组中用户:william,lqs
组中每个用户,对各自的目录有读写权限;
william对lqs目录有可读权限,但lqs不可访问william目录。



二、安装:



1. wget http://ftp.samba.org/pub/samba/stable/samba-3.5.8.tar.gz 
2. tar -zxvf samba-3.5.8.tar.gz 
3. cd samba-3.5.8 
4. cd source3
5. ./configure && make && make install

注:源码安装,注意命令路径,以及配置文件的路径。



另外,源码解压以后,里面有source3和source4,我们安装的是3,source4目前还是测试版本。 



还需要指定samba库文件的位置,否则可能会报错: 



1. vi /etc/ld.so.conf.d/samba.conf,添加:  
2. /usr/local/samba/lib  
3. /sbin/ldconfig -v

三、配置文件(注意源码安装方式的samba的配置文件位置!):
/usr/local/samba/lib/smb.conf:



1. [global] 
2. workgroup =hdtworld.com 
3. server string = Samba
4. load printers = no
5. printing = bsd
6. printcap name
7. disable spoolss = yes
8. security = user 
9. passdb backend = smbpasswd
10. smb passwd file
11. encrypt passwords = true
12. unix charset = GB18030
13. log file
14. max log size = 50
15. socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
16. interfaces = lo
17. bind interfaces only = yes
18. hosts allow = 127.0.0.1 192.168.0.0/16  #也可以指定具体的IP
19. hosts deny = 0.0.0.0/0 
20. dns proxy = no
21.  
22. [william] 
23. comment = samba
24. read only = no
25. writable = yes
26. browseable = no
27. public = no
28. guest ok = no
29. create mode = 0644
30. force create mode = 0644
31. directory mode = 0755
32. force directory mode = 0755
33. #valid users
34. #write list = william
35. valid users = william
36. path
37.  
38. [lqs] 
39. comment = samba
40. read only = no
41. writable = yes
42. browseable = no
43. public = no
44. guest ok = no
45. create mode = 0644
46. force create mode = 0644
47. directory mode = 0755
48. force directory mode = 0755
49. valid users
50. write list = lqs
51. path = /opt/share/lqs

注:按自己的实际需求修改global模块的host allow和interfaces,以及设定共享模块名称。很重要噢!






四、



添加系统组及用户:




1. groupadd cloud 
2. useradd william -g cloud -s /sbin/nologin 
3. useradd lqs -g cloud -s /sbin/nologin


为系统用户创建samba密码(注意命令路径):




1. /usr/local/samba/bin/smbpasswd -a lqs  
2. /usr/local/samba/bin/smbpasswd -a william


创建目录:



1. cd /opt 
2. mkdir -p share/william 
3. mkdir -p share/lqs


更改目录属主:




1. chown -R william:cloud share/wiliam 
2. chown -R lqs:cloud share/lqs


设置目录权限,配合后面配置文件中的权限设定,以保证其它用户无法访问william目录,而william目录可以访问其它目录(只读)。




1. chmod 777 share 
2. chmod 755 share/lqs 
3. chmod 700 share/william


注:这个过程中注意三种用户:windows用户,linux用户,samba用户。



另注:曾经遇到过没有密码文件的问题。配置文件及各个步骤都按照上述示例做的,但是在使用smbpasswd -a命令设置密码时,它没有创建密码文件,即使我手动创建一个密码文件,它也不往里面写入数据。



怀疑它把密码创建到private目录里的secrets.tdb文件中。



这个不影响samba的使用,按正常方式输入用户名和密码访问即可。






五、启动与关闭:



1. /usr/local/samba/sbin/nmbd -D 
2. /usr/local/samba/sbin/smbd -D  
      
 
  
1. kill -9 $(pgrep nmb) 
2. kill -9 $(pgrep smb)

 



linux与windows双向访问



1、windows读写linux目录的方法非常简单:




1. \\192.168.9.45\william 
2. \\192.168.9.45\lqs

注:后面的william和lqs,实际上是模块的名称,而不是模块路径。这一点要注意。






2、linux读写windows目录,分两个步骤:
  1)首先在Windows中:
  在F盘中创建share文件夹,并使其共享;创建一个系统用户user01,并为share目录添加该用户;
  2)然后在CentOS上:



1. mkdir -p /opt/myshare 
2. mount -t cifs -o username=user01

   曾出错,错误提示:mount error 92 = Protocol not available,Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)。



   解决:是由于windows的netlogon服务没有打开!
   参考文档:http://blogold.chinaunix.net/u3/114273/showart_2417219.html。



    它把linux挂载windows总结了三步曲:
    第一步:检查windows里的共享文件夹是否可共享。这一步最容易忽视,我就在这个地方栽的跟头!
    第二步:创建windows的系统用户,并添加到共享目录。
    第三步:在linux里挂载windows目录:参考前面段落中的命令。



 



   错误提示2:




1. mount: block device //192.168.27.56/share is write-protected, mounting read-only 
2. mount: cannot mount block device //192.168.27.56/share read-only

解决:yum install samba-client



  



    而Windows访问Samba最常见的错误是:



    由于没有关闭iptables,没有关闭selinux,导致虽然连接成功,但访问samba模块失败。错误提示为:    \\$IP\$ModuleName 无法访问,您可能没有权限使用网络资源。请与这台服务器的管理员联系......



  解决:关闭iptables和selinux




1. setenforce 0 
2. service iptables stop


    最好在selinux的配置文件中关闭它,路径为:/etc/selinux/config。iptables最好用chkconfig命令,关闭其自启动。 

六、其它:

    从这次samba服务器搭建实践来看,samba的权限设置应该包括两个层次:操作系统中的目录本身的权限,以及smb.conf模块中设置的用户权限。