设为首页 收藏本站
查看: 265|回复: 0

[经验分享] 搭建Samba共享服务及访问控制

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-4 08:35:01 | 显示全部楼层 |阅读模式
Samba共享服务

Linux如何访问Windows的共享?
Windows能实现访问Linux的共享吗?

关于Samba

--SMB/CIFS协议
   -- Server Message Block ,服务消息块
   -- Common Internet File System , 通用网际文件系统

Samba服务基础

主要软件包

[iyunv@localhost Server]# rpm -qa | grep samba
samba-common-3.0.33-3.39.el5_8           //公共程序
samba-3.0.33-3.39.el5_8                  //服务端程序
samba-client-3.0.33-3.39.el5_8           //客户端程序
samba-swat-3.0.33-3.39.el5_8             //Web管理后台

主要程序

--smbd : 提供对文件、打印资源的共享访问
         监听端口 TCP 139 、 TCP445
--nmbd : 提供基于NetBios协议的主机名解析
         监听端口 UDP137 、UDP138

系统服务脚本
--    /etc/init.d/smb
配置目录及主要配置文件
--   /etc/samba/
--   /etc/samba/smb.conf
配置文件检查工具
-- testparm


实验拓扑
         Linux Client
-----RHEL5.9(vmnet1)----------(vmnet1)
         Win7 Client

实验一:Samba匿名共享
将目录 /usr/src 共享给所有人
共享名设为 tools
允许所有人访问、无需密码验证
访问权限为只读

1、[iyunv@localhost ~]# rpm -q samba-client samba samba-common
samba-client-3.0.33-3.39.el5_8
samba-3.0.33-3.39.el5_8
samba-common-3.0.33-3.39.el5_8

2、修改主配置文件

...
        workgroup = pengpeng      //工作组名称
        server string = Samba Server Version %v   //服务器描述
...
       log file = /var/log/samba/%m.log  //日志路径,%m 对应客户机地址
...
        max log size = 50      //最大日志容量
...
       security = share        //默认使用的安全级别(user、share、server、domain)
...
         load printers = no    //屏蔽共享时看到的打印图标
[tools]                        //共享名称
       comment = tools public  //共享描述
       path = /usr/src       //共享目录的实际位置
       public= yes          //是否所有人可用
       browseable=yes       //是否隐藏
       read only = yes      //只读

3、启动服务
首先检查配置
[iyunv@localhost ~]# testparm   //检查配置命令
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[tools]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions //按回车查看配置信息

[global]                                 //全局配置
        workgroup = PENGPENG
        server string = Samba Server Version %v
        security = SHARE
        passdb backend = tdbsam
        load printers = No
        cups options = raw

[homes]
        comment = Home Directories
        read only = No
        browseable = No

[printers]
        comment = All Printers
        path = /var/spool/samba
        printable = Yes
        browseable = No

[tools]                                 //自定义配置共享
        comment = tools public
        path = /usr/src
        guest ok = Yes

启动服务

[iyunv@localhost ~]# service smb restart
关闭 SMB 服务:                                            [失败]
关闭 NMB 服务:                                            [失败]
启动 SMB 服务:                                            [确定]
启动 NMB 服务:                                            [确定]

确保服务开机启动
[iyunv@localhost ~]# chkconfig smb on
[iyunv@localhost ~]# chkconfig smb --list
smb             0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
[iyunv@localhost ~]#
监听端口
[iyunv@localhost ~]# netstat -anptu | grep mbd
tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      5798/smbd           
tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN      5798/smbd           
udp        0      0 0.0.0.0:137                 0.0.0.0:*                               5801/nmbd           
udp        0      0 0.0.0.0:138                 0.0.0.0:*                               5801/nmbd      

4、客户端测试

windows:
  UNC路径 \192.168.8.10
如图:
wKiom1QG28XQ5yyIAAE-L1Mkqlw112.jpg
linux:

安装samba-client
[iyunv@localhost Server]# rpm -ivh samba-client-3.0.33-3.39.el5_8.x86_64.rpm
warning: samba-client-3.0.33-3.39.el5_8.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
        package samba-client-3.0.33-3.39.el5_8.x86_64 is already installed
[iyunv@localhost Server]# rpm -q samba-client
samba-client-3.0.33-3.39.el5_8

