Ubuntu下Samba服务器的简单设置,只读,可读写等权限控制。

服务器:Ubuntu 10.04 LTS
Samba版本:3.4.7
注:本文不会对每个参数,设置的值具体是什么意思做深入的阐述,本文的目的是使用这些配置,立即可用。

1,samba的安装

Ubuntu下面安装samba服务器是很简单的。
$ sudo aptitude install samba

2,共享目录的创建

首先确定我们要提供共享的目录,比如我们在/hd1下面建立两个目录供远程用户访问,首先创建两个目录。
$ mkdir /hd1/landisk01
$ mkdir /hd1/landisk02
然后修改他们的权限,这步很重要,权限不对会直接影响远程用户可否访问
$ chmod 1777 /hd1/landisk01
$ chmod 1777 /hd1/landisk02

3,具体配置

安装完毕后,samba的服务就应该自动启动了。下面进行具体的配置。
samba配置文件位置:
/etc/samba/smb.conf
配置之前记得备份一下把。:)
我们的配置,是基于系统已经提供的smb.conf来进行的,有一些没有涉及到的地方,就默认的表示使用自动生成的smb.conf中的内容。
关于smb.conf的具体构成,以及每个设定变量详细的意思,可以参考samba的文档。
大体上有两段:[global]和[各共享资源名]

4,[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]定义就告一段落。下面进行各共享资源的定义。

5,共享资源定义

在默认自动生成的smb.conf文件中,你会看到默认的[share][home],这些就是共享名,意味着你在比如windows下面,你就会看到这些名字的共享盘一样。关于print***开头的,可以放在那边,即使有,也不会起作用,在客户端也看不到相关的打印机,在上面全局定义中已经关闭掉了。
然后我们开始自己的共享资源定义,先把[share][home]相关的内容都注释掉吧。我们将要定义两个共享资源,landisk01和landisk02,两个用户user01,user02,以及一个用户组group01。他们对于资源访问的权限如下。

------landisk01landisk02
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

6,重新启动一下你的samba服务器吧。

$ sudo service smbd restart
关于服务的名字是否一定叫smbd,我不敢肯定,我遇到过叫smb,也遇到过叫samba的,不知道为何。你可以使用tab来让系统给你提示吧。:)

7,添加相应用户

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

0 Responses to "Ubuntu下Samba服务器的简单设置,只读,可读写等权限控制。"