samba实现与windows共舞

简介:

##########################################################

  • 闲扯Samba

  • Windows作为服务端

  • Linux作为服务端

################################################################


闲扯Samba

   最近几个月看的东西有点多,事也多,一直抽不开身写博文。总结的东西倒是不少,但自己还未能完全消耗形成完善的体系,所以拿不出手的东西写了是一定会误导博友的,正好最近用到samba就顺便总结下基础服务。感觉自己欠下好多博文,深入浅出的博文确实不好写,只能慢慢来了,当作锻炼自己。

   windows和Linux之间通过FTP共享文件,不方便用户使用,于是samba就诞生了。啥是samba?samba是干啥的呢?简单的来说samba是CIFS/SMB协议的一种实现,CIFS/SMB协议实现了跨平台文件共享,windows的网上邻居就是使用CIFS协议,因此Samba可以实现linux和windows之间的文件共享。需要特别说明的是客户端访问samba服务的用户账户一定是系统用户,而密码则是由samba自己维护的,接下来通过介绍linux和windows之间共享文件的模式来进一步了解samba是什么。


Windows作为服务端

   这种工作模型下,linux将作为客户端访问windows,所以linux需要安装客户端软件,并且需要访问凭证,文件的最终访问权限为共享权限和文件系统权限二者的交集,首先我们看看windows作为服务端是如何共享出资源的。

   创建test用户

wKiom1M9ir2QjGA4AAIZfsYbrRc856.jpg

   添加文件系统权限

wKiom1M9i1mBACtWAAFpfZwrBuM968.jpg

   添加共享权限

wKiom1M9i3iTrM7XAAJ6kWwPB8c160.jpg

   linux作为客户端需要安装客户端工具

1
yum  install  samba-client -y

   列出服务共享的目录列表

1
smbclient -L 192.168.1.201 -U  test

wKioL1M9jDiy6pTOAAK4e7FOeZw527.jpg

   进入共享目录进行上传、下载等操作

1
smbclient  //192 .168.1.201 /testdir   -U  test

wKioL1M9jQLTgANSAAGSPobm69k296.jpg

wKiom1M9jWHS6ICyAAEvorPE6cM037.jpg

   挂载共享目录至本地

1
2
3
mkdir  /winfs
mount  -t cifs -o username= test ,password=123  //192 .168.1.201 /testdir  /winfs
touch  /winfs/test

wKioL1M9j3GTb1WSAAExfOfYVQA263.jpg


Linux作为服务端

   linux作为服务端需要安装samba主包,samba还支持web-gui化管理工具swat,samba的选项有很多,兴趣的朋友可以自行研究,这里以实际案例来演示samba的在工作中是如何使用的。    

   安装samba

1
2
yum  install  -y samba
setenforce 0             #samba会受到selinux的影响

   启动服务查看监听端口

1
2
3
4
for  in  smb nmb;  do  service $i restart;  done
netstat  -tunlp
smbd负责文件共享   port 445
nmbd负责NetBIOS   port 137 138 139

实战需求:任何用户访问samba服务必须经过认证,每个用户有自己的目录并且只有自己可以看到,public为公共目录任何人都可以增删改,tom,lucy属于ios部门,ios部门有自己专属的同名目录并且只有所属职员有增删改权限;bob,jim属于web部门,web部门有专属的同名目录并且只有所属职员有增删改权限。

   创建公共目录

1
2
3
4
mkdir  -pv  /office/public
mkdir  -pv  /office/ios
mkdir  -pv  /office/web
mkdir  -pv  /office/users

   批量创建用户、用户目录、添加用户到指定组、修改用户目录权限脚本(如果在想在/home下就很简单,直接创建用户就可以,不用这么麻烦,这里只是为了更清楚的印证文件最终权限为共享权限和文件系统权限二者的交集)

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
#
users = 'bob jim'
path= '/office/users/'
group= 'web'
groupadd $group &> /dev/null
for  in  $ users ;
do
     useradd  -g $group -r $i &> /dev/null  &&  echo  "Add $i succeed in $group ."
     mkdir  -pv $path$i &>  /dev/null  &&  echo  "mkdir $path$i succeed ."
     setfacl -m u:$i:rwx $path$i &&  echo  "$path$i permission ok"
done

   为ios、web目录设置权限,根据自己的需要做出设置

1
2
3
4
5
6
setfacl -m g:ios:rwx  /office/ios     #为目录定义用户权限
setfacl -m g:web:rwx  /office/web     #为目录定义组权限
chmod  o-r  /office/ios                #ios组以外的用户无法进入ios目录
chmod  o-r  /office/web                #web组以外的用户无法进入web目录
chmod  o+r  /office/ios                #ios组以外的用户只能查看,无法删、改
chmod  o+r  /office/web                #web组以外的用户只能查看,无法删、改

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[global]
     netbios name = Linux File Server         #辅助名称
     server string = Samba                    #服务名称
     smb  passwd  file  /etc/samba/smbpasswd   #密码文件存放位置
     log  file  /var/log/samba/log .%m         #日志文件
     max log size = 500                       #日志大小
     socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
     idmap config * : backend = tdb 
     printing = bsd
