Chinaunix首页 | 论坛 | 博客

分类: 系统运维

2012-03-13 23:37:42

samba服务器配置

作者:文子    撰写日期:2011-10-29

 

       实现windowslinux的文件共享,SMB协议是建立在NetBIOS协议之上的应用协议,是基于TCP138139两个 端口的服务,NetBIOS出现之后,Microsoft就使用 NetBIOS实现了一个网络文件/打印服务系统。这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMBServer Message Block 协议,这个协议被用于Lan ManagerWindows服务器系统中,实现不同计算机之间共享打印机和文件等。
       Fedora Samba
使SMB协议运行在NetBIOS协议上,并且使用WindowsNetBEUI协议让Unix/Linux服务器可以在Windows的网络邻居上被访问到。

       在做嵌入式linux开发的时候,难免需要在linux宿主机开发环境与windows操作系统之间共享文件和打印等,实现的方法当然是多种多样的,目前网上关于samba的配置很多,但很多并不能成功,这里我通过在Fedora14下建立Samba 服务器实现fedorawindows之间的文件共享。

 

一、安装samba服务器
       安装samba服务器的方法是通过 yum 来在线安装 Samba
       yum -y install samba
       当然,也可以通过系统-管理-添加/删除程序菜单来安装,在窗口中搜索smaba,选择合适的程序版本安装即可。(安装过程中需要确保yum可用,网络配置正确。)

 

二、配置smaba服务器
       配置主要通过编辑/etc/samba/smb.conf来实现。(要有读写权限,suroot你可以chmod 777 smb.conf 然后用文本编辑器编辑该文件,当然你也可以用VI直接编辑。

[root@localhost ~]# vi /etc/Samba/smb.conf ← 编辑 Fedora Samba 的配置文件
workgroup = WORKGROUP //
设置工作组
server string = %U's Samba %v //
描述信息%U代表当前登陆用户
netbios name = fedora //netbios
名字,fedora9 默认没有启用
log file = /var/log/Samba/log.%m //
日志文件保存路径%m你的windows主机名
max log size = 50 //
日志最大容量
security = user //
安全级别,user需要用户名和密码,share级别则不要
[Fedora Samba] //
建立一个共享名为Fedora Samba的共享
comment = Samba//
描述信息
path = /home/bsc/samba//
共享路径
public = no //
是否允许guest用户访问(相当于guest ok = yes/no
writable = yes //
是否可写
write list = bsc //
可以写入的用户列表(@代表用户组)

 

三、建立共享目录
[root@localhost ~]# mkdir /home/bsc/samba ← 建立共享文件专用目录
[root@localhost ~]# chown -R nobody /home/bsc/samba ←
设置专用目录归属为 nobody
[root@localhost ~]# chmod 777 /home/bsc/samba/ ←
将专用目录属性设置为 777
[root@localhost ~]# smbpasswd -a bsc ←
将系统用户 bsc(此用户必须未已存在的,如果不存在,useradd name添加吧)加入到 Fedora Samba 用户数据库
New SMB password:
 输入该用户用于登录 Samba 的密码
Retype new SMB password:
 再次确认输入该密码
[root@localhost ~]#

第四步 启动 samba服务

首先要把防火墙打开
[root@localhost ~]# vi /etc/sysconfig/iptables
 编辑 iptables 配置文件
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
 找到此行,在下面添加如下行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A INPUT -p udp -m udp --dport 137 -j ACCEPT
-A INPUT -p udp -m udp --dport 138 -j ACCEPT

下面重新启动iptables是修改生效:
[root@localhost ~]# /etc/rc.d/init.d/iptables restart
。显示ok就行了


最后,启动 Fedora Samba 服务(含两个守护进程:smb,nmb)

[root@localhost ~]# chkconfig smb on 设置 Fedora Samba 自启动
[root@localhost ~]# chkconfig --list smb
 确认 Fedora Samba 启动标签,确认 2-5 on 的状态
[root@localhost ~]#chkconfig nmb on
 设置 nmb 自启动
[root@localhost ~]## chkconfig --list nmb
 确认 nmb 启动标签,确认 2-5 on 的状态
nmb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@localhost ~]#/etc/rc.d/init.d/smb start(
或者service smb start) 启动 Fedora Samba 服务
Starting SMB services: [ OK ]
[root@localhost ~]# /etc/rc.d/init.d/nmb start
 启动 nmb 服务
Starting NMB services: [ OK ]

 

       通过以上配置samba服务器建立成功了,那就测试下吧。
       打开windows。运行——>\\你的linuxip地址([root@localhost ~]# ifconfig查看ip,ok!!! 看到共享的文件夹了,好了,samba完全配置好了,但是真的行了吗?当你试图打开文件夹的时候发现,没有权限。

注意:
       在其它版本的linux中(AS5,AS4Centos)中做如上设置后就可以正常访问共享了,但是在fedora中却不行,我们只能看到共享,但是访问的时候会出现拒绝访问的情况,这是为什么呢?因为selinuxsamba共享做了限制,我们只用把selinux中对samba的限制给解决了就行了,我们做如下设置就OK了:
      
setsebool –P samba_enable_home_dirs on
      
setsebool –P samba_export_all_ro on
      
setsebool –P samba_export_all_rw on
      
我们可以用命令getsebool –a | grep samba
      
查看上面三项是否打开,打开的话你的共享应该就正常了。

由于为了开发的方便,windows下有许多很方便的工具,所以决定使用samba服务,但是默认情况下我的windows用户是非 administrator权限的,所以为了方便,将fedora下的samba共享的windows用户设置为root权限,就省去了在fedora root建立的文件,需要chown之后才能在windows下编辑。
首先,进入/etc/samba/,备份smbusers,后修改此文件,删除root那一行的其他账户,只留你将使用的账户,然后开共享。

你也可以用图形界面,不过前提也需要先删除root那一整行。

       1 # Unix_name = SMB_name1 SMB_name2 ...
       2 nobody = guest pcguest smbguest
      3 root = lry
       以上是针对user模式。

阅读(712) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~