[iyunv@localhost ~]# smbclient -L 192.168.8.10       //查看共享
Password:
Domain=[PENGPENG] OS=[Unix] Server=[Samba 3.0.33-3.39.el5_8]

        Sharename       Type      Comment
        ---------       ----      -------
        tools           Disk      tools public
        IPC$            IPC       IPC Service (Samba Server Version 3.0.33-3.39.el5_8)
Domain=[PENGPENG] OS=[Unix] Server=[Samba 3.0.33-3.39.el5_8]

        Server               Comment
        ---------            -------
        LOCALHOST            Samba Server Version 3.0.33-3.39.el5_8

        Workgroup            Master
        ---------            -------
        PENGPENG             LOCALHOST
        WORKGROUP            PENGPENG-PC
[iyunv@localhost ~]# smbclient //192.168.8.10/tools     //访问共享
Password:                                              //匿名共享,任意密码
Domain=[PENGPENG] OS=[Unix] Server=[Samba 3.0.33-3.39.el5_8]
Server not using user level security and no password supplied.
smb: > ls
  .                                   D        0  Wed Aug 20 11:49:58 2014
  ..                                  D        0  Wed Aug 20 11:38:11 2014
  debug                               D        0  Thu Oct  1 22:58:39 2009
  kernels                             D        0  Wed Aug 20 11:41:30 2014
  redhat                              D        0  Wed Aug 20 11:49:58 2014

                38751 blocks of size 524288. 29666 blocks available
smb: >
[iyunv@localhost ~]# mkdir -p /data/smb                    //建立挂在文件夹
[iyunv@localhost ~]# mount -t cifs //192.168.8.10/tools /data/smb/  //挂载
Password:
[iyunv@localhost ~]# mount | tail -1
//192.168.8.10/tools on /data/smb type cifs (rw,mand)  //查看挂载情况

配置自动挂载:
[iyunv@localhost ~]# vim /etc/fstab
...
/192.168.8.10/tools    /data/smb         cifs   passwd=defaults        0 0      //添加自动挂载,定义密码为空
...

[iyunv@localhost ~]# grep smb /etc/fstab
//192.168.8.10/tools    /data/smb         cifs   passwd=defaults        0 0
[iyunv@localhost ~]# cd /data/smb          //进入挂载目录
[iyunv@localhost smb]# ls
debug  kernels  redhat                    //浏览成功


实验二:Samba用户验证
修改原有的 [tools] 匿名共享设置
不再允许所有人访问
只允许jack读取、tom写入
拒绝其他用户或匿名访问
上传目录的权限为755
上传文件的权限为644

1、新建相应账户与samba密码

[iyunv@localhost ~]# useradd jack
[iyunv@localhost ~]# useradd tom
[iyunv@localhost ~]# echo "123456" | passwd --stdin jack
Changing password for user jack.
passwd: all authentication tokens updated successfully.
[iyunv@localhost ~]# echo "123456" | passwd --stdin tom
Changing password for user tom.
passwd: all authentication tokens updated successfully.
[iyunv@localhost ~]# pdbedit -a jack   //添加共享账号,必须有相对应的系统账号
new password:
retype new password:
Unix username:        jack
NT username:         
Account Flags:        [U          ]
User SID:             S-1-5-21-3977168788-1325546648-3669002591-1000
Primary Group SID:    S-1-5-21-3977168788-1325546648-3669002591-513
Full Name:            
Home Directory:       \localhostjack
HomeDir Drive:        
Logon Script:         
Profile Path:         \localhostjackprofile
Domain:               LOCALHOST
Account desc:         
Workstations:         
Munged dial:         
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    三, 03 9月 2014 15:36:26 CST
Password can change:  三, 03 9月 2014 15:36:26 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[iyunv@localhost ~]# pdbedit -a tom //添加共享账号,必须有相对应的系统账号
new password:
retype new password:
Unix username:        tom
NT username:         
Account Flags:        [U          ]
User SID:             S-1-5-21-3977168788-1325546648-3669002591-1001
Primary Group SID:    S-1-5-21-3977168788-1325546648-3669002591-513
Full Name:            
Home Directory:       \localhost        om
HomeDir Drive:        
Logon Script:         
Profile Path:         \localhost        omprofile
Domain:               LOCALHOST
Account desc:         
Workstations:         
Munged dial:         
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    三, 03 9月 2014 15:36:41 CST
Password can change:  三, 03 9月 2014 15:36:41 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[iyunv@localhost ~]#

2、修改主配置文件

[iyunv@localhost ~]# vim /etc/samba/smb.conf
...
    security = user             //启用用户认证
