感觉Samba好强大

1 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账户和密码,这就是为什么建议第一次从本地登陆。登陆后进入界面。

时间: 2024-10-04 21:20:10

感觉Samba好强大的相关文章

如此强大的开源ETL工具竟然被我发现了

初识 Talend,感觉功能很强大,可以同步多种数据库,同时可以清洗.筛选.java代码处理数据.数据导入导出. Talend是一款针对数据集成工具市场的ETL(数据的提取Extract.传输Transform.载入Load)开源软件.Talend以它的技术和商业双重模式为ETL服务提供了一个全新的远景.它打破了传统的独有封闭服务,提供了一个针对所有规模公司,公开的.创新的.强大的.灵活的软件解决方案.最终,由于Talend的出现,数据整合方案不再是被大公司所独享. Talend可以帮助您节省大

看武侠学编程_以九宫格为例介绍强大的声明式语言Prolog

如果要给众多编程语言分个类,你可能会把它们分成低级语言和高级语言,或者分成面向对象语言和面向过程语言.然而,更多中国程序员所不太熟悉的另外一种划分方式将会把计算机语言分成命令式和声明式两大阵营.之所以说大家可能不太熟悉这种划分,那是因为我们平常所使用绝大部分语言都是命令式的.但事实上你确实也应该注意到另外一大阵营的存在. 命令式编程(ImperativeProgramming)是现今最为广泛使用的编程范型.读者所熟知的众多计算机语言,如C.C++.Java.Pascal.Basic.Python

SuSE 11 sp3 下安装异系统共享Samba服务

USE 11 sp3 下安装异系统共享Samba 本人安装过ftp,但异系统之间还是感觉samba使用更为方便,下面是简单的配置 在内网服务器110上安装samba服务器 端口445 1,安装samba 系统自带 或者zypper install samba 2,创建登录用户,访问用户密码 共享文件夹 (为了方便管理我喜欢特定用户)useradd -m samba1passwd samba1 PW:samba123 用户登录密码smbpasswd -a samba1 访问密码:samba1234

angular和vue的对比学习之路

vue-ng 打开vue的中文官网一段关于vue的描述 HTML 模板 + JSON 数据,再创建一个 Vue 实例,就这么简单. 那我么再看下angular中文网 AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了.所以我做了一些工作(你也可以觉得是小花招)来让浏览器做我想要的事. 看到这两句引用,心中是否顿时有种感觉,感觉vue会简单易学,angular难学.其实,你是对的,相对来说,如果我

向内的寻找

程序员是一群善于思考的人, 作为一个程序员可能或多或少都思考过人生, 就在2015年两位互联网界的大佬思考出了自己的人生, 一位是李开复, 另外一位是黎万强. 李开复在他的<向死而生·我修的死亡学分>中阐述说要选择自己热爱的事情.而黎万强在他的<花与树的星空>摄影展上也是向众人们表达了要选择自己发自内心热爱的事情. 寻找人生的意义一定是向内找,而不是向外找. 很多人习惯性的向外寻找, 思考出的人生的意义就是得到名利权,然而向外找是无休止的,看见很多人创业成功后又选择创业,赚了钱还要

Jquery EasyUI的添加,修改,删除,查询等基本操作介绍

http://www.jb51.net/article/42016.htm 初识Jquery EasyUI看了一些博主用其开发出来的项目,页面很炫,感觉功能挺强大,效果也挺不错,最近一直想系统学习一套前台控件,于是在网上找了一些参考示例.写了一些基本的增删改查功能,算是对该控件的基本入门.后续有时间继续深入学习. 在学习jquery easyui前应该先到官网下载最新版本http://www.jeasyui.com/download/index.php 先看一下运行后的页面 1.列表展示 2.新

Bootstrap-3-Typeahead

是Bootstrap-3-Typeahead,不是Twitter open source的typeahead,两者用法有差异.外加如果配合原生的Bootstrap3 的话推荐还是用这个.(当然Twitter open source也有个bootstrap). 感觉这个简单功能够用了. 现在公司的项目中后台管理界面都开始用bootstrap 3 了,界面高大尚了很多,程序员就算不太会css也不用担心做的界面太丑了. 项目中要实现Jquery UI的autocomplete控件的功能,谷歌了一下,发

C语言告一段落。

历史一个月,C语言学习结束,作为一门载体语言,大概都懂,就是熟练度不够,马上国庆节,借着国庆节假期多翘翘代码,熟悉熟悉. 首先了解了计算机的运行过程,开始学习如何画流程图,大概知道了计算机的操作过程后,便开始了解C语言. 从学习常量到变量,从输出带输入,从简单表达式到复杂表达式,从认识运算符到写语句,从简单的语句到加IF,switch的语句. 这前面学的比较轻松,终于,循环部分开始了,慢慢的作为一名初学C的人开始感到压力存在,一道题就会构思半天也找不到出路,经过一些 题量的练习和理解,慢慢知道循

spring mvc 4.3.2 + mybatis 3.4.1 + mysql 5.7.14 +shiro 幼儿园收费系统 之 登录

如标题,用spring mvc 4.3.2+mybatis 3.4.1 + mysql 5.7.14 +shiro 开发了一个用于幼儿园的管理系统. 功能模块 包括 账号,角色,权限管理. 幼儿档案管理, 幼儿收费管理等. 权限方面采用了shiro的权限控制,感觉还是蛮强大的.我的理念是 简单,够用就好. 前端框架是基于H-ui.admin的模板来开发的.这个模板用起来还是蛮方便的,适合对前端不是很熟的人采用,可以达到专业的效果.赞一个. 先截个图 实现要点,前端用js把密码用md5加密后传给后