[homes]
     comment = user_home
     path =  /office/users/ %U                 #用户家目录
     browseable = no                         #其他人无法浏览
     writable =  yes                          #可写
     valid  users  = %S                        #允许访问的用户
     sync  always =  yes                       #同步模式工作
     create mask = 0755                      #创建文件权限
     directory mask = 0755                   #创建目录权限
[public]
     comment = public
     path =  /office/public
     write list = +staff                    #共享写列表
     read  only = No                         #非只读模式,就是可写
     sync  always =  yes
     create mask = 0777
     directory mask = 0777
     guest ok = Yes                         #所有人可见
[ios]
     comment = ios
     path =  /office/ios
     write list = +ios
     #read only = No          
     sync  always =  yes
     create mask = 0777
     directory mask = 0777
     guest ok =  yes
[web]
     comment = web
     path =  /office/web
     write list = +web
     #read only = No
     sync  always =  yes  
     create mask = 0777
     directory mask = 0777
     guest ok = Yes

   使用ios部门tom登录测试

wKioL1M9pLDQo-2hAAFROviD2K0150.jpg

wKiom1M9pNjBlAyfAAFoxsaHRW4157.jpg

wKioL1M9pLDRM2dwAAFwg3HwMtc266.jpg

wKiom1M9pNiyEwWcAAEsBnWRwJo281.jpg

   使用web部门bob登录测试

wKioL1M9pjODcKlXAAFLmmqnecM643.jpg

wKiom1M9pluAra6hAAGYwNUh9m8616.jpg

wKioL1M9pjOT-iW1AAFC4efzR7k244.jpg

wKiom1M9plzAKWZrAAExMDrx4nU391.jpg

   使用test用户登录测试

wKioL1M9qRDCRVxUAAG6OIdlUes338.jpg

wKiom1M9qTji7Q6oAAFE-U9OB5w757.jpg

wKioL1M9qRCQlPxPAAE10_hBZ6A052.jpg

samba的使用介绍到此,欢迎博友提出疑问和指正。



本文转自 ftmoonfans  51CTO博客,原文链接:http://blog.51cto.com/soulboy/1390190


相关文章
|
消息中间件 安全 API
C#实现操作Windows窗口句柄:SendMessage/PostMessage发送系统消息、事件和数据【窗口句柄总结之二】
SendMessage/PostMessage API 可以实现发送系统消息,这些消息可以定义为常见的鼠标或键盘事件、数据的发送等各种系统操作......
5681 1
C#实现操作Windows窗口句柄:SendMessage/PostMessage发送系统消息、事件和数据【窗口句柄总结之二】
|
7月前
|
存储 Linux 开发工具
简述利用samba实现windows和linux之间文件同步
简述利用samba实现windows和linux之间文件同步
397 0
|
API C# Windows
C#实现操作Windows窗口句柄:常用窗口句柄相关API、Winform中句柄属性和Process的MainWindowHandle问题【窗口句柄总结之三】
本篇主要介绍一些与窗口句柄相关的一些API,比如设置窗口状态、当前激活的窗口、窗口客户区的大小、鼠标位置、禁用控件等,以及介绍Winform中的句柄属性,便于直接获取控件或窗体句柄,以及不推荐...
3215 0
C#实现操作Windows窗口句柄:常用窗口句柄相关API、Winform中句柄属性和Process的MainWindowHandle问题【窗口句柄总结之三】
|
Ubuntu Linux 数据安全/隐私保护
Ubuntu系统配置Samba实现与Windows系统的文件共享
Ubuntu系统配置Samba实现与Windows系统的文件共享
223 0
|
Ubuntu Linux 数据安全/隐私保护
Linux下 Samba 服务器搭建——方便Windows环境下与Linux环境进行文件交互使用。
Linux下 Samba 服务器搭建——方便Windows环境下与Linux环境进行文件交互使用。
216 1
Linux下 Samba 服务器搭建——方便Windows环境下与Linux环境进行文件交互使用。
|
Ubuntu 安全 Linux
【过关斩将般的一步步实现】windows本机通过xftp/xshell连接Ubuntu虚拟机服务器
【过关斩将般的一步步实现】windows本机通过xftp/xshell连接Ubuntu虚拟机服务器
1007 1
【过关斩将般的一步步实现】windows本机通过xftp/xshell连接Ubuntu虚拟机服务器
|
API C# Windows
C#实现操作Windows窗口句柄:遍历、查找窗体和控件【窗口句柄最全总结之一】
C#对Windows窗口或窗口句柄的操作,都是通过 P/Invoke Win32 API 实现的,DllImport引入Windows API操作窗口(句柄),可以实现枚举已打开的窗口、向窗口...
3836 0
C#实现操作Windows窗口句柄:遍历、查找窗体和控件【窗口句柄最全总结之一】
|
JSON Java API
C#winforms实现windows窗体人脸识别
C#winforms实现windows窗体人脸识别
340 0
|
Linux iOS开发 开发者
实现在windows、linux下上传ios app到App Store
实现在windows、linux下上传ios app到App Store
实现在windows、linux下上传ios app到App Store
|
JSON JavaScript 安全
基于Windows微信实现实时收发微信消息App
基于Windows微信实现实时收发微信消息App
1412 0
基于Windows微信实现实时收发微信消息App