实验环境:虚拟机+fedora9

实验目的:练习fedora9samba共享

教程适用:想在fedora9上面使用共享的菜鸟

一、 samba简介

SMB协议是建立在NetBIOS协议之上的应用协议,是基于TCP138139两个端口的服务,NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统。这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMBServer Message Block) 协议,这个协议被用于Lan ManagerWindows服务器系统中,实现不同计算机之间共享打印机和文件等。因此,为了让WindowsUnix/Linux计算机相集成,最好的办法就是在 Unix/Linux计算机中安装支持SMB协议的软件。这样使用Windows的客户端不需要更改设置, 就能像使用Windows NTWindows 2000服务器一样,使用Unix/Linux计算机上的共享资源了。

Samba使SMB协议运行在NetBIOS协议上,并且使用WindowsNetBEUI协议让Unix/Linux服务器 可以在Windows的网络邻居上被访问到。

 

二、 Samba的守护进程

1. smbd 监听139 TCP端口 设置共享目录、打印等

2. nmbd 137. 138 UDP端口 管理群组、NetBIOS 等解析工作

这里要注意的是fedora9基于安全考虑,把smb和nmb两个服务给分离了,平时我们在使用samba服务的时候,在启动smb服务的同时nmb这个服务也会跟着启动,fedora9中则不然,这就造成了我们设置好fedora9中共享的时候,只能使用//ip 来访问,而不能使用//计算机名 来访问,解决的办法就是同时启动smb和nmb服务

三、 软件的安装

使用rpm –qa|gerp samba来检查是否安装了samba 软件包,如果没有安装的话请自行安装以下的软件包

rpm –ivh samba-3.2.0-1.pre3.9.fc9.i386.rpm

rpm –ivh samba-winbind-3.2.0-1.pre3.9.fc9.i386.rpm

rpm –ivh samba-common-3.2.0-1.pre3.9.fc9.i386.rpm

rpm –ivh samba-client-3.2.0-1.pre3.9.fc9.i386.rpm

rpm –ivh system-config-samba-1.2.63-1.fc9.noarch.rpm

或者你用yum install samba* -y就可以一次搞定了。

 

四、 启动samba服务

service smb start/etc/init.d/smb start )启动smb服务

service nmb start/etc/init.d/nmb start )启动nmb服务

当然你也可以使用chkconfig –-level smb 35 on 来设置启动级别,这个不多说了。

我们来检查一下是是否正常启动两个服务,使用命令 pstree | grep mb

显示为如下如果则为正常启动:

|-nmbd

|-smbd---2*[smbd]

|-tomboy---2*[{tomboy}]

 

五、 配置smb.conf文件

知识点,samba 有四种安全级别,它们分别是:

share:用户不需要用户名和就可登陆samba 服务器

user:用户需要输入用户名和密码才可以登陆samba服务器

server:请自行查资料,不常用,略

domain:请自行查资料,不常用,略

对于我们小菜来说,我们使用user级别就可以了,如果偷懒的话你可以用share

我们先备份配置文件smb.conf

cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

然后查找你的security = user是否为user如果是share的话改为user

vi /etc/samba/smb.conf

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级别则不要

[share] //建立一个共享名为share的共享

comment = samba //描述信息

path = /tmp/share //共享路径

public = no //是否允许guest用户访问(相当于guest ok = yes/no)

writable = yes //是否可写

write list = lovehack //可以写入的用户列表(@代表用户组)

确认上面设置:

#grep -v '^#' smb.conf |grep -v '^;' |grep -v '^$'

 

下面建立共享目录并添加权限

mkdir /tmp/share

chmod 775 /tmp/share

chown lovehack.lovehack /tmp/share

六、 添加用户并测试共享

添加访问samba的用户,命令smbpasswd –a 用户名

smbpasswd –a lovehack //lovehack为事先建立好的用户

然后输入两次密码就可以了,注意这里的密码和你登陆系统的密码是不一样的,只是用来访问共享的密码。

现在我们就可以来测试一下配置文件是否正确:testparm 一般是没有什么问题的。

现在我们可以用//ip或者//计算机名 来访问共享了。

七、 解决fedora9中selinux拒绝访问共享的问题

在其它版本的linux中(AS5,AS4Centos)中做如上设置后就可以正常访问共享了,但是在fedora9中却不行,我们只能看到共享,但是访问的时候会出现拒绝访问的情况,这是为什么呢?因为selinuxsamba共享做了限制,我们只用把selinux中对samba的限制给解决了就行了,我们做如下设置就OK了,这也是我做此教程的目的:

#setsebool –P samba_enable_home_dir on

