服务器: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。他们对于资源访问的权限如下。
------ 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
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服务器的简单设置,只读,可读写等权限控制。"
Post a Comment