如何设置Samba服务来实现“windows用户在网上邻居中隐藏自己无权限访问的目录”?

配置了一台Samba服务器,给客户使用,当有八九个目录后,把每个目录设置为browseable=yes后,发现某些用户没有权限访问的目录,在网上邻居中也能浏览;如果设置成
browseable=no,自己有权限进入的目录却不能显示在网上邻居的列表中!

找了很多资料,还是没有找到,郁闷了许久!那位高人能指教指教吗?

我现在的smb.conf文件如下:
[global]
workgroup = Shnas
client code page = 936
;security = server
security = user
server string = 4000
encrypt passwords = Yes
username level = 8
map to guest = Bad User
null passwords = Yes
max log size = 10
name resolve order = bcast wins
socket options = TCP_NODELAY SO_KEEPALIVE SO_SNDBUF=8192 SO_RCVBUF=8192
os level = 32
preferred master = Yes
dns proxy = No
config file = /etc/config/smb.conf
smb passwd file=/etc/config/smbpasswd
username map = /etc/config/smbusers
guest account = guest
; force create mode = 0111
directory mask = 0777
create mask = 0664
; veto files = /.*/
; show add printer wizard = no
; nt smb support = no
; nt pipe support = no
oplocks = no
locking = yes
disable spoolss = yes
Netbios name = QNAPNas
interfaces = eth0
wins support = yes
bind interfaces only = no
force directory mode = 0777
force create mode = 0664
character set =
force directory security mode = 0777
password server = 172.56.1.11
[public]
comment = disk for public display
path = /share/MD0_DATA/home/public
browsable = yes
invalid users = guest
read list = @"everyone"
write list = @"administrators"
[guest]
comment = disk for guest download
path = /share/MD0_DATA/home/guest
browsable = yes
invalid users =
read list = @"everyone",guest
write list = @"QNAP",@"administrators"
[frankxu]
comment = disk for frankxu
path = /share/MD0_DATA/home/frankxu
browsable = yes
invalid users = guest
read list =
write list = frankxu
[bojiang]
comment = disk for bojiang
path = /share/MD0_DATA/home/bojiang
browsable = yes
invalid users = guest
read list =
write list = bojiang
[junxiao]
comment = disk for junxiao
path = /share/MD0_DATA/home/junxiao
;browsable = no
invalid users = %G
;read list =
;write list = junxiao
read only = no
[leozhang]
comment = disk for leozhang
path = /share/MD0_DATA/home/leozhang
browsable = yes
invalid users = guest
read list =
write list = leozhang
[software]
comment = disk for QNAP software
path = /share/HDC_DATA/home/software
browsable = yes
invalid users = guest
read list =
write list = @"QNAP",@"administrators"
[hijanexiong]
comment = disk for hijanexiong
path = /share/HDC_DATA/home/hijanexiong
browsable = yes
invalid users = guest
read list =
write list = hijanexiong
[tomxie]
comment =
path = /share/HDD_DATA/home/bojiang
browsable = yes
invalid users = guest
read list =
write list = administrator,bojiang,hijanexiong
[service]
comment =
path = /share/HDC_DATA/home/service
browsable = yes
invalid users = guest
read list =
write list = administrator

作者: xionghaijian   发布时间: 2005-06-06

browseable=no
就是登陆以后才看得到,不是很好吗?
用valid user=xxx对访问用户作限制,而不是write list
因为write list只是判断读写权限,而不限制对share的访问权

作者: sfatsdu   发布时间: 2005-06-06

可是这样的话,用户不知道有那些目录是自己的,我的想法是他要先看到这个目录,再去访问这个目录,而不是事先已经知道这个目录,在浏览器中输入地址路径去访问他的!
还有一个问题,其中“invalid users = %S”这一行中,invalid users是什么意思?%S是什么意思?S大小写有区别吗?

作者: xionghaijian   发布时间: 2005-06-06

用security=share就够了
然后guest ok =no禁用guest访问
然后写valid user=xxx
总之,你想限制用户对share 的访问,只有valid user=作限制.不然就是没有限制
The current servicename is substituted for %S. This is useful in
the [homes] section

作者: sfatsdu   发布时间: 2005-06-06

man smb.conf看了看
感觉security=user就是说,要访问samba server,就得先通过认证一步,然后自然的属于这个用户的share就蹦出来了.
security=share较方便,基于每个共享认证.但是如何断定访问的客户名较复杂,可能混乱.

作者: sfatsdu   发布时间: 2005-06-06

当我把smb.conf的一个共享目录设置成如下:
[global]
………
security = share
………
[junxiao]
comment = disk for junxiao
path = /share/MD0_DATA/home/junxiao
guest ok = no
valid user=junxiao
[……… ]
…………

重启SMB服务后,发现在windows xp下登陆用户名时,登陆框中guest用户名变灰,输入junxiao在Linux中对应的密码,不能进入共享文件夹!

作者: xionghaijian   发布时间: 2005-06-07

总之还是
security=user
最好用,anyway,登陆这个服务器先经过认证一步,不是最安全么?

作者: sfatsdu   发布时间: 2005-06-07

下面是我访问时出现的对话框:
上传的图像
Image1.jpg (48.3 KB, 36 次查看)

作者: xionghaijian   发布时间: 2005-06-07

还是改成security=user看看
man smb.conf
里面写道用share安全等级可能会在判断用户名上混乱。

作者: sfatsdu   发布时间: 2005-06-07

对,但我的最终目是:
用户能看到的文件夹,就是他能进入的文件夹;
如果用户看不到这个文件夹,他也就不能进入这个文件夹。
现在最主要的就是不能实现那些客户不能进入访问的文件夹,他也能看得到!

