免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6072 | 回复: 5

[samba] Samba 共享, 同时支持开方式及带限制的访问 [复制链接]

论坛徽章:
0
发表于 2014-09-10 15:56 |显示全部楼层
不材,之前无法解决这个问题,想来发个帖子求助各前辈,不过在一边发贴一边查资料的过种中已找到解决方法,特发一个帖子在这里,希望可以帮助到有需要的人。

举例,我有一个目录,/home/share需要共享出来让Windows访问,但同时需要支持以下两种方式认证方式:

1.无密码直接进入(如\\servername\read\)可写,不可以删除(权限可以通过系统的ACL控制)
2.通过通过用户及密码认证(此条不知如何实现)可(如\\servername\wirte\)读写(只好通过控制IP源的方式来实现)。

[read]
        comment = shared folder
        path = /home/share
        browseable = yes
        read only = no
        public = yes
        guest ok = yes
        create mask = 1575
        read list = guest

[wirte]
        comment = shared folder
        path = /home/share
        browseable = yes
        read only = no
        public = yes
        guest ok = yes
        writable = yes
        read list = guest
        write list = guest
        allow hosts = 10.129.132.206/23

论坛徽章:
0
发表于 2014-09-11 08:35 来自手机 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
24
天蝎座
日期:2014-05-13 18:05:59IT运维版块每日发帖之星
日期:2015-11-26 06:20:00操作系统版块每月发帖之星
日期:2015-12-02 14:57:54IT运维版块每月发帖之星
日期:2016-01-07 23:01:56IT运维版块每周发帖之星
日期:2016-01-07 23:04:2615-16赛季CBA联赛之青岛
日期:2016-01-23 07:58:272016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之北控
日期:2016-03-23 14:20:06IT运维版块每日发帖之星
日期:2016-04-01 06:20:0015-16赛季CBA联赛之吉林
日期:2016-06-28 13:51:54IT运维版块每日发帖之星
日期:2016-07-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-23 06:20:00
发表于 2014-09-11 18:18 |显示全部楼层
本帖最后由 woxizishen 于 2014-09-11 18:27 编辑

2.通过通过用户及密码认证(此条不知如何实现)可(如\\servername\wirte\)读写(只好通过控制IP源的方式来实现)。


很簡單,給你看看samba工作方式你能立即明白,用戶模式超級簡單,難的是後面的域模式,尤其是自己做主域控制器提供認證。哥這裡給你提供我自己總結的一小部分。samba我總共總結了45頁。


5种认证方式(工作模式):
Samba对客户端身份的认证有五种手段:共享级(share-level)、用户级(user-level)、服务器级(server-level)、域认证(domain-level)、ads(活动目录域模式)。共享级就不说了基本上就是不需要提供账号和密码就可登陆了呗,user用户级则是要求客户端必须提供账号和密码。



domain-level下,由PDC或BDC完成认证。
share-level和user-level是最常用的两种认证手段,user-level是Samba配置的默认值。


share(共享模式)
这两种模式在客户端的区别表现在:share-level模式下对Samba服务器的访问无须进行身份验证,也就是不用输入用户名和密码(也就是允许匿名访问),用户的访问权限仅由相应用户对共享文件的访问权限决定。最不安全的一种Samba服务器访问方式。除非是很小的网络,一般不这样设置
在share-level下有中特殊情况是,假如某个共享资源设置了
guest ok = yes
guest only = yes
guest account = 某个用户的账户          匿名用户使用该账号登入
当客户端连接时,Samba自动把guest account指定账户拥有的权限赋予客户端以访问共享资源,此时,客户端甚至不需要提供密码。这只是一种不需要输入密码的方式,其他方法也可以实现。例如:
[reminst]                           共享目录的名称
browseable = yes
path = /tftpboot
guest ok = yes                        匿名用户以guest登陆
writable = yes



