码迷,mamicode.com
首页 > 其他好文 > 详细

感觉Samba好强大

时间:2015-05-06 18:07:08      阅读:374      评论:0      收藏:0      [点我收藏+]

标签:samba

Samba

在linux实现CIFS(SMB)协议,SMB:服务信息块

CIFS:Common Internet File System,从而让windows实现网上邻居的文件共享。CIFS监听很多端口,有137/udp,138/udp,139/tcp,445/tcp,其中137和138用于实现NetBIOS

NetBIOS:网络基本输入输出系统,windows基于主机名互相通信的机制,最长15个字符。网上邻居上看到的主机名都是NetBIOS名,第一次打开网上邻居速度会很慢,因为NetBIOS会在局域网中广播,主机和ip地址之间的对应关系。这种机制性能很差。想让linux支持CIFS有个前提就是,linux必须支持NetBIOS,不然在windows的网上邻居上无法看到linux主机。

SMB是一种协议,项目名就不可以这么称呼,于是在两边各加了一个a,就成为了现在的Samba

如果linux,unix,windows都支持CIFS,那么它们之间就能够实现文件共享。

Samba在linux上支持三种服务:nmdb(NetBIOS),smdb(CIFS),winbandd,如果windows不创建域,winbindd就用不到了,所以默认只启动前两种。

Samba提供的共享方式是文件系统,因此需要挂载才能使用。

 

1.1 windows操作

添加一个账户:我的电脑右键-->管理-->本地用户和组-->用户-->右键选择新用户-->输入用户test,密码123456

技术分享

    找一个文件夹进行共享,首先将使用共享向导关了文件上右键-->高级共享-->共享此文件夹-->权限-->添加-->输入test-->检查名称-->确定-->将更改勾选-->一路确定

技术分享 

技术分享 

这样就有两个用户可以访问,一个只读,一个可写

windows共享使用UNC路径\\SERVER\shared_name -U USERNAME

 

1.2 linux操作

 

1.2.1 linux为客户端

 

1.2.1.1 准备工作

安装Samba客户端

[root ~]# yum install samba-client
[root ~]# rpm -ql samba-client
/usr/bin/findsmb
/usr/bin/nmblookup
/usr/bin/rpcclient
/usr/bin/sharesec
/usr/bin/smbcacls
/usr/bin/smbclient # 就这个了
/usr/bin/smbget
/usr/bin/smbprint
/usr/bin/smbspool
/usr/bin/smbta-util
/usr/bin/smbtar
/usr/bin/smbtree


使用smbclient命令进行查看共享的文件Temp就是需要查看的文件夹。使用test用户登录

[root ~]# smbclient -L 172.16.250.130 -U test
Enter test‘s password: 
Domain=[PC-PC] OS=[Windows 7 Ultimate 7601 Service Pack 1] Server=[Windows 7 Ultimate 6.1]
 
Sharename       Type      Comment
---------       ----      -------
IPC$            IPC       远程 IPC
Temp            Disk      
Users           Disk      
session request to 172.16.250.130 failed (Called name not present)
session request to 172 failed (Called name not present)
session request to *SMBSERVER failed (Called name not present)
NetBIOS over TCP disabled -- no workgroup available


1.2.1.2 交互式访问

smbclient –L HOST –U USERNAME获取到共享信息后使用smbclient //SERVER/shard_name

进入共享文件夹

[root ~]# smbclient //172.16.250.130/Temp -U test
Enter test‘s password: 
Domain=[PC-PC] OS=[Windows 7 Ultimate 7601 Service Pack 1] Server=[Windows 7 Ultimate 6.1]
smb: \> # 此时就相当于ftp操作


上传一个文件,返回windows可以查看

smb: \> lcd /etc/
smb: \> put fstab
putting file fstab as \fstab (13.0 kb/s) (average 13.0 kb/s)


1.2.1.3 挂载方式访问

mount –t cifs //server/shared_name /mount_point –o username=USERNAME

 

挂载之前需要安装:yum install cifs-utils不然挂载不了

[root ~]# mount -t cifs //172.16.250.130/Temp /media/ -o username=test
Password:

不建议开机自动挂载

 

1.2.2 linux作为服务器端

Samba可以将linux上任何目录作为共享目录

 

服务脚本

/etc/rc.d/init.d/nmb 

/etc/rc.d/init.d/smb

 

主配置文件:/etc/samba/smb.conf

 