作者: xionghaijian   发布时间: 2005-06-07

你的要求是无法避开先认证再看到属于自己的共享这一步的.
security=share使用默认的用户名去认证共享,可能混乱
security=user解决了这个问题.需要提供username/password

作者: sfatsdu   发布时间: 2005-06-07

再说说你用samba的环境,用windows域了还是一些个人用户?
要是windows域倒方便了,可以让samba到域控制器上认证,实现无缝集成

作者: sfatsdu   发布时间: 2005-06-07

哦,是这样的!
我打个比方说吧。
比如我现在有UserA、UserB、UserC、UserD……UserX、UserY、UserZ一共26个用户,
我给每个用户配置一个个人专用目录为
FolderA、FolderB、FolderC、FolderD……FolderX、FolderY、FolderZ,
再加上所有这26个用户都能访问的公共目录Public1,Public2……
此为还有一些只有部分几个用户,姑且定义为某一个组所共享的目录Group1,Group2……
大体上就是这样的架构!

现在假设用户UserA属于Group1,他对FolderA、Group1、Public1、Public2……有完全访问权限。

我现在的矛盾是:
如果设置security=user,在共享文件夹的section中分别设置这所有的共享文件夹的browsable = yes,那么用户UserA在网上邻居进入这台linux主机的SAMBA服务器时,将能看到所有这些用户的目录:FolderA、FolderB、FolderC、FolderD……FolderX、FolderY、FolderZ、Public1,Public2……、Group1,Group2……

如果设置security=user,在共享文件夹的section中分别设置这所有的共享文件夹的browsable = no,那么用户UserA在网上邻居进入这台linux主机的SAMBA服务器时,将看不到一个文件夹存在,而是要在地址栏中输入\\linux-host-IP\FolderA,才能进入该目录,访问目录内的内容;同样,其它有权限访问的目录,也要输入\\linux-host-IP\XXXX之类的内容,才能进行访问。当然,其它没有权限的共享目录,即使输入相应的目录名称正确,在没有正确的用户名/密码的情况下,是不能进入该目录的!

总的来说,我现在想实现的不是权限能不能进行访问的问题,我要解决的是在网上邻居的浏览器**享文件夹可见不可见的问题。

请注意:点击网上邻居中的机器名后,能看到的就是samba共享出来的第一级目录,也就是这些在section段中定义的目录,要不要在浏览器中显示的问题。

以上的问题,如果用security=user如何实现?
如果用security=server,又如何实现?

sfatsdu兄讲,用windows域比较方便,用windows的域控制器进行认证,请问是不是就是security=server,再把server设成对应的windows域控制器就可以了?

谢谢!

作者: xionghaijian   发布时间: 2005-06-07

可以把所有用户都限制在home嘛
把[home]可以改成path=/home/mdxxx/$u
不必把每个人的共享都分开,登录的时候就进入自己的家目录就可以了把?

作者: fallen   发布时间: 2005-06-07

官方文档是最好的参考:
http://us1.samba.org/samba/docs/man/...TO-Collection/
这一段讲得samba的工作模式,值得精读
http://us1.samba.org/samba/docs/man/...erverType.html
如果你们公司有了ActiveDirectory域,看看这个,如何把samba服务和AD集成
http://us1.samba.org/samba/docs/man/...in-member.html
还有一份文档,全是例子
http://us1.samba.org/samba/docs/man/Samba-Guide/

作者: sfatsdu   发布时间: 2005-06-08

对于samba .通常在系统安装时 /home 都是做为单独分区的,
所以你的解决方案可以是:

把要贡献给各个用户的东西放入 /home/$user 下
并且security=user;
[file]
...
这里面要用 valid user=A B C ...
这样.进入网上邻居后首先看到的只是一台samba主机,双击时是 *出认证窗口的,
当键入用户名/密码后 进入的就只是自己能看到的目录夹了.
当然这个目录夹应该是属于一组用户的 group的了.
应该可以解决你的问题了吧. 如果你想贡献其他目录里的文件,那就用 ln -s 连接到这个目录里好了
如果需要经常使用或者常驻 ,,那就用 mount 挂载到这个目录下好了. 建议用 ln -s

作者: angelsss   发布时间: 2005-06-08

这是我的,你可参考一下
引用:
[global]
log file = /var/log/samba/log.%m
max log size = 1000
netbios name = 自己写
workgroup = 自己写
server string =

client code page=cp936
dos charset = cp936
unix charset = cp936

security = user
encrypt passwords = true
smb passwd file = /etc/samba/smbpasswd

map to guest = Bad User
map to guest = Bad Password
guest account = nobody

[共享文档]
comment = 共享文档
path = /home/netdir
public = yes
writable = yes
create mask = 0666

[FTP]
comment = FTP
path = /home/ftp
read only = no
public = yes


[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775

作者: gnugg   发布时间: 2005-06-09

我出现了跟楼主一样的问题.
如果用share方式,每个用户都要输入用户名和密码.太麻烦
如果用USER方式,输入用户名和密码是,用户名是灰的,锁定的,

有什么解决办法吗?

作者: houshuang   发布时间: 2005-06-18

等人回答呀

作者: houshuang   发布时间: 2005-06-19

这位仁兄的问题,我也找了很多资料还没解决!! 试试 config file = /etc/samba/smb.conf.%G 不同的组使用不同的配置文件可不可以? 传闻再写一个samba模块可以实现.

作者: sailing123   发布时间: 2005-06-20

[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775

这一段,不可以么?。。:)

作者: 晨想   发布时间: 2005-06-20

问题还没解决,老大们给出一个解决方案

作者: sailing123   发布时间: 2005-06-22