CentOS7下Samba的安装与配置
阅读原文时间:2021年04月20日阅读:1

一、Samba简介

    Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

   Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享。

二、关闭SELinux和防火墙

a、临时关闭(不用重启机器): 

# setenforce 0                       ##设置SELinux 成为permissive模式  (关闭SELinux)
# setenforce 1                       ##设置SELinux 成为enforcing模式     (开启SELinux)

b、修改配置文件需要重启机器:

# vi /etc/selinux/config

将SELINUX=enforcing 改为SELINUX=disabled(需重启机器)

c、可自己做策略开放相应端口,这里我直接关闭:

# systemctl status firewalld.service       ##查看防火墙状态
# systemctl stop firewalld.service         ##关闭防火墙

三、安装Samba服务

①直接yum安装

# yum install samba samba-client

②启动并查看Samba

# systemctl start smb nmb        ##注:NMB对客户端提供NetBIOS服务
# systemctl status smb nmb

四、配置Samba服务

①配置

# vi /etc/samba/smb.conf
=================== Global Settings[全局选项] ==============================
[global]
#
workgroup = WORKGROUP               ##设定Samba Server所要加入的工作组或域
server string = Samba Server Version %v        ##设定注释,宏%v表示显示Samba的版本号
netbios name = zhi                ##设置Samba Server的NetBIOS名称

map to guest = bad user             ##开启匿名访问

# ----------------- Logging Options [日志选项]-----------------------------
log file = /var/log/samba/log.%m   ##设置日志文件存储位置及名称,宏%m(主机名),表示对每台                                      访问Samba Server的机器都单独记录一个日志文件
max log size = 50             ##设置Samba Server日志文件的最大容量,单位为KB,0代表不限制
# ---------------- Standalone Server Options[独立运行进程] ---------------------
security = share            ##共享级别:共享目录只能被授权的用户访问
passdb backend = tdbsam     ##建立安全账户管理数据库
# ----------------- Printing Options[打印选项]-----------------------------
#        load printers = yes          ##设置是否在启动Samba时共享打印机
#        cups options = raw           ##通用unix打印选项
#================== Share Definitions[共享参数] ==============================

[homes]                              ##设置用户宿主目录
        comment = Home Directories        ##描述该共享:家目录
        browseable = no               ##指定该共享是否可以浏览
        writable = yes                  ##指定该共享路径是否可写
[printers]                          ##设置打印机宿主目录
        comment = All Printers         ##描述:所有打印机
        path = /var/spool/samba        
        browseable = no
        guest ok = no                 ##指定该共享是否允许guest账户访问
        writable = no
        printable = yes              ##指定是否可打印
[public]
        comment = Public Stuff      ##定义说明信息
        path = /home/samba          ##共享目录路径
        public = yes             ##指定该共享是否允许guest账户访问
        writable = yes
        printable = no
        write list = +staff       ##允许写入该共享的用户

注:

+ =====》 只在本机的密码文件组中查找
& =====》只在nis服务中查找
@ =====》先通过NIS服务器查找,nis找不到再到本机查找

②测试语法

③建立共享目录

# mkdir /home/samba
# cd /home/samba/
# touch samba.txt

五、测试

如果使用root用户测试需要添加给samba添加root用户:smbpasswd -a root

①在windows下输入\\192.168.10.128访问

②在Linux下输入smbclient //192.168.10.128/public访问

③配置只允许个别用户访问

a、配置smb.conf,添加如下

[time]
        comment = Ashes Of Time
        path = /share/time
        valid users = zhi
        write list = zhi
        printable = no
        create mask = 0755
        directory mask = 0755

b、建立共享目录、添加相应用户和组

# mkdir -p /share/time
# groupadd admin
# useradd zhi -s /sbin/nologin
# cd /share/time
# echo "12345" > abc.txt
# pdbedit -a -u zhi              ##新建Samba用户

# pdbedit -L               ##查看Samba用户列表
# systemctl restart smb nmb        ##重启Samba

注: 可使用命令smbpasswd -a + 用户名为该用户添加Samba密码,但用户必须是系统用户。

c、验证

windows客户端验证:

在”这台电脑”右键,”映射网络驱动器”

提示输入用户名密码

输入后

并会在这台电脑上显示

错误:输入用户名、密码后弹出如下内容:

“指定的网络文件夹目前是以其他用户名和密码进行映射的。要用其他用户名和密码进行连接,首先请断开所有现有的连接到网络共享的映射。”

