服务器:Ubuntu 10.04 LTS
Samba版本:3.4.7
注:本文不会对每个参数,设置的值具体是什么意思做深入的阐述,本文的目的是使用这些配置,立即可用。
Ubuntu下面安装samba服务器是很简单的。
$ sudo aptitude install samba
首先确定我们要提供共享的目录,比如我们在/hd1下面建立两个目录供远程用户访问,首先创建两个目录。
$ mkdir /hd1/landisk01
$ mkdir /hd1/landisk02
然后修改他们的权限,这步很重要,权限不对会直接影响远程用户可否访问:
$ chmod 1777 /hd1/landisk01
$ chmod 1777 /hd1/landisk02
安装完毕后,samba的服务就应该自动启动了。下面进行具体的配置。
samba配置文件位置:
/etc/samba/smb.conf
配置之前记得备份一下把。:)
我们的配置,是基于系统已经提供的smb.conf来进行的,有一些没有涉及到的地方,就默认的表示使用自动生成的smb.conf中的内容。
关于smb.conf的具体构成,以及每个设定变量详细的意思,可以参考samba的文档。
大体上有两段:[global]和[各共享资源名]
首先来设置一下编码,好多朋友会遇到在Windows下面文件名出现乱码的情况。
我们添加如下设置:
unix charset = UTF-8 dos charset = CP936 display charset = UTF-8
然后设置一下workgroup
workgroup = WORKGROUP netbios name = s01
你还可以设置允许那些网段访问,比如
hosts allow = 10.0.1.0/24 10.0.10.0/24 127.0.0.1
它给出了10.0.1.x以及10.0.10.x网段,以及本机可以访问此samba服务
然后就到关于认证设置的地方了,我么使用以下设置
security = user username map = /etc/samba/smbusers
encrypt passwords = true
passdb backend = tdbsam
关于/etc/samba/smbusers,我没有具体的看samba的手册,我启动服务器的时候提示我找不到这个文件,我就touch了一个,现在没有具体测试。先touch一个吧,记得用sudo
$ sudo touch /etc/samba/smbusers
回头看了准确的解释再补上:)
然后设置禁止root访问,以及不同步linux密码
invalid users = root unix password sync = no
其它的地方保持默认吧,然后在往下,有关于打印机的设置,我是关闭打印机列表的。如下设置:
load printers = no disable spoolss = yes
在进入资源定义区域之前,我追加了一个全局允许guest访问的。
usershare allow guests = yes
到这里[global]定义就告一段落。下面进行各共享资源的定义。
在默认自动生成的smb.conf文件中,你会看到默认的[share][home],这些就是共享名,意味着你在比如windows下面,你就会看到这些名字的共享盘一样。关于print***开头的,可以放在那边,即使有,也不会起作用,在客户端也看不到相关的打印机,在上面全局定义中已经关闭掉了。
然后我们开始自己的共享资源定义,先把[share][home]相关的内容都注释掉吧。我们将要定义两个共享资源,landisk01和landisk02,两个用户user01,user02,以及一个用户组group01。他们对于资源访问的权限如下。
------ | landisk01 | landisk02 |
user01 | 读写 | 只读 |
user02 | 只读 | 读写 |
group01 | 只读 | 只读 |
下面是对于landisk01资源的设定
[landisk01] comment = LanDisk 01, movies, musics and other. path = /hd1/landisk01 browseable = yes writable = yes create mask = 0766 force create mode = 0766 directory mask = 0777 force directory mode = 0777 directory security mask = 0777 force directory security mode = 0777 guest ok = no
# Users and Groups with access: valid users = user01 user02 @group01 # Users and Groups with write access: write list = user01 # Users and groups with read-only access: read list = user02 @group01
下面是对于landisk02的设置
[landisk02] comment = LanDisk 02 path = /hd1/landisk02 browseable = yes writable = yes create mask = 0766 force create mode = 0766 directory mask = 0777 force directory mode = 0777 directory security mask = 0777 force directory security mode = 0777 guest ok = no
# Users and Groups with access: valid users = user01 user02 @group01 # Users and Groups with write access: write list = user02 # Users and groups with read-only access: read list = user01 @group01
如果你要对某个资源中,使用垃圾箱机制(删除文件时,不是完全删除,而是放入你指定的文件夹),你可以在某个资源中添加如下设置。
# and recycle function # enable recycle vfs objects = recycle recycle:repository = .recycle # do not to keep the directory tree when move to recycle recycle:keeptree = no # change the name when file have same name recycle:versions = yes # do not to update the timestamp when move to recycle recycle:touch = no recycle:maxsize = 0 recycle:exclude = *.tmp ~$*
会把你删除的文件,都放如到.recycle目录中,这个在客户机上看不到,你可以登陆到服务器看到.recycle中的内容。另外,这些仅仅对于你在客户端删除文件时起作用,你在服务器上使用rm操作,是不会起作用的。
好了,到这里为止,你的设置应该ok了,我们可以使用以下命令来check一下你的配置。
$testparm /etc/samba/smb.conf
$ sudo service smbd restart
关于服务的名字是否一定叫smbd,我不敢肯定,我遇到过叫smb,也遇到过叫samba的,不知道为何。你可以使用tab来让系统给你提示吧。:)
samba的用户,必须要基于一个linux用户,此linux用户是否可以实际登陆shell等,不受限制,通常我都是让samba的用户不具有登陆shell的权限。
首先,添加user01,user02,的Linux用户
$ sudo useradd -s /usr/sbin/nologin user01
$ sudo useradd -s /usr/sbin/nologin user02
然后使用pdbedit来追加相应的samba用户
$ sudo pdbedit -a -u user01
$ sudo pdbedit -a -u user02
要修改samba用户的用户密码,使用如下命令(实际Linux的密码并不会改变)
$ sudo smbpasswd user01
$ sudo smbpasswd user02
要删除一个samba用户(实际的linux用户并不会删除)
$ sudo pdbedit -x 用户名
OK,到此,你可以在远程用刚刚追加的用户尝试看看把。
END
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。