samba 共享访问

搞这个东西累死个人,虽然我是EO,但是EO也是人啊!O上帝,原谅我用老一个“搞”字,阿门!


这些东西当你看不懂跟我没关系,当我看不懂就跟我有非同寻常的关系  需要的软件:
system-config-samba-1.2.39-1.el5    (提供了Red Hat公司专门为Samba服务器管理编写的图形界面的管理程序,该程序是Red Hat系统管理工具中的一部分)
samba-common-3.0.28-0.el5.8   (他提供主配置文件smb.conf的语法测试程序testparm等)
samba-3.0.28-0.el5.8          (Samba的主程序)
samba-client-3.0.28-0.el5.8   (提供客户端的工具)

配置文件是: /etc/samba/smb.conf
[global]   全局配置
(74行) workgroup = WORKGROUP      这是设置工作组,跟XP一样就OK
       server string = Samba Server Version %v     工作组的说明而已 注释
     ;username map=/etc/samba/smbusers      指名系统帐号跟虚拟帐号的对应关系文件夹位置(默认没有这个文件的)

日志选项
(88行) # logs split per machine
         log file = /var/log/samba/%m.log     日志存放地方
       # max 50KB per log file, then rotate
         max log size = 50                    设置日志文件最大尺寸,单位KB
[ 使用Samba服务器的每个客户机的日志分别保存在与客户主机同名的“%m.log”文件中,“%m”变量表示客户端主机的名称 ]
其中,当samba服务器刚刚建立好后,只有两个日志文件,分别是 nmbd.logsmbd.log,它们分别记录nmbd和smbd进程的运行日志。
nmbd.log是用来管理群组还NETBOIS解析的 
smbd.log是用来管理samba服务器共享目录,文件与打印等信息
当客户端通过网络访问samba服务器后,会自动添加客户端机器的相关日志  

安全选项
(101行)  security = user
       ;passdb backend = tdbsam
         smb passwd file =/etc/samba/smbpasswd   Samba用户和密码文件(这行要自己加)
