linux下的samba服务,linux下Samba服务的搭建

容偶唠叨一下:好久好久木有发博文了,颓废丫!!!

废话不多说,直接奔主题——samba,(⊙o⊙)哦,桑巴!!

配置时实用的TIPS:

1、在Windows下通过IP地址访问共享目录时,一般第一次需要输入密码,以后就无需输入密码而直接登录了。但对偶们经常测试需要频繁切换samba用户的那就杯具了哈。这时偶们可以在Windows的CMD下使用以下命令删除连接:

net use \\samba服务器IP地址或NetBIOS名称\ipc$ /del #删除指定连接

net use * /del#删除所有连接,介个偶最喜欢了哈

2、在配置samba配置文件时,为了使配置文件生效,需要频繁重启samba 服务,虽然可以让配置生效,但是在实际应用中会对客户端用户的访问造成影响,偶们可以用reload命令是samba服务重新加载配置文件使其生效(service smb reload 或 /etc/init.d/smb reload),这样不需要中断服务就可以重新加载配置哈。

1、samba简介(摘自维基百科,百度百科的简介太令偶失望了)

Samba,是种自由软件,用来让UNIX系列的操作系统与微软的Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协定做连结。在目前的版本(v3),不仅可存取及分享SMB的资料夹及打印机,本身还可以整合入Windows Server的网域、扮演为网域控制站(Domain Controller)以及加入Active Directory成员。简而言之,此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通有无。

2、samba的安装

samba的安装偶就不多讲了,对大家来说是小菜一碟,以下是偶本机安装的samba:

[alex@redhat ~]$ rpm -qa |grep samba

samba-common-3.0.33-3.29.el5_5.1

samba-swat-3.0.33-3.29.el5_5.1

samba-client-3.0.33-3.29.el5_5.1

samba-3.0.33-3.29.el5_5.1

3、samba的配置文件

哟,这个才是偶们的重点哈,当然这也是挑战偶的表达能力以及实践能力的地方,写得不好,大家表见怪。

存放在/etc/samba下的smb.conf是samba服务的主配置文件。此文件由两部分组成:Global Settings和Share Definitions。下面以偶的samba配置文件为例,简单说明配置主要配置行的意思(注意在等号前后都是空格哈):

[global]

workgroup = MYGROUP

server string = Samba Server Version %v

netbios name =Aric

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

max log size = 10

security = share

encrypt passwords = yes

smb passwd file = /etc/samba/smbpasswd

username map = /etc/samba/smbusers

[share]

path = /home/share

writeable = yes

browseable = yes

guest ok = yes

comment = This is my shared folder.

[global]:表示以下的内容为全局配置,该设置对所有共享资源都是生效滴,不能省略;

workgroup:用来定义工作组,相当于Windows的工作组;

server string:用来定义samba的说明信息,这里默认显示的是samba的版本号;

netbios name:用来定义在Windows下显示出来的计算机名称,此名称也可以直接用以登陆samba服务器的哈,下面会有举例滴;

log file:存放samba用户的日志文件,%m代表客户端主机名,samba服务器会在指定的目录下为每个登陆主机建立不同的日志文件(昨晚瞄了几个日志文件,结果是空的,不解);

max log size:限制用户日志的字段数目;

security:定义数据共享的方式,此选项有5个可选值,常用的是share和user选项:

(1)share

客户端登录samba 服务器,不需要输入用户名和密码就可以浏览samba 服务器的资源,适用于公共的共享资源,安全性差,需要配合其他权限设置,保证samba 服务器的安全性。

(2)user

客户端登录samba 服务器,需要提交合法帐号和密码,经过服务器验证才可以访问共享资源,服务器默认为此级别模式,最好是以加密方式传送密码,以提高安全性。

(3)server

客户端需要将用户名和密码,提交到指定的一台samba 服务器上进行验证,即要指定口令服务器,如果验证出现错误,客户端会用user 级别访问。

(4)domain

如果samba 服务器加入windows 域环境中,验证工作服将由windows 域控制器负责,domain 级别的samba 服务器只是成为域的成员客户端,并不具备服务器的特性,必须指定口令服务器,samba 早期的版本就是使用此级别登录windows 域滴。

