一、目标设想
二、samba源码安装
三、创建配置文件
四、添加用户及创建相关目录
五、启动samba及双向访问
六、其它
一、目标:
用户组:cloud
组中用户:william,lqs
组中每个用户,对各自的目录有读写权限;
william对lqs目录有可读权限,但lqs不可访问william目录。
二、安装:
-
wget http://ftp.samba.org/pub/samba/stable/samba-3.5.8.tar.gz
-
tar -zxvf samba-3.5.8.tar.gz
-
cd samba-3.5.8
-
cd source3
-
./configure && make && make install
注:源码安装,注意命令路径,以及配置文件的路径。
另外,源码解压以后,里面有source3和source4,我们安装的是3,source4目前还是测试版本。
还需要指定samba库文件的位置,否则可能会报错:
-
vi /etc/ld.so.conf.d/samba.conf,添加:
-
/usr/local/samba/lib
-
/sbin/ldconfig -v
三、配置文件(注意源码安装方式的samba的配置文件位置!):
/usr/local/samba/lib/smb.conf:
-
[global]
-
workgroup =hdtworld.com
-
server string = Samba Server %v
-
load printers = no
-
printing = bsd
-
printcap name = /dev/null
-
disable spoolss = yes
-
security = user
-
passdb backend = smbpasswd
-
smb passwd file = /usr/local/samba/lib/smbpasswd
-
encrypt passwords = true
-
unix charset = GB18030
-
log file = /var/log/samba/log.%m
-
max log size = 50
-
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
-
interfaces = lo eth0 #注意改成你自己的网卡接口
-
bind interfaces only = yes
-
hosts allow = 127.0.0.1 192.168.0.0/16 #也可以指定具体的IP
-
hosts deny = 0.0.0.0/0
-
dns proxy = no
-
-
[william]
-
comment = samba directory for william
-
read only = no
-
writable = yes
-
browseable = no
-
public = no
-
guest ok = no
-
create mode = 0644
-
force create mode = 0644
-
directory mode = 0755
-
force directory mode = 0755
-
#valid users = @cloud
-
#write list = william
-
valid users = william
-
path = /opt/share/william
-
-
[lqs]
-
comment = samba directory for lqs
-
read only = no
-
writable = yes
-
browseable = no
-
public = no
-
guest ok = no
-
create mode = 0644
-
force create mode = 0644
-
directory mode = 0755
-
force directory mode = 0755
-
valid users = @cloud
-
write list = lqs
-
path = /opt/share/lqs
注:按自己的实际需求修改global模块的host allow和interfaces,以及设定共享模块名称。很重要噢!
四、
添加系统组及用户:
-
groupadd cloud
-
useradd william -g cloud -s /sbin/nologin
-
useradd lqs -g cloud -s /sbin/nologin
为系统用户创建samba密码(注意命令路径):
-
/usr/local/samba/bin/smbpasswd -a lqs
-
/usr/local/samba/bin/smbpasswd -a william
创建目录:
-
cd /opt
-
mkdir -p share/william
-
mkdir -p share/lqs
更改目录属主:
-
chown -R william:cloud share/wiliam
-
chown -R lqs:cloud share/lqs
设置目录权限,配合后面配置文件中的权限设定,以保证其它用户无法访问william目录,而william目录可以访问其它目录(只读)。
-
chmod 777 share
-
chmod 755 share/lqs
-
chmod 700 share/william
注:这个过程中注意三种用户:windows用户,linux用户,samba用户。
另注:曾经遇到过没有密码文件的问题。配置文件及各个步骤都按照上述示例做的,但是在使用smbpasswd -a命令设置密码时,它没有创建密码文件,即使我手动创建一个密码文件,它也不往里面写入数据。
怀疑它把密码创建到private目录里的secrets.tdb文件中。
这个不影响samba的使用,按正常方式输入用户名和密码访问即可。
五、启动与关闭:
-
/usr/local/samba/sbin/nmbd -D
-
/usr/local/samba/sbin/smbd -D
-
kill -9 $(pgrep nmb)
-
kill -9 $(pgrep smb)
六、
linux与windows双向访问
1、windows读写linux目录的方法非常简单:
-
\\192.168.9.45\william
-
\\192.168.9.45\lqs
注:后面的william和lqs,实际上是模块的名称,而不是模块路径。这一点要注意。
2、linux读写windows目录,分两个步骤:
1)首先在Windows中:
在F盘中创建share文件夹,并使其共享;创建一个系统用户user01,并为share目录添加该用户;
2)然后在CentOS上:
-
mkdir -p /opt/myshare
-
mount -t cifs -o username=user01 //192.168.27.56/share /opt/myshare
曾出错,错误提示: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:
- mount: block device //192.168.27.56/share is write-protected, mounting read-only
- 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
-
setenforce 0
-
service iptables stop
最好在selinux的配置文件中关闭它,路径为:/etc/selinux/config。iptables最好用chkconfig命令,关闭其自启动。
六、其它:
从这次samba服务器搭建实践来看,samba的权限设置应该包括两个层次:操作系统中的目录本身的权限,以及smb.conf模块中设置的用户权限。
------------------------------------------------------------------
2011-10-14修订:
今天遇到了另外一个问题。今天又搭建了一个samba,共享目录及其父目录的权限也改成了777,但是linux共享目录里的文件对windows不可见!也就是说,我从windows里访问这个共享目录时,看不到其中的文件,所有文件都看不到!但是从windows里创建的文件,在linux和windows中都可以看得到。
从网上搜索了一下,解决办法也是关闭selinux:setenforce 0