[root ~]# rpm -ql samba|less # 查看生成的文件
/etc/logrotate.d/samba
/etc/openldap/schema
/etc/openldap/schema/samba.schema
/etc/pam.d/samba
/etc/rc.d/init.d/nmb # 两个脚本
/etc/rc.d/init.d/smb
/etc/samba/smbusers
/usr/bin/eventlogadm
/usr/bin/mksmbpasswd.sh
/usr/bin/smbstatus
/usr/sbin/nmbd
/usr/sbin/smbd


启动开始

[root ~]# service smb start;service nmb start


监听udp 137,138 tcp 139,445端口

[root ~]# ss –tunl

 

此时windows上就能看到linux主机了,但是linux和windows默认的工作组不一样,可以编辑/etc/samba/smb.conf修改工作组

[root ~]# vim /etc/samba/smb.conf
    workgroup = WORKGROUP # 改成这样
[root ~]# service smb restart;service nmb restart


转为windows

windows资源管理器-->地址栏输入\\172.16.45.10\-->提示登录,但此时Samba没有创建任何用户-->linux创建用户

 

1.3 Samba的用户认证

Samba用户都是系统用户密码不是shadow密码而是Samba服务自有密码文件。将系统用户转换samba用户的命令smbpasswd

 

smbpasswd命令-a Sys_User

 

创建Samba用户和密码

[root ~]# useradd smbuser1
[root ~]# smbpasswd -a smbuser1 # -a表示将用户加入至Samba用户中
New SMB password:
Retype new SMB password:
Added user smbuser1.

 

转回windows登录:

技术分享 

双击进去就是linux上此用户的家目录

 

1.4 配置文件

/etc/samba/smb.conf分为全局共享设定特定共享设定特定共享设定分为家目录、打印机、用户自定义共享。对于此配置文件来讲,#开头的行是纯注释行,;开头的行是可以启动的选项

 

[smbuser1 ~]$ vim /etc/samba/smb.conf
workgroup = WORKGROUP # 工作组名称
server string = Samba Server Version %v # 给其他用户看的
netbios name = MYSERVER # 用户名的第一项
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 # 监听的地址
hosts allow = 127. 192.168.12. 192.168.13. # 基于IP地址的访问控制,白名单
log file = /var/log/samba/log.%m # 每个用户都有自己的日志文件,%m表示用户
max log size = 50 # 达到50k就会自动滚动
security = user # 任何用户登录Samba都需要输入用户名
passdb backend = tdbsam # 用户的密码文件是使用tdbsam机制加密的库

 

公共段

   comment = Home Directories # 注释
   browseable = no # 是否当用户的属主属组和分享的文件不同时,是否可看到分享的文件。自己私建的共享文件应该yes
   writable = yes # 共享权限是否可写,相当于read only
   valid users = %S # 有效的用户,%S表示当期用户自身
   valid users = MYDOMAIN\%S
   guest ok = no # 不允许来宾账户访问,相当于public
   write list = +staff # 指明可写用户列表,这里是组内用户可写


自定义共享:

[sharedname]

path = 

配置文件的最后给出了自定义共享的模板

 

testparm:测试配置文件语法错误的,并将真正生效的结果打印到屏幕。

不光自身有写权限,还要对目录有写权限才行

 

1.5 图形化samba

图形化Samba依赖它自己提供web服务它是个瞬时守护进程,超级守护进程xinetd代为管理

 

安装:# yum install samba-swat

查看配置文件:

[root ~]# cd /etc/xinetd.d/   
[root xinetd.d]# vim swat
# default: off
# description: SWAT is the Samba Web Admin Tool. Use swat #          to configure your Samba server. To use SWAT, #          connect to port 901 with your favorite web browser.
service swat
{
    port        = 901 # 避免和80端口冲突
    socket_type = stream
    wait        = no
    only_from   = 1 # 仅允许本机访问
    user        = root
    server      = /usr/sbin/swat
    log_on_failure  += USERID
    disable     = yes # 不启动

建议第一次通过本地访问,等配置好后再从远程访问。修改其中的两行,重新启动并查看901端口

    only_from   = 172.16.0.0/16
    disable     = no
[root xinetd.d]# service xinetd restart
[root xinetd.d]# !ss

浏览器访问172.16.45.100:901,第一次登陆需要输入系统root账户和密码,这就是为什么建议第一次从本地登陆登陆后进入界面

感觉Samba好强大

标签:samba

原文地址:http://10042224.blog.51cto.com/10032224/1643535

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!