...
  [tools]
       comment = tools public
       path = /usr/src            //指定共享路径
       public= no                 //不对所有人开放
       valid users = jack,tom     //指定合法用户
       write list =tom            //用户tom可读可写
       browseable=yes
       read only = yes
       directory mask = 0755      //上传的目录权限
       create mask = 0644         //上传的文件权限
...

[iyunv@localhost ~]# setfacl -m u:tom:rwx /usr/src/

//ACL控制,单独给tom读写执行权限 (本地与共享权限交集才是最终访问权限)

[iyunv@localhost ~]# getfacl /usr/src/       //查看目录权限
getfacl: Removing leading '/' from absolute path names
# file: usr/src
# owner: root
# group: root
user::rwx
user:tom:rwx
group::r-x
mask::rwx
other::r-x

3、启动服务

[iyunv@localhost ~]# service smb restart
关闭 SMB 服务:                                            [确定]
关闭 NMB 服务:                                            [确定]
启动 SMB 服务:                                            [确定]
启动 NMB 服务:                                            [确定]

4、客户端测试

[iyunv@localhost ~]# smbclient -U jack //192.168.8.10/tools   //加用户访问
Password:                                             //之前定义共享密码
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.33-3.39.el5_8]
smb: > ls
  .                                   D        0  Wed Aug 20 11:49:58 2014
  ..                                  D        0  Wed Aug 20 11:38:11 2014
  debug                               D        0  Thu Oct  1 22:58:39 2009
  kernels                             D        0  Wed Aug 20 11:41:30 2014
  redhat                              D        0  Wed Aug 20 11:49:58 2014

                38751 blocks of size 524288. 29665 blocks available
smb: >

[iyunv@localhost ~]# umount /data/smb         //卸载掉之前挂载
[iyunv@localhost ~]# mount -o username=jack //192.168.8.10/tools /data/smb
Password:
[iyunv@localhost ~]# mount | grep smb           
//192.168.8.10/tools on /data/smb type cifs (rw,mand)
[iyunv@localhost ~]#


实验三: samba账户别名与访问地址控制
         把普通用户jack设置为kaka
         设置只允许192.168.8.5地址访问

1、修改samba用户别名文件

[iyunv@localhost ~]# vim /etc/samba/smbusers

# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
jack = kaka                    //定义jack的用户别名kaka

2、修改主配置文件
...
  username map = /etc/samba/smbusers  //开启用户账号映射,虚拟用户名
...
[tools]
       comment = tools public
       path = /usr/src
       public= no
       valid users = jack,tom
       write list =tom
       browseable=yes
       read only = yes
       directory mask = 0755
       create mask = 0644
       hosts allow = 192.168.10.5      //添加此条语句,只允许10.5客户机访问

重启服务:
[iyunv@localhost ~]# service smb restart
关闭 SMB 服务:                                            [确定]
关闭 NMB 服务:                                            [确定]
启动 SMB 服务:                                            [确定]
启动 NMB 服务:                                            [确定]

3、客户端测试

验证用户别名:
   [iyunv@localhost ~]#
[iyunv@localhost ~]# smbclient -U kaka //192.168.8.10/tools
//使用jack别名kaka
Password:       //使用jack密码
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.33-3.39.el5_8]
smb: > ls
  .                                   D        0  Wed Aug 20 11:49:58 2014
  ..                                  D        0  Wed Aug 20 11:38:11 2014
  debug                               D        0  Thu Oct  1 22:58:39 2009
  kernels                             D        0  Wed Aug 20 11:41:30 2014
  redhat                              D        0  Wed Aug 20 11:49:58 2014

                38751 blocks of size 524288. 29665 blocks available
smb: >

验证IP地址限制:
        [iyunv@localhost ~]# ifconfig eth0 192.168.8.6/24   
//地址修改为192.168.8.6

[iyunv@localhost ~]# ifconfig eth0 | grep "inet addr:"
          inet addr:192.168.8.6  Bcast:192.168.8.255  Mask:255.255.255.0
[iyunv@localhost ~]# smbclient -U jack //192.168.8.10/tools
Password:
Domain=[LOCALHOST] OS=[Unix] Server=[Samba 3.0.33-3.39.el5_8]
tree connect failed: NT_STATUS_ACCESS_DENIED
   // 无法访问


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-24335-1-1.html 上篇帖子: 使用setfacl实现子目录继承父目录权 限 下篇帖子: RedHat Enterprise Linux6.4 使用CentOS yum
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表