#setsebool –P samba_export_all_ro on

#setsebool –P samba_export_all_rw on

我们可以用命令getsebool –a | grep samba

查看上面三项是否打开,打开的话你的共享应该就正常了。

如果还是出现不能访问的情况,请清除你的防火墙规则:

iptables -F //清除规则

iptables -L //查看是否清除掉了!

 

上面用到了很多RPM包(比如samba-3.2.0-1.pre3.9.fc9.i386.rpm),安装的Fedora 9 中可能没有,去百度搜也找不到!我找到了一个专门找这种rpm包的网站:http://rpm.pbone.net/经常用的RPM包基本都能找到

 

为了您的安全,请只打开来源可靠的网址

打开网站    取消

来自: http://hi.baidu.com/%CD%FE%B5%C4%C9%FA%BB%EE/blog/item/94d33f1d12fc7c8086d6b676.html

 

[root@sample ~]# /etc/rc.d/init.d/smb start  ← 启动 Samba 服务
Starting SMB services:       [ OK ]
[root@sample ~]# /etc/rc.d/init.d/nmb start  ← 启动 nmb 服务
Starting NMB services:       [ OK ]

 

来自:http://wdqfirst.blog.163.com/blog/static/113347411200952383818421/

fedora 9 本身具有一定的瑕疵在与windows文件共享方面,在安装VM tools成功后也无法实现共享,只有寻求samba的帮忙,下面是我安装samba的一些体会

首先:对系统进行优化 

1、安装编译工具:yum -y install gcc gcc-c++ kernel-devel
2.
更新kernelyum -y update kernel
3.
检查:rpm -qa | grep kernel 

更新完后重启一下,使更新生效。然后再安装Vmware Tools,一直回车OK,最后再选择一下分辨率。

顺便提下,有可能大家会出现网卡经常要激活的问题,所以导致用yum命令比较麻烦,所以我在这里说说我是怎样调好的

vi /etc/sysconfig/network-scripts/ifcfg-ethX 修改 NM_CONTROLLED=yes OK

其次:

安装sambayum -y install samba

配置/etc/samba/smb.conf

配置参考:     

[global]

        workgroup = WORKGROUP

        server string = Samba Server Version %v

        log file = /var/log/samba/%m.log

        max log size = 50

        security=user

        dos charset=cp936

        unix charset=cp936

[samba]

        comment=samba

        path=/tmp/samba

        public=yes

        writable=yes

        write list=sky

在相应的目录下面建立共享文件,此例子是在/tmp下面建立一个samba目录

添加samba用户: smbpasswd –a 用户名

 

安装后可以在windows的网络邻居上面看到samba的相应图标,点击进入后可能会出现网络重名的现象,如果重名的话可能是由于linuxhostnamelocalhost,可以 vi /etc/sysconfig/network 里面进行更改hostname,如:HOSTNAME=test.localdomain。这样就避免重名了

接下来就OK了

 

 

 设置Samba-与Windows共享文件
你果你想与局域网内的windows系统共享文件的话,你必须设置Samba。
设置Samba:1)安装Samba,2)添加“shares”,3)增加用户,4)启动Samba服务5)设置安全选项(Firewall和SELinux)。
1)安装Samba
最好是在安装系统时将Samba装上,如果没有装上的话,可以这样安装:添加/删除软件>服务器>Windows File Server,在命令行上的形式:
程序代码:[mirandam@charon ~]$ sudo yum install samba samba-client也可以手工安装,只要安装FedoraDVD中的以下包就可以了:samba, samba-common, samba-client。
2)增加共享
你必须以root用户编辑/etc/samba/smb.conf:(如果没有图形界面的话,使用nano代替gedit):
程序代码:[mirandam@charon ~]$ sudo gedit /etc/samba/smb.conf在[global]段中设置你的Windows Workgroup name。
在文件的最后增加共享。示例:程序代码:[c_drive]
   path = /media/c_drive
   public = yes
   writable = no
[netshare]
   path = /data/
   public = yes
   writable = yes如果你设置了writable,那么它在Linux下必须为可写,而且权限必须匹配(例如:drw-rw-rw-)。
