在windows当中我们最常见的就是网上邻居可以看到同一互联网上连接的所有用户
在服务器端,linux与window Server相比的稳定性,安全性执行效率以及性价比都是较高的。所以好多window Server下跑的一些服务都会切换到运行在linux服务上,但是对于一些桌面用户来说用到的较多的就是文件共享协议。而在linux中我们可以使用 FTP NFS这类型文件共享协议,但是对于window上比较简单的直接打开的服务在linux中的nfs协议来说是不能在window上使用的这种直接将文件系统共享出来的协议为SMB。
与ftp的区别是不用将文件下载下来在使用,是直接可以在共享中打开使用的,所以说这种共享方式在使用当中是非常方便的,但是SMB是window当中的一种私有协议。即使如此在linux当也提供对SMB协议的一种支持。(虽然是window下的私有协议但是我们的开源技术团队为我们的linux也提供了这种服务称为samba服务,在开发过程中也是相当的艰苦 ,由于在window下是闭源的所以开发者是通过抓包分析window下所产生的数据包来实现的。弄清楚它的一个原理。)
SMB(Server Message block)协议是window下所使用的文件共享协议,我们在linux系统或者其类unix系统当中可以通过samba服务来实现SMB功能。
Samba服务是SMB的一个开源实现。
SMB的功能有哪些:
1.通过SMB协议进行文件共享2.通过SMB协议进行打印共享(我们可以通过在linux上通过smb配置打印服务器,为window提供打印服务)3.加入一个windows2000/2003/2008域环境(在企业环境当中应用最多,目前smb是支持这三种主流的window服务操作系统的,好多企业当中整个的企业环境当中是使用window的域环境进行管理的,而所有的用户组,权限,组策略信息都是在window域环境进行配置的,那么但是我们的企业又想把一些应用服务和需要用到的一些域环境进行认证或者是做权限控制的这些应用服务去切换到linux系统当中,那在这种情况下就涉及到我如何和window下的这些域环境进行兼容,那么smb是可以加入window域环境当中,并且是可以和window下的这些域环境进行认证操作的。所以smb这个协议是相当强大的不仅限于只是实现文件共享)4.通过windows域环境进行认证操作在linux中怎么启动SAMBA?
安装samba。
SAMBA 配置文件:
端口号:
SAMBA 配置文件的格式
[global] ###全局控制段 workgroup = workgroup(MYGROUP)#工作组server string = Samba Server Version %vsecurity = userencrypt passwords = yes#密码加密wins support = yes#wins支持log level = 1 #日志级别max log size = 1000#最大日志kbread only = no#可读写 [homes] 共享目录名称 #家目录 browsable = no#浏览map archive = yes [printers] #打印机 path = /var/tmp#指定目录printable = yes#是个打印机min print space = 2000 #空间 [test] #共享的目录 browsable = yes#可浏览read only = yes#只读path = /usr/local/samba/tmp#共享的服务器目录 例子:[global]
workgroup = workgroup
[homes]
browseable = no
writable = yes
[test]
path = /share
comment = test a directory
#重启服务
[root@mail samba]# systemctl restart smb
[root@mail samba]# systemctl restart nmb
windows系统中删除登陆缓存信息
cmd>net use * /delete
在window资源设备器上去访问:192.168.0.130
提示要账号和密码:
添加samba用户
(先useradd添加用户)
[root@localhost samba]# smbpasswd -a xixi
New SMB password:
Retype new SMB password:
Added user xixi.
查看samba用户用
#pdbedit -L
最后看到两个目录 用户家目录 xixi test 对应得是/share
要求:
1、通过samba实现公司的文件交换服务器,
2、实现/public 目录让所有人访问,所有人都可以写入文件
配置示例:
[root@localhost samba]# cat smb.conf
[global]
workgroup = workgroup
[public]
path = /public
public = yes
comment = file
writable = yes
注意:selinux开启的状态下,需要执行:chcon -t samba_share_t /public -R
用户控制:1.public =所有用户都可以访问 / guest ok =yes/no
2. map to guest = Bad User 匿名访问
3. browsable = 可浏览(设置共享是否可游览,如果是no表示隐藏,通过ip+共享名进行访问)
4. writable = yes 可写,还要看目录权限
5. writable list = maomao,@GROUPNAME,+GROUPNAME
6. readonly = yes 只读设置
7. create mask = 0644 客户机创建文件权限
8. directory mask = 0744 客户机创建目录的权限
9. valid users = user1,user2,@group1//禁止登录用户,用户用逗号隔开,组用@ //禁止
invalid = //允许访问控制
10. max connections = 最大连接数目
11. deadtime = 断掉连接时间(分钟,0为不限制
12. hosts allow = 允许主机
hosts deny = 拒绝主机(允许优先)
案例2 要求:
1、通过samba提供一个公共文件服务器,所有人都可以访问并写入,但是不可以删除和修改他人的文件。
2、技术部需要一个文件服务器,用于存放常用的软件工具,所有人都可以访问,但是只有技术部可以写入
3、每个人都可以进入自己的独立家目录,别人不可以访问。
配置示例:
[root@localhost ~]# vim /etc/samba/smb.conf
[global]
workgroup = workgroup
security = user
[public] 共享名
path = /public 共享路径
public = yes 指定该共享目录是否允许guest账户访问
comment = file 共享目录的描述
writable = yes 该目录路径是否可写
[soft]
path = /soft
public = yes
comment = soft
write list = @jishubu (表示技术部组的人可以写添加技术部组将用户加入组,并将用户改为samba用户)
[homes]
browsable = no
writable = yes
[root@localhost ~]# chcon -t samba_share_t /soft
[root@localhost ~]# chcon -t samba_share_t /share
[root@localhost ~]# setsebool -P samba_export_all_rw on
注意SELINUX开启的情况下,需要执行setsebool -P samba_enable_home_dirs on 否则,用户不能进入自己的家目录