解决:使用命令net use查看

然后使用命令net use * /delete结束所有连接,即可连接。

Linux客户端验证:

$  smbclient -L 192.168.10.128 -U zhi</code></pre><div class="toolbar"></div></div><p><a href="http://s3.51cto.com/wyfs02/M00/73/E1/wKiom1YI9k-xXJqlAAFd9-LDnAg333.jpg" target="_blank" style="color: rgb(66, 133, 244);"><img src="http://s3.51cto.com/wyfs02/M00/73/E1/wKiom1YI9k-xXJqlAAFd9-LDnAg333.jpg" title="QQ图片20150928161044.png" alt="wKiom1YI9k-xXJqlAAFd9-LDnAg333.jpg" style="cursor: pointer;"></a></p><div class="code-toolbar"><pre class="brush:bash;toolbar:false  language-bash">$ smbclient //192.168.10.128/time -U zhi

[![](https://article.cdnof.com/2104/1bdd04e9-ca3e-4049-b630-e97c2375feb6.png%22)](http://s3.51cto.com/wyfs02/M01/73/E1/wKiom1YI9z7AiwGLAADpN0KOoaw457.jpg)

问题:能下载不能上传

[![](https://article.cdnof.com/2104/94657ba3-05ce-4159-921f-6054721910d2.png%22)](http://s3.51cto.com/wyfs02/M02/73/E1/wKiom1YI-xbzYRYIAACaKrbFdHE575.jpg)

解决:

    # setfacl -m u:zhi:rwx /share/time/      ##赋予用户写权限

[![](https://article.cdnof.com/2104/04b5eaa2-5627-40af-b27e-107e3841158f.png%22)](http://s3.51cto.com/wyfs02/M02/73/E1/wKiom1YI_XvBke0xAAEeBG8q_5I064.jpg)

已经可以上传了



Linux进行挂载

    $ sudo apt-get install cifs-utils     ##网络文件共享系统套件
    $ sudo mkdir /mnt/samba
    $ <span class="token function">sudo</span> <span class="token function">mount</span> -t cifs //192.168.10.128/time /mnt/samba -o username<span class="token operator">=</span>zhi</pre><div class="toolbar"></div></div><p><a href="http://s3.51cto.com/wyfs02/M01/73/DF/wKioL1YJAUOAm2OqAAB6SKUrRgw012.jpg" target="_blank" style="color: rgb(66, 133, 244);"><img src="http://s3.51cto.com/wyfs02/M01/73/DF/wKioL1YJAUOAm2OqAAB6SKUrRgw012.jpg" title="QQ图片20150928165821.png" alt="wKioL1YJAUOAm2OqAAB6SKUrRgw012.jpg" style="cursor: pointer;"></a></p><p><br></p><p>Linux实现自动挂载</p><div class="code-toolbar"><pre class="brush:bash;toolbar:false  language-bash"><code class="  language-bash">$ sudo vi /etc/fstab     ##添加如下
//192.168.10.128/time     /mnt/samba   cifs   credentials=/etc/samba/zhi.passwd 0 0
$ sudo vi /etc/samba/zhi.passwd         ##防止密码泄露,所以另建文件
username=zhi
password=abcdef
$ sudo chmod og=--- /etc/samba/zhi.passwd          ##设置该密码文件权限
$ sudo umount /mnt/samba                     ##卸载
$ sudo mount -a                       ##挂载fstab下的所有选项
$ ls /mnt/samba/

附:Ubuntu下安装配置Samba的wiki:

http://wiki.ubuntu.org.cn/Samba

©著作权归作者所有:来自51CTO博客作者心远何方的原创作品,如需转载,请注明出处,否则将追究法律责任

Samba   cifs s Linux系统服务

1

分享

微博 QQ 微信

收藏

上一篇:最小化安装centos7实现if… 下一篇:Nginx实现反向代理和负载均衡

心远何方

82篇文章,40W+人气,18粉丝

关注

Ctrl+Enter 发布

发布

取消

推荐专栏

上新

网工2.0晋级攻略 ——零基础入门Python/Ansible

网络工程师2.0进阶指南

共30章 | 姜汁啤酒

¥51.00357人订阅

订阅

老司机网络运维干货集锦(含路由交换安全Qos优化)

新西兰资深网工运维之道

共16章 | 姜汁啤酒

¥51.00605人订阅

订阅

基于Kubernetes企业级容器云平台落地与实践

容器私有云平台实践之路

共15章 | 李振良OK

¥51.00162人订阅

订阅

最近更新

基于Python的DevOps实战

运维开发全攻略

共20章 | 抚琴煮酒

¥51.0059人订阅

订阅

最近更新

Web网站安全评估分析及防御

企业级网安运维

共30章 | simeon2005

¥51.0086人订阅

订阅

负载均衡高手炼成记

高并发架构之路

共15章 | sery

¥51.00196人订阅

订阅

最近更新

带你玩转高可用

前百度高级工程师的架构高可用实战

共15章 | 曹林华

¥51.00259人订阅

订阅

最近更新

VMware vSAN中小企业应用案例

掌握VMware超融合技术

共42章 | 王春海

¥51.00111人订阅

订阅

猜你喜欢

Kubernetes部署GitLab 关于ceph的一些问题及解决 Mysql数据库的使用总结之ERROR 1146 (42S02) Samba配置文件常用参数详解 Samba服务器的配置 python利用zabbix API添加监控 监控三剑客 是什么浪费了运维的工作时间

1

1

分享

关注

心远何方

var praise_url = 'http://blog.51cto.com/praise/praise' addReply_url = 'http://blog.51cto.com/comments/add' removeUrl = 'http://blog.51cto.com/comments/del' blog_id = '1698879' rid = '0' is_comment = '0' comment_list = '/blog/ajax-comment-list' comment_sort = "asc" index_url = 'http://blog.51cto.com/wangzhijian'; uc_url = 'http://ucenter.51cto.com/' blog_url = 'http://blog.51cto.com/' img_url = 'https://static1.51cto.com/edu/blog/' i_user_id = '' c_user_id ='6427016' collect_url = 'http://blog.51cto.com/collect/add' is_old = '1' nicknameurl = 'http://blog.51cto.com/wangzhijian' nickname = '心远何方' myself = window.location.href; ('.you-like-list li:odd').css({'margin-left': '10%'}); ('.you-like-list li:odd').css({'margin-left': '10%'}); ('.column-box a:odd').addClass('left-list') (′.myUrl′).text(myself).click(function()window.open(myself))setTimeout(function()$(′.Footer′).css(′margin−top′:′−50px′),50)functionFollowBtnSucc(e)//1:未关注,2:已关注,3:互相关注if(e==2||e==3)$.post(′/index/wxbind′,uid:userId,function(res)if(res.data.wxBind==0)//没绑定if(getCookie(′follow1′))returnfalse;box1()elseif(getCookie(′follow2′))returnfalse;box2(),′json′)FollowBtn=newFollow( ( ′ . m y U r l ′ ) . t e x t ( m y s e l f ) . c l i c k ( f u n c t i o n ( ) w i n d o w . o p e n ( m y s e l f ) ) s e t T i m e o u t ( f u n c t i o n ( ) $ ( ′ . F o o t e r ′ ) . c s s ( ′ m a r g i n − t o p ′ : ′ − 50 p x ′ ) , 50 ) f u n c t i o n F o l l o w B t n S u c c ( e ) / / 1 : 未 关 注 , 2 : 已 关 注 , 3 : 互 相 关 注 i f ( e == 2 | | e == 3 ) $ . p o s t ( ′ / i n d e x / w x b i n d ′ , u i d : u s e r I d , f u n c t i o n ( r e s ) i f ( r e s . d a t a . w x B i n d == 0 ) / / 没 绑 定 i f ( g e t C o o k i e ( ′ f o l l o w 1 ′ ) ) r e t u r n f a l s e ; b o x 1 ( ) e l s e i f ( g e t C o o k i e ( ′ f o l l o w 2 ′ ) ) r e t u r n f a l s e ; b o x 2 ( ) , ′ j s o n ′ ) F o l l o w B t n = n e w F o l l o w ( ('#checkFollow1_6427016'),'6427016','1',['on','in','mutual','off']); FollowBtn.success=FollowBtnSucc; FollowBtn = new Follow( ('#checkFollow2_6427016'),'6427016','1',['on','in','mutual','off']);
        FollowBtn.success=FollowBtnSucc;
        FollowBtn = new Follow( ('#checkFollow2_6427016'),'6427016','1',['on','in','mutual','off']);        FollowBtn.success=FollowBtnSucc;        FollowBtn = new Follow( ('#checkFollow3_6427016'),'6427016','1',['on','in','mutual','off']); FollowBtn.success=FollowBtnSucc; if(is_old==1){ // SyntaxHighlighter.all(); insertCodeElement("