如果可获得主目录下的数据,那么设置“browseable=yes”在[home]中250行),此配置文件中的选项都是描述性质的,通读它以获得更多的信息。
3)增加用户
你必须是一个有效的用户以获得共享文件。使用smbpasswd命令增加一个有效的用户和密码。
这个登陆名将是你从Windows获得Linux下共享文件的登陆名,密码不一定要和Linux帐户的密码一样。
程序代码:[mirandam@charon ~]$ sudo smbpasswd -a username
New SMB password:
Retype new SMB password:
account_policy_get: (warnings ignored)
Added user username.(注意:“username”必须是一个在Fedora系统上一个有效的帐户)
4)开启Samba服务
运行samba看是否有错误:
程序代码:[mirandam@charon ~]$ sudo /etc/init.d/smb start
Starting SMB services:                                     [  OK  ]
使用chkconfig或者是serviceconf在runlevels3和5上激活Samba。这样Fedora启动后就会启动Samba。
程序代码:[mirandam@charon ~]$ /sbin/chkconfig --list smb
smb             0:off   1:off   2:off   3:off   4:off   5:off   6:off
[mirandam@charon ~]$ sudo /sbin/chkconfig --level 35 smb on
[mirandam@charon ~]$ /sbin/chkconfig --list smb
smb             0:off   1:off   2:off   3:on    4:off   5:on    6:off
在每次修改users/passwords和'smb.conf'后请重启Samba
程序代码:[mirandam@charon ~]$ sudo /etc/init.d/smb restart
Shutting down SMB services:                                [  OK  ]
Starting SMB services:                                     [  OK  ]
5)设置Samba的安全性
如果使用防火墙的话(Fedora 9默认使用),运行
程序代码:[mirandam@charon ~]$ sudo system-config-firewall你必须将Samba设置为“可信的服务”然后点击“应用”以让Samba可以通过防火墙工作。如果你只使用shell的话,运行
程序代码:[mirandam@charon ~]$ sudo system-config-firewall-tui使用跳到Customize,在“可信的服务”选项里的Samba上然后使用跳到OK。
SELinux
SELinux在Samba的各个部分上都有严格的控制。运行system-config-selinux。阅读/etc/samba/smb.conf上的第23-51行更好的理解,你也可以这样:
程序代码:[mirandam@charon ~]$ sudo system-config-selinux在过滤中的Boolean里键入samba。
下面的方法可以快速的让SELinux允许Samba正常工作,但是它并是完整的,不推荐这样做。
程序代码:[mirandam@charon ~]# sudo /usr/sbin/setsebool -P samba_export_all_rw on在这一点你可以忽略SELinux,当你尝试着获取Windows上的共享文件时,SELinux TroubleShooter会自动弹出报各发生错误的原因,如果你遵从以上推荐的话会更安全。
当对SELinux设置或smb.conf做任何改变后,最好是重启Samba。

 

 

*******

在启动samba后需要把共享的文件夹的安全属性改为可读写等,不然windows里面没法操作。

*******

 

 

 

 

 

 

Ubuntu 10.04 下 Samba 安装配置

sudo apt-get install samba
sudo apt-get install smbfs
下面我们来共享群组可读写文件夹,假设你要共享的文件夹为: /home/username/share
首先创建这个文件夹
mkdir /home/messcode/share
chmod 777 /home/messcode/share
备份并编辑smb.conf允许网络用户访问


sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
sudo gedit /etc/samba/smb.conf
找到下关键字:; security = user
用这几行取代: security = user
username map = /etc/samba/smbusers


将下列几行新增到文件的最后面,假设允许访问的用户为:messcode。而文件夹的共享名为 Share
[Share]
comment = Shared Folder with username and password
path = /home/messcode/share
public = yes
writable = yes
valid users = messcode
create mask = 0700
directory mask = 0700
force user = nobody
force group = nogroup
available = yes
browseable = yes

然后顺便把这里改一下,找到[global]把 workgroup = MSHOME 改成
workgroup = WORKGROUP
display charset = UTF-8
unix charset = UTF-8
dos charset = cp936

后面的三行是为了防止出现中文目录乱码的情况。其中根据你的local,UTF-8 有可能需要改成 cp936。自己看着办吧。

现在要添加messcode这个网络访问帐户。如果系统中当前没有这个帐户,那么: sudo useradd messcode
上面只是增加了messcode这个用户,却没有给用户赋予本机登录密码。所以这个用户将只能从远程访问,不能从本机登录。而且samba的登录密码可以和本机登录密码不一样。现在要新增网络使用者的帐号:
sudo smbpasswd -a newsfan
sudo gedit /etc/samba/smbusers
在新建立的文件内加入下面这一行并保存
messcode= "network username"
如果将来需要更改messcode的网络访问密码,也用这个命令更改
sudo smbpasswd -a messcode
删除网络使用者的帐号的命令把上面的 -a 改成 -x
sudo testparm
sudo /etc/init.d/samba restart
最后退出重新登录或者重新启动一下机器。

 来自:http://www.myhack58.com/Article/sort099/sort0102/2011/29420.htm

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