博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
samba实现与windows共舞
阅读量:6203 次
发布时间:2019-06-21

本文共 3591 字,大约阅读时间需要 11 分钟。

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

  • 闲扯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用户

   添加文件系统权限

   添加共享权限

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

1
yum 
install 
samba-client -y

   列出服务共享的目录列表

1
smbclient -L 192.168.1.201 -U 
test

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

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

   挂载共享目录至本地

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


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登录测试

   使用web部门bob登录测试

   使用test用户登录测试

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

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

转载地址:http://cnhca.baihongyu.com/

你可能感兴趣的文章
[NOI2004]郁闷的出纳员
查看>>
安装mysql-connector-python
查看>>
【C语言】15-预处理指令1-宏定义
查看>>
火鸡堂 对 基于云的胜利冲锋队 为了交项目干杯 的 Beta 产品测试报告
查看>>
DataTable.ImportRow()与DataTable.Rows.Add()的区别
查看>>
mysql操作
查看>>
JavaScript设计模式: 对象创建
查看>>
The Master of Science degree in Computer Scienc
查看>>
使用Docker镜像
查看>>
Web前端学习第十四天·fighting_JavaScript概述
查看>>
创建wifi热点---让手机共享笔记本网络
查看>>
通过判断自定义属性的值给出不同的样式
查看>>
SeaJS 模块化加载框架使用
查看>>
VMware Workstation 8安装CentOS 6字符界面
查看>>
print函数用法总结
查看>>
spring 整合redis
查看>>
会议论文重新投稿算不算侵权?这肯定是所多人都遇到过的问题(转)
查看>>
JBoss配置解决高并发连接异常问题(转)
查看>>
1.1线性方程组
查看>>
2013nanjingJ
查看>>