[ security值有4个含义
share 表示用户不需要账户及密码即可登入Samba服务器(需要匿名登录就设置他)
user 表示由提供服务的Samba服务器负责检查账户及密码(Samba默认的安全等级,登录需要帐号和密码)
server 表示检查账户及密码的工作指定由另一台Windows服务器或Samba服务器负责 就是说需要转交给其他服务器来验证
domain 表示指定Windows域控制服务器来验证用户的账户及密码 

共享目录  Share Definitions 

(248行开始)
[homes]
        comment = Home Directories
        browseable = no
        writable = yes
      ; valid users = %S
      ; valid users = MYDOMAIN\%S

[printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = no     设置为no表示所有Samba用户的宿主目录不能被看到,只有登录用户才能看到自己的宿主目录共享;这样加强了Samba服务器的安全性
        guest ok = no
        writable = no
        printable = yes
上面这些都注释掉,在下面添加
[eo]                                     这个是共享文件夹名字(可以随便取)
        comment = sharefile directory    共享文件夹的说明,注释而已
        path = /hdtv                     实际上共享的是这个目录,使用绝对路径
        public=yes/no                    设置是否匿名访问
        read only=yes/on                 是否只读(不能读取不代表不能写入,要看写入权限开没有)
        writeable = yes/on               是否写入(只要设置能写入,读取权限可以不设置)
        valid users =                   指定能够进入此资源的特定用户
#valid users=用户名/
@组名    (如果加@符号就代表组名,只有加入这个组的成员才能访问资源,加入组命令在下面有讲解    
不限制帐户的访问(匿名访问)  共享目录:/hdtv
1:设置工作组        
workgroup = WORKGROUP 
2:设置安全           security = share
3:设置共享目录      [eo]
                      comment = sharefile directory
                      path = /hdtv
                       public=yes
                      writeable =yes (写入打开的时候代表能写能读,所以读取权限可以不设置)
需要输入用户名和密码的访问    共享目录:/hdtv
1:设置工作组         workgroup = WORKGROUP 
2:设置安全           security = user
3:设置共享目录      [eo]
                      comment = sharefile directory
                      path = /hdtv
                      writeable =yes
                   
valid users = @dvd ,112   (表示属于DVD组的人可以访问这个目录,112用户也能访问)

现在设置登录系统时的用户名和密码文件

sanba用户名和密码存放在  /etc/samba/smbpasswd  中,默认是没有这个文件的,因为samba启用了tdbsam验证,要注释掉 passdb backend = tdbsam  一行,加上 smb passwd file = /etc/samba/smbpasswd ,然后保存退出
samba帐号并不能直接建立,需要先建立Linux同名的系统帐号。 比如我们要建立一个名为123的samba帐号,那Linux系统中必须提前存在一个同名的123 系统帐号

samba中添加帐号命令为: smbpasswd

命令格式:   smbpasswd -a 用户名
-a:在smbpasswd文件里新增一个用户
-d:让在smbpasswd文件里的某个帐号暂时无法登录samba,多了-d参数时,在smbpasswd里面的某个字段会多出一个D的参数,代表该帐号目前无法使用
-e:与-d相反,恢复某个帐号的使用
[如果我们在添加samba帐号时输入完两次密码出错: Failed to modify password entry for user 123 是因为Linux系统里没有123这个用户]

把用户加入一个用户组命令为:usermod
命令格式:usermod  -g  组名  用户名 (意思是把这个组授予这个用户,让这个用户加入这个组)
查看一个用户的有效用户组命令为:groups

service smb reload
  重新加载一次,这个命令可以不重启SMB服务  用户账号映射 功能
用户帐号映射这个功能需要建立一个帐号映射关系表,里面记录了samba帐号和虚拟帐号的对应关系,客户端访问samba服务器时就使用虚拟帐号来登录就OK老,

在global下添加一行字段
username map=/etc/samba/smbusers 开启用户帐号映射功能,帐号对应文件是在 /etc/samba/smbusers 里
添加 dvd=eo   意思就是登录时输入eo+dvd用户的密码  客户端访问限制
samba有许多防火墙机制,就是 hosts allow 和 hosts deny 两个参数,一般只要
hosts allow 即可,没有被写入这个项目的来源就会被拒绝。
[eo]
     comment = sharefile directory
     path = /hdtv
     writeable = yes
     valid users = @dvd
     hosts allow = 192.  202.156.8.52
  (表示192网段和202.156.8.52主机可以访问,其他都拒绝,中间用空格隔开)
     hosts allow = 192.168.0. EXCEPT 192.168.0.100 192.168.0.78(表示,192.168.0网段的可以访问,但是0.100和0.78两台主机除外)
hosts allow和hosts deny设置在不同的位置上,它们的作用范围是不一样滴。如果设置在[global]里面,表示对samba服务器全局生效,如果设置在目录下面,则表只对这个目录生效
Samba的隐藏设置
[eo]
     comment = sharefile directory
     path = /hdtv
     writeable = yes
     valid users = @dvd
     browseable = no   (表示隐藏EO目录)

在访问的时候就是 \\ip\目录名  一些参数说明
[EO] 
comment = share direct
path = /home/eo
allow hosts = host(subnet) 
deny hosts = host(subnet) 
writable = yes|no 

valid users = user(@group) 
invalid users = user(@group) 
read list = user(@group) 
write list = user(@group) 
admin list = user(@group) 
public = yes|no 
hide dot files = yes|no 
create mode = 0755 
directory mode = 0755 
sync always = yes|no 
short preserve case = yes|no 
preserve case = yes|no 
case sensitive = yes|no 
mangle case = yes|no 
default case = upper|lower 
force user = 王老师
wide links = yes|no 
max connections = 100 
delete readonly = yes|no 

valid users           指定能够进入此资源的特定用户和组
invalid users       指定不能够使用该共享资源的用户和组
read list            指定只能读取该共享资源的用户和组。 
write list           指定能读取和写该共享资源的用户和组。 
admin list           指定能管理该共享资源(包括读写和权限赋予等)的用户和组。 
public               指明该共享资源是否能给游客帐号访问,这个开关有时候也叫guest ok,所以有的配置文件中出现guest ok = yes其实和public = yes是一样的。 
hide dot files       指明是不是像unix那样隐藏以“.”号开头的文件。 

create mode
         指明新建立的文件的属性,一般是0755。 
directory mode       指明新建立的目录的属性,一般是0755。 

sync always 
        指明对该共享资源进行写操作后是否进行同步操作。 
short preserve case  指明不管文件名大小写。 
preserve case        指明保持大小写。 
case sensitive       指明是否对大小写敏感,一般选no,不然可能引起错误。 
mangle case          指明混合大小写。 
default case         指明缺省的文件名是全部大写还是小写。 
force user          强制把建立文件的属主是谁。如果我有一个目录,让来宾用户可以写,那么来宾用户就可以删除,如果我用 force user=王老师 强制建立文件的属主是 王老师 ,同时限制create mask=0755,这样来宾用户就不能删除了
wide links           指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links = no将使该连接不可用。 
max connections = n  设定同时连接数是n。 
delete readonly      指明能否删除共享资源里面已经被定义为只读的文件


对目录权限说明: 这个很重要

要让用户能进入目录,必须要打开执行权限( X ),
如果打开了写权限( W ),那么用户同时就有了删除权限,
为了防止其他用户的乱删行为,必须给共享文件夹加上防删除权限,就是(t)
命令格式是 chmod 1755 /文件夹名,就是在755前面多加一个数字1,如下:

drwxrwxrwt 6 dvd dvd 4096 05-23 06:04 /hdtv/


create mode = 0755  当设置了这个参数后,用户建立的文件权限始终是744,具体问题暂时没搞懂,但是文件夹权限没有问题

添加用户帐户需要考虑问题:

系统要有对应的帐号(虚拟除外),SAMBA帐号密码可以不和系统帐号的密码一致,,先添加SANBA帐号,还要在配置文件中把共享目录下面有效用户那里写进去,还要考虑这个新添加的帐号在那个用户组和目录权限问题

配置完后需要使用: testparm  命令来检查语法错误,最好养成习惯,每次配置完都检查一次,在从起服务,reload和restart一个是从新加载服务,一个是从启服务,加载的话可能有莫名其妙问题,本人遇到过,我只使用从启命令

samba服务启动查看:
使用命令查看: netstat -anp|less  是否启用了137.138.139这些端口,这些是默认启用的端口,在设置中可以指定开启那个端口

Linux访问Windows共享文件的方法:

1:直接浏览,
打开浏览器,直接输入:smb://目标IP/ 就会出来共享的目录。

2:映射网络驱动器,
(RH5系统X上)左上角的位置-连接到服务器-服务器类型选择(Windows 共享)-服务器填上Windows的IP地址-连接后,在次进入左上角的位置里面就出现了映射出来的服务器IP地址,跟XP的 映射网络驱动器 类似,下次访问直接点这里就打开了共享目录,同时在桌面上进入计算机也可以查看共享目录。

3:命令行挂载,
XP的共享盘符为NTFS ,在设置XP的共享目录名时,最好设置简单一些,最好不带中文,比如XP共享文件夹名为 123 ,把他挂载到本机的/eo文件夹来
直接在命令行输入: mount //XP的IP/123  /eo 提示输入密码时,直接回车 就OK老,网上说的命令中要加入语言编码,文件格式参数,本人因为RP好的缘故,什么都不需要就直接OK老

本文出自 “eo” 博客,http://chuaneo.blog.51cto.com/873831/189041

<think>好的,我现在需要帮助用户解决Samba共享文件时遇到的拒绝访问问题。首先,我应该回忆一下Samba配置的基本知识。Samba的权限问题通常和Linux文件系统权限、Samba本身的配置以及SELinux设置有关。用户提到了拒绝访问,可能的原因有几个方面:目录的本地权限不足、Samba配置中的权限设置不正确,或者SELinux阻止了访问。 首先,用户需要检查共享目录的本地文件权限。确保共享目录的权限允许Samba用户读写。例如,使用chmod命令设置目录权限为755或777,虽然777不太安全,但可以测试是否是权限问题。另外,目录的所有者和所属组也需要正确,可能需要使用chown命令更改所有者,比如设置为nobody或特定的Samba用户。 接下来,查看Samba的配置文件smb.conf。用户需要确认共享部分的设置是否正确。比如,writable参数是否设置为yes,valid users是否包含正确的用户,以及read only是否被设置为no。如果用户没有正确配置这些参数,可能导致访问被拒绝。此外,Samba的用户必须存在,并且需要使用smbpasswd命令设置密码,否则用户无法通过Samba进行身份验证。 然后,需要考虑SELinux的影响。很多Linux发行版默认启用SELinux,它可能会阻止Samba访问某些目录。用户需要检查SELinux的状态,如果是Enforcing模式,可能需要调整策略。使用chcon命令更改目录的安全上下文,或者设置布尔值如samba_export_all_rw来允许共享读写权限。此外,如果问题确实由SELinux引起,可以暂时禁用SELinux进行测试,但长期解决方案应该是正确配置策略,而不是直接禁用。 还有可能涉及到防火墙的设置,如果防火墙阻止了Samba的端口,比如139和445,也可能导致连接问题。用户需要确保这些端口是开放的,或者暂时关闭防火墙测试。 另外,用户可能没有正确添加Samba用户。必须使用pdbedit或smbpasswd命令将系统用户添加到Samba中,并设置密码。如果用户不存在于Samba的用户数据库中,访问会被拒绝。 最后,查看日志文件,如/var/log/samba/log.smbd,可以获取更详细的错误信息,帮助诊断问题所在。 现在需要将这些步骤整理成一个清晰的解决方案,分步骤指导用户检查每个可能的方面,并给出相应的命令和配置示例。同时,要确保用户按照正确的顺序进行排查,从文件权限到Samba配置,再到SELinux和防火墙,逐步排除问题。此外,引用提供的参考资料中的解决方案,特别是关于SELinux的部分,可能需要详细说明如何调整安全上下文和布尔值设置。</think>### Samba共享文件拒绝访问的解决方案 #### 1. **检查本地文件系统权限** - 确保共享目录的权限允许Samba用户读写: ```bash chmod -R 777 /共享目录路径 # 临时测试时可放宽权限 chown -R nobody:nobody /共享目录路径 # 设置所有者为nobody(根据实际用户调整) ``` - **注意**:生产环境中建议使用更严格的权限(如`755`),并通过用户组管理访问[^2]。 #### 2. **配置Samba权限(`smb.conf`)** 在配置文件`/etc/samba/smb.conf`中,检查共享段落的参数: ```ini [共享名称] path = /共享目录路径 writable = yes # 允许写入 valid users = 用户名 # 指定允许访问的用户 read only = no # 关闭只读模式 create mask = 0664 # 文件创建默认权限 directory mask = 0775 # 目录创建默认权限 ``` - 重启Samba服务生效: ```bash systemctl restart smb ``` #### 3. **处理SELinux限制** - 查看SELinux状态: ```bash getenforce # 结果为Enforcing表示启用 ``` - **临时解决方案**(测试用): ```bash setenforce 0 # 关闭SELinux(重启后失效) ``` - **永久解决方案**: - 修改目录安全上下文: ```bash chcon -t samba_share_t /共享目录路径 # 赋予Samba共享类型标签 ``` - 或允许Samba完全读写: ```bash setsebool -P samba_export_all_rw=1 # 永久启用Samba共享读写权限[^1] ``` #### 4. **验证用户身份** - 确保用户已添加到Samba数据库: ```bash smbpasswd -a 用户名 # 添加用户并设置密码 ``` - 检查用户列表: ```bash pdbedit -L # 列出所有Samba用户 ``` #### 5. **防火墙与端口放行** - 开放Samba所需端口(139/TCP, 445/TCP): ```bash firewall-cmd --permanent --add-service=samba firewall-cmd --reload ``` #### 6. **日志排查** - 查看Samba日志定位具体错误: ```bash tail -f /var/log/samba/log.smbd # 实时监控日志 ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值