user(用户模式)(注意:当samba服务器自身做PDC时,需要设定为user模式)
user-level模式下客户端要同时输入用户名和密码才行。用户对Samba服务器的访问是由Samba服务器依据本地账户数据库对访问用户进行身份验证的,安全级别比share模式高一些。这就要求每个访问用户必须在Samba服务器上有它本地的Linux用户账户
而在服务器端,这两种模式的区别很小:Samba都要使用用户名、密码组合进行身份验证。user-level下,Samba会把客户端传递来的用户名和密码与本地数据库中的记录进行检验。share-共享模式下,因为客户端没有传递用户名,Samba会使用smb.conf文件中某个资源段提供的用户名,以及编译Samba过程中置入的默认用户名分别与密码进行组合,然后与本地数据库中的记录进行对比,只要有一个组合能通过验证,就让客户端以对应用户名对应用户拥有的权限访问共享资源。假如所有的组合都没有通过验证,则拒绝客户端的访问。

注意第二种user模式还可以用来做PDC主域控制器,此时他是可以为windows客户端电脑和用户做登陆身份验证。经测试,实质上如果真是用来对windows客户端电脑做登陆验证还是用windows的主域控制器,别折腾了,使用了samba3.0版发现测试当中还是有不少问题的,如果只是简简单单用来做文件服务器,到时可以考虑用samba替代windows。





server(代理验证模式)
为何叫他为代理验证模式,因为设定成此安全模式,samba的身份验证就先交给你指定的那台服务器帮你验证了噢,除非那台服务器验证失败,才会再退到由samba服务器本身来验证。
这种模式的用户访问是由其他专门的服务器对访问用户进行身份验证,安全级别又比user模式高一些。这个服务器可以是Windows NT/2000/2003或其他Samba服务器。
Server模式与user模式其实是类似的,只不过实现身份验证的不是本地Samba服务器,而是网络中的其他服务器。如果在指定的服务器上身份验证失败,则退到user安全级,采用本地Samba服务器对访问用户进行身份验证。所以,从用户端来看,server模式和user模式没什么本质区别,只是用于身份验证的服务器的位置不一样。
设置server模式时需要对smb.conf文件进行如下修改:
1. security = server           # 设置工作模式为server  
2. guest account = Samba   # 指定来宾账户为Samba
(当然也可以是其他账户名称)
3. password server = pwdserver     # 指定用于身
份验证的服务器NetBIOS名称或者他的ip地址。注意:不要把这里和下面的域模式相混淆。

 
4. encrypt passwords = yes     # 指定用户口令在验
证过程中加密发送。本语句也需要新添加  
5. smb passwd file = /etc/Samba/smbpasswd  #  
设置密码文件名和路径。本语句也需要新添加 



domain(域成员模式)类似第五种ADS模式
这种模式是把Samba服务器加入到Windows域网络中,作为windows域中的成员。但在这种模式中,担当用户对Samba服务器的访问身份验证的是windows域中的PDC(主域控制器),而不是Samba服务器。采用这种模式时,主配置文件smb.conf需要进行以下修改(同时要用"#"符号注释掉默认文件中的smb passwd file=/etc/Samba/smbpasswd语句):
1. security = domain    # 设置工作模式为domain  
2. workgroup = domain       # 指定Windows域名(注意这个和上面的server模式区别就是,这里是将samba服务器加入到windows域中,作为域的成员了,那么所有账号和密码验证就和samba服务器半毛钱关系都没有了,而是由下面指定的PDC域控制器来做身份验证。所以只需要在那台PDC建立用户账号和密码就可以访问这台samba服务器了啦。)  

3. password server =&nbspDC_NAME   # 指定担当身
份验证服务器的PDC的NetBIOS名称或ip地址。 官方建议在这里直接使用*参数,也就是
password server = * ,这样的话samba服务器可能会寻找PDC或者寻找BDC这样就减少了PDC的负荷。当然这个前提你的域中有一个PDC和多台BDC否则设定这个参数没意义。






