linuxSAMBA共享
转自http://blog.chinaunix.net/uid-20537084-id-2977850.html
经常要在Windows与Linux之间共享文件,Samba是一个很常见的选择:Linux运行Samba服务,Windows访问Linux上共享的文件。在不需要用户访问控制的场景下,Samba服务的安全级别设置为共享(share)就可以了。我的需求是想对Samba服务的访问者进行身份验证,所以选择用户安全级别(user)。user级别要求用户访问samba服务时提供用户名和密码,而且身份验证由 samba server 负责。下面是用smbpasswd方式做的,因我的需求很单一,所以Samba的配置文件也非常简单。这里做个笔记记录一下以备忘。
一、准备Samba软件
1. 安装Samba相关软件包,安装过程略
2. 备份samba配置文件,我们后面要自己从头新建一个配置文件
sudo mv /etc/samba/smb.conf /etc/samba/smb-original.conf
sudo touch /etc/samba/smb.conf
二、工作场所
我们在/etc/samba目录下工作,涉及的文件都在这个目录下。
三、相关文件
用smbpasswd完成user安全级别需要修改或者生成的文件只有下面3个:
/etc/samba/smb.conf # samba配置文件,大家都懂的
/etc/samba/smbusers # 用来定义用户名映射,比如可以将root换成administrator、admin等
/etc/samba/smbpasswd # samba密码存放文件
下面简单描述一下这3个文件。
四、smb.conf 文件
samba自带的smb.conf文件注释很多,例子给的也不少,容易让人觉得这个文件很复杂,其实它的框架很简单,主要包括下面几个小节:
[global]
[homes]
[printers]
[自定义小节]
其中[自定义小节]可以有多个,分别共享不同的目录。
我不关心打印机共享,所以注释掉了[printers]小节。
我也不想让用户登陆samba之后看到自己的“家”目录,所以也注释掉了[homes]小节。因为登陆samba server的用户也同时必须是linux系统的用户,即存在于/etc/passwd文件中的用户,所以每个samba用户会有自己的“家”目录,在/home下,目录名称是使用者自己的帐号。
我们主要关注[global]小节和[自定义小节],[global]小节中我们此次关注的重要参数有以下几个:
workgroup = WORKGROUP
说明:指明共享所在的工作组,可以是NT域名、工作组名
server string = samba server on ubuntu
说明:客户端看到的服务器的描述信息
netbios name = ubuntu_smb
说明:设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了
interfaces = 127.0.0.0/8 eth0
说明:设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址
hosts allow = 192.168.1. 192.168.163. 192.168.153.
说明:表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。我这里只允许3个网段里的所有客户端访问samba server。
security = user
说明:设置用户访问Samba Server的验证方式,一共有四种验证方式。
1. share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
2. user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
3. server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
4. domain:域安全级别,使用主域控制器(PDC)来完成认证。
我只需要user级别的安全验证就可以了。
username map = /etc/samba/smbusers
说明:用来定义用户名映射,比如可以将root换成administrator、admin等。要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,以保护Linux的系统账号root。后面会介绍这个文件。
encrypt passwords = true
说明:是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。
passdb backend = smbpasswd
说明:passdb backend密码验证后端。目前支持的有三种:smbpasswd、tdbsam和ldapsam。其中smbpasswd方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。这里我选用smbpasswd。
smb passwd file =/etc/samba/smbpasswd
说明:用来定义samba用户的密码文件。smbpasswd文件如果默认不存在,要手工新建。后面有介绍这个文件。
log file = /var/log/samba/log.%m
说明:设定 samba server 日志文件的储存位置和文件名(%m代表客户端主机名)。
max open files = 1000
说明:同一客户最多能打开的文件数目
socket options = TCP_NODELAY
说明:用来设置服务器和客户端之间会话的Socket选项,可以优化传输速度。
[自定义小节]小节主要的参数如下:
comment = code
说明:comment是对该共享的描述,可以是任意字符串。
path = /home/songyd/code
说明:path用来指定共享目录的路径。
writable = yes
说明:writable用来指定该共享路径是否可写。这里我们允许写入,以满足文件双向共享。
browseable = yes
说明:browseable用来指定该共享是否可以浏览。
available = yes
说明:available用来指定该共享资源是否可用。
五、smbusers 文件
该文件格式如下:
系统用户名 = 映射的虚拟账号1,映射的虚拟账号2,...
例如:
songyd = admin
songyd用户是samba用户,也是一个Linux系统的账号,为了不让samba用户知道存在songyd这个系统账号,可用这个文件实现songyd账号到虚拟账号admin的一个映射。只需告诉使用者用admin账号登陆即可,这样就保护了songyd这个账号。当然此时用songyd账号登陆samba也是可以的。
六、smbpasswd 文件
该文件格式如下:
name:uid:Lanman Password Hash:NT Password Hash:Account Flags:Last Change Time:
该文件可能默认并不存在,需要手动建立。建立后使用以下命令添加samba账号songyd的密码:
sudo smbpasswd -a songyd
这个命令会在/etc/samba/smbpasswd中写入类似如下内容:
songyd:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:BC53166B76BB840735D6AB4438B4CD5E:[U ]:LCT-4EA2F59B:
这些内容是命令自己添加的,我们不用去管。
【注意】有时发现smbpasswd命令即使执行没有错误,但/etc/samba/smbpasswd中却没有添加任何内容。这是由于smb.conf的passdb backend参数配置不正确,此参数必须设置为smbpasswd,这时smbpasswd -a songyd才会在/etc/samba/smbpasswd文件中添加记录。
七、最后结果
[global]
workgroup = WORKGROUP
server string = samba server on ubuntu
netbios name = ubuntu_smb
interfaces = 127.0.0.0/8 eth0
hosts allow = 192.168.1. 192.168.163. 192.168.153.
security = user
username map = /etc/samba/smbusers
encrypt passwords = true
passdb backend = smbpasswd
smb passwd file =/etc/samba/smbpasswd
log file = /var/log/samba/log.%m
max open files = 1000
socket options = TCP_NODELAY
;[homes]
; comment = home directories
; browseable = no
; writable = yes
; valid users = %S
; create mode = 0664
;[printers]
; printable = Yes
; browseable = No
; path = /var/spool/samba
[code]
comment = code
path = /home/songyd/code
writable = yes
browseable = yes
available = yes
八、重启服务
smb.conf修改完成,smbusers也已添加完毕,smbpasswd文件也已通过命令成功添加了记录,下面重启samba服务即可。Samba 有两个守护进程(nmbd 和 smbd),需要运行它们Samba 才能正常工作。
nmbd 是一个服务器,它可以理解和响应 NetBIOS over IP 命名服务请求,比如 Windows 95/98/ME、Windows NT、Windows 2000、Windows XP 和 LanManager 客户机等 SMB/CIFS客户机产生的请求。它还参与浏览协议,从而构建 Windows 网络邻居视图。
smbd 是服务器守护进程,它向 Windows 客户机提供文件共享和打印服务。这个服务器使用 SMB(或CIFS)协议向客户机提供文件空间和打印服务。
sudo service smbd restart
sudo service nmbd restart
九、软件环境
Linux系统 :ubuntu 11.10
Samba版本:Samba 3.5.11
转载于:https://blog.51cto.com/weimouren/1793605
linuxSAMBA共享相关推荐
- 2022-2028年中国共享住宿行业深度调研及投资前景预测报告
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了共享住宿行业相关概述.中国共享住宿行业运行环境.分析了中国共享住宿行 ...
- NumPy — 创建全零、全1、空、arange 数组,array 对象类型,astype 转换数据类型,数组和标量以及数组之间的运算,NumPy 数组共享内存
NumPy 简介 一个用 python 实现的科学计算包.包括: 1.一个强大的 N 维数组对象 Array : 2.比较成熟的(广播)函数库: 3.用于整合 C/C++ 和 Fortran 代码的工 ...
- Docker 入门系列(4)- Docker 数据管理(挂载目录、挂载文件、数据卷挂载、数据卷共享、数据卷删除、数据卷容器备份和恢复)
基于底层存储实现,Docker 提供了三种适用于不同场景的文件系统挂载方式:Bind Mount.Volume 和 Tmpfs Mount. Bind Mount 能够直接将宿主操作系统中的目录和文件 ...
- 解决nginx负载均衡的session共享问题
之前有写过ubuntu环境下搭建nginx环境,今天来谈一下nginx session共享问题,查了一些资料,看了一些别人写的文档,总结如下,实现nginx session的共享服务器有多台,用ngi ...
- 负载均衡中使用 Redis 实现共享 Session
最近在研究Web架构方面的知识,包括数据库读写分离,Redis缓存和队列,集群,以及负载均衡(LVS),今天就来先学习下我在负载均衡中遇到的问题,那就是session共享的问题. 一.负载均衡 负载均 ...
- PyTorch 笔记(10)— Tensor 与 NumPy 相互转换、两种共享内存以及两者的广播法则
Tensor 与 NumPy 有很高的相似性,彼此之间的互操作也非常简单有效,需要注意的是 Tensor 与 NumPy 共享内存,由于 NumPy 历史悠久,所以遇到 Tensor 不支持的操作时, ...
- oracle virtualbox 添加共享硬盘
创建共享磁盘 oracle virtualbox创建共享磁盘: 1.进入oracle VM的安装路径,执行如下命令: VBoxManage createhd --filename "E:\0 ...
- 170222、使用Spring Session和Redis解决分布式Session跨域共享问题
使用Spring Session和Redis解决分布式Session跨域共享问题 原创 2017-02-27 徐刘根 Java后端技术 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用 ...
- Linux访问Windows磁盘实现共享
业务需求说明:公司在部署hadoop集群和DB server与SAN存储,公司的想法是前端通过DB Server能够将非结构化的数据能放进SAN存储当中,而hadoop集群也能够访问这个SAN存储.因 ...
最新文章
- I'm stuck! ccf模拟题。
- SUSE安装g++的两种方法
- Moore状态机和Mealy状态机的区别
- eltwise_layer.cpp:170: error: (-215:Assertion failed) inputs.size() = 2 in function 'cv::dnn::Eltwi
- css根据文字长度实现宽度自适应
- php程序中报date错误
- android 圆形选中,RoundChoiceView
- MATLAB-矩阵基本语法知识
- 考研C++必刷题(一)
- 演练 动态数组存储学生对象 并且实现遍历 0119
- 图像处理-RGB彩色图像均衡化处理
- 主线程中访问网络有限制?无法得到数据,必须另起线程
- jieba对word文档词频分析
- FMS直播和点播测试
- 服务器有时候显示美国,美国服务器不通的情况解决方法
- 2022起重机械指挥考试题模拟考试题库及在线模拟考试
- 用计算机看影碟是数字化过程,2012年上海市高中学业水平考试信息科技
- 苹果iPhone手机如何安装Tiktok?最新IOS苹果TikTok抖音国际版下载免拔卡安装使用教程
- .NET Core 获取GET,Post 参数
- 【904. 水果成篮】
热门文章
- PyQt特殊对话框介绍
- mysql 监控 开源_强大的开源企业级数据库监控利器Lepus
- nginx 在阿里云怎么安装mysql_阿里云Linux服务器安装 nginx+mysql+php
- 禁用win10触摸屏手势_Win10平板边缘滑动手势大全及开启/关闭方法
- 最大素数c语言,for语句计算输出10000以内最大素数怎么搞最简单??各位大神们...
- python textwrap_[Python标准库]textwrap——格式化文本段落
- 架构师基础必备:“腹有诗书气自华”,驰骋一线大厂不是梦,抓紧收藏
- java 显示透明背景png图片
- linux获取bind返回值信息,v$sql_bind_capture 获取绑定变量信息
- oracle p l,使用P.A.L制作便携软件 (一) 基本原理 | 么么哒拥有者