(5)ads

当samba 服务器使用ads 安全级别加入到windows 域环境中,其就具备了domain 安全级别模式中所有的功能并可以具备域控制器的功能,也是要指定口令服务器。

encrypt passwords:传送的密码是否加密;

smb passwd file:用于保存samba服务的用户名及其对应的密码,samba用户登录时samba服务会检查此文件用以验证samba用户的合法性;

username map:指定用户映射文件,下边会详细介绍哈;

[share]:用来设定在Windows中显示出来的共享目录名称;

path:共享目录路径,不可省略滴;

writeable:设置是否可写;

browseable:设置是否可以在Windows工作组下看到共享文件夹,包括匿名共享和samba服务授权共享文件夹。如需隐藏共享文件夹,则标记为no;

guest ok:设置匿名用户是否可以登录,如果security设置为user,此选项默认值为no;

comment:共享文件夹的注释信息。

4、设置共享目录

上面的samba配置文件中我设置共享目录为/home/share,下面需要建立其目录:

[root@redhat ~]# mkdir /home/share

用于设置匿名用户可以下载或上传共享文件,因此要给/home/share目录授权为nobody权限:

[root@redhat ~]# chown -R nobody:nobody /home/share

5、samba服务的启动与停止

service smb start|stop|restart

/etc/init.d/smb start|stop|restart

设置开机自启动:

chkconfig --level 2345 smb on

6、匿名访问共享目录(注意SELinux和防火墙处于关闭状态)

(1)在Windows下访问samba服务。有以下几种方式哈:

a.基于IP的访问:

b.基于域名的访问。当然啦,前提得有域名服务哈,如果没有就乖乖用基于IP和下面的基于netbios name:

c.基于netbios name。还记得上边配置文件偶的netbios name 设为神马么:

(2)在Linux下访问共享目录,偶用滴是ubuntu哈:

aric@ubuntu:~$ smbclient //10.6.179.58/share

Enter aric's password:

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.33-3.29.el5_5.1]

Server not using user level security and no password supplied.

smb: \> ls

. D 0 Sun May 15 16:49:23 2011

.. D 0 Sat May 14 17:10:22 2011

test D 0 Sat May 14 17:11:32 2011

sql.txt A 37 Sat Apr 2 09:55:18 2011

test2 D 0 Sun May 15 16:49:19 2011

32872 blocks of size 2097152. 2461 blocks available

smb: \>

需要注意的是由于我们已经设置了匿名登录,在提示Enter aric's password时直接无视之按Enter即可哈,aric是我ubuntu的用户名,别和上面的Aric搞混了哈。

7、授权登录samba服务器

上面介绍的是匿名共享数据的设置方法,介个方式安全性难以保证,不好进行安全控制,于是乎,samba的主要配置一般还是以授权登录为主的哈。

(1)创建系统用户

为什么要创建系统用户呢?哟,不急,下面会提到哈。

偶创了一个名为test的虚拟用户:

[root@redhat samba]# useradd -s /sbin/nologin test

刚刚创建的为什么是虚拟用户呢?原因就是如果创建用户的同时不小心也给test设置了密码,这时test用户就可以通过shell登录系统。安全起见,要不就不要设置密码,要不就设置test为虚拟用户,好习惯还是设为虚拟的好哈。

(2)创建samba登录用户

需要注意的是,系统用户是Linux上对应的用户,而samba用户时客户端连接samba服务器是需要使用的账户。创建samba用户时会用到smbpasswd命令,而smbpasswd命令的原理是通过读取/etc/passwd文件存在的用户名进而设置samba用户密码的。这也是为什么创建系统用户的原因。对于创建的系统用户,可设置也可不设置密码,也可以与对应的samba用户密码相同或是不同。

[root@redhat samba]# smbpasswd -a test

New SMB password:

Retype new SMB password:

Added user test.

对于创建samba用户时要用到/etc/passwd文件偶表示怀疑,于是偶小小地做了测试,结果偶承认偶输了

14.gif

[root@redhat samba]# smbpasswd -a test1#尝试创建samba用户test1

New SMB password:

Retype new SMB password:

Failed to modify password entry for user test1 #创建失败,因为读取/etc/passwd时找不到test1

[root@redhat samba]# useradd test1 #可设置也可不设置用户密码,这里就懒得设啦

[root@redhat samba]# smbpasswd -a test1

New SMB password:

Retype new SMB password:

Added user test1.#创建成功,得出结论,偶输了

不知道大家注意到木有,在安装samba后是木有smbpasswd介个文件滴,当偶们第一次使用smbpasswd命令创建samba用户时会自动建立smbpasswd文件,里面存放着samba用户的用户名和密码,当然,密码是加密的哈。但我有个小小的疑问,那就是为什么创建samba用户时非得要用到/etc/passwd文件?为什么就不能独立于/etc/passwd,在创建samba用户时直接把samba用户名和加密后的密码保存在/etc/samba/smbpasswd里面,在samba用户登录时服务器直接读取/etc/samba/passwd文件直接验证登录用户的合法性呢?求解释!

8、设置samba授权用户主目录

仍然以偶的配置文件为例哈:

[global]

workgroup = MYGROUP

server string = My Samba Server V%v

netbios name = Mysamba

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

max log size = 10

security = user

encrypt passwords = yes

smb passwd file = /etc/samba/smbpasswd

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

os level = 33

username map = /etc/samba/smbusers

[test]

path = /home/test

writeable = yes

browseable = yes

comment = This is user test's folder.

valid users = test

create mask = 664

directory mask = 775

其中:

security:设置为user,表示需要授权用户才能登录,如果还是share,那还用授什么权哈!

socket options:设置samba服务器和客户端之间会话的socket选项值,用以优化数据传输速度;

os level:设置samba Server的OS level,OS level的值从0~255。windows NT的OS level为33,windows 95/98的OSlevel是1,samba Server的OSlevel值至少为33;

valid users:设置可以访问该共享目录的用户;

create mask:设置客户端用户创建文件的默认权限。664表示对用户组可读可写,对其他用户只读;

directory mask:设置客户端用户创建目录的默认权限。755表示对用户拥有所有权限,对用户组和其他用户可读可执行。

9、授权访问用户目录

(1)老规矩,先Windows。

Linux之间有NFS方式可以共享,所以samba一般都用于Linux与Windows之间的共享:

需要账号验证,匿名登录不了了哈:

登录成功了哈!

(2)Linux下登录

登录的正确格式为:smbclient //samba服务器IP地址/共享文件名 -U samba用户登录名

[root@redhat6 ~]# smbclient //10.6.179.58/test -U test

Enter test's password:

session setup failed: NT_STATUS_LOGON_FAILURE#输错密码而已

[root@redhat6 ~]# smbclient //10.6.179.58/test -U test

Enter test's password:

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.33-3.29.el5_5.1]

smb: \> ls

. D 0 Sun May 15 22:49:39 2011

.. D 0 Sun May 15 22:49:39 2011

.mozilla DH 0 Sun May 15 22:49:39 2011

.emacs H 515 Sun May 15 22:49:39 2011

.bash_logout H 33 Sun May 15 22:49:39 2011

.bash_profile H 176 Sun May 15 22:49:39 2011

.bashrc H 124 Sun May 15 22:49:39 2011

32872 blocks of size 2097152. 2458 blocks available

smb: \>

10、samba服务的用户映射

由前面的介绍可知,在创建samba用户时必须先创建同名的系统用户,也就是说知道了samba用户名也就知道了该系统肯定也有同名的系统用户名,这样hacker就高兴了哈。但介个问题是可以避免滴,那就是通过的samba的用户映射解决。

samba用户映射的配置文件为/etc/samba/smbusers,前面偶们已经在/etc/samba/smb.conf的全局设置中定义使用用户映射文件/etc/samba/smbusers,所以偶们现在就只需在smbusers文件中加入相应的映射信息即可,这里偶定义了test映射为alias:

# Unix_name = SMB_name1 SMB_name2 ...

root = administrator admin

nobody = guest pcguest smbguest

test = alias

重启samba服务后测试一下是不是如偶所愿哈:

很明显,登录成功哈。

未完待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值