ads(活动目录模式)
这是Linux系统Samba服务器的一种新工作模式(原来只有前4种),用于把Samba服务器加入到Windows 2000 Server、Windows Server 2003域中。
采用ads工作模式时,主配置文件smb.conf需要进行以下修改:
1. security = ads      # 设置工作模式为ads  
2. realm = MY_REALM    # 指定Windows域名(DNS格式)  
3. ads server = ads_server     # 指定担当身份
验证服务器的服务器DNS名称 


第四种domain和第五种ads模式区别:
ads活动目录域模式对于Samba 3.X 是比较新的,比RPC模式更加成熟一些。ADS模式可以不考虑Windows的域控制器工作在什么模式下和域功能级别。
windows2000/2003的主域控制器必须运行在混合模式下,才可以在/etc/samba/smb.conf中设定security=domain,该模式为RPC模式,RPC(远程过程调用)模式的域成员是"NT4"样式的域成员,只有在混合模式下,Samba基于RPC的域成员代码可以很好地与Windows2000/2003域控制器工作。混合模式是Windows2000/2003域控制器的默认运行模式。
如果windows的DC域控制器的运行模式/域功能级别被升级到了2000或者2003主动模式,DC域控制器仅仅与samba的ADS模式通信.







以下参数是配置个别人用户和群组的权限,這可能是你需要的 呵呵
writelist    该参数比较特殊,在该参数后的用户或群组都有写入权限
格式:
write list = 用户, @群组

valid users指定能够看到该共享资源的用户和组。

invalid users指定不能够看到该共享资源的用户和组。

read list 指定只能读取该共享资源的用户和组。

write list指定能读取和写该共享资源的用户和组。

admin list指定能管理该共享资源(包括读写和权限赋予等)的用户和组。

public指明该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ok = yes其实和public = yes是一样的。

force user强制把建立文件的属主是谁。例如:我有一个目录,只想让用户写入文件,不想让用户删除文件,那么可以使用该选项。
例如:force user =  root
create mask = 0755
那么这些文件就就只能root删除了。这里可能只是针对特殊的用户群体使用,一般几乎使用不上该参数。














论坛徽章:
0
发表于 2014-09-12 10:39 |显示全部楼层
本帖最后由 ChinaID 于 2014-09-12 10:41 编辑

回复 3# woxizishen


    凡是加force user之后就不可以访问,出现“The Security ID structure is invalid”的错误提示,哪怕将force user设置成=nobody也一样。

    目前可以通过ready only=no, guest ok=yes, create mask=1400可以实现任意用户可以新建文件,更改文件名,但是不能在文件里面写入内容。

    如果去掉read only=no,则任何人可以以直读访问,如果去掉guest ok=yes,刚任何人都无法访问共享目录。

    目前只差一步,让用户可以在文件里面写入内容并保存就解决问题了,求解。

论坛徽章:
0
发表于 2014-09-12 10:43 |显示全部楼层
由于这个共享目录的文件量很大(无法改变的事实),所以想通过从WINDOWS共享转换到LINUX共享的方式提高读取效率,因为WINDOWS无法承受一个目录下有几十万个文件的遍历。

论坛徽章:
24
天蝎座
日期:2014-05-13 18:05:59IT运维版块每日发帖之星
日期:2015-11-26 06:20:00操作系统版块每月发帖之星
日期:2015-12-02 14:57:54IT运维版块每月发帖之星
日期:2016-01-07 23:01:56IT运维版块每周发帖之星
日期:2016-01-07 23:04:2615-16赛季CBA联赛之青岛
日期:2016-01-23 07:58:272016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之北控
日期:2016-03-23 14:20:06IT运维版块每日发帖之星
日期:2016-04-01 06:20:0015-16赛季CBA联赛之吉林
日期:2016-06-28 13:51:54IT运维版块每日发帖之星
日期:2016-07-01 06:20:00IT运维版块每日发帖之星
日期:2015-11-23 06:20:00
发表于 2014-09-15 07:52 |显示全部楼层
回复 4# ChinaID


在提醒點,你共享最上層目錄的權限你設定是否妥當,包括宿主和宿主群組。那些參數是samba限定和你系統上的資料夾權限你不要混淆。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP