SAMBA文件共享

一、samba知识点

1、samba做什么的?

samba是在 Linux系统上实现 SMB / CIFS 协议的免费软件,由服务器及客户端程序构成,主要用于局域网内实现文件、打印机等资源的共享服务。

2、samba特性

使用smb/cifs协议,可跨平台、可实现文件系统的挂载。

3、工作模式

  • share 匿名验证
  • user本地用户验证(默认方式)

通过tdbsam方式建立用户数据库文件passdb.tdb来进行验证登入。首先先要用本地在通过pdbedit命令将本地用户映射成samba用户。

  • 别名用户访问(虚拟用户)

4、samba软件包,服务端口,配置文件

主服务包:samba

进程名:smb

服务端口: SMB(TCP 139)、CIFS(TCP 445)

445端口:负责文件传输 控制发布共享的目录与权限

配置文件(/etc/samba)

主配置文件:smb.conf

别名配置文件:smbusers

5、samba的用户创建

1、使用pdbedit 命令来创建samba共享用户

  • 新建 Samba 账户。

pdbedit –a username

  • 删除 Samba 账户。

pdbedit –x username

  • 暂停该 Samba 用户的账号。

pdbedit –c “[D]” –u username

  • 恢复该 Samba 用户的账号。

pdbedit –c “[]” –u username:

  • 列出 Samba 用户列表,读取 passdb.tdb 数据库文件。
  • 列出 Samba 用户列表的详细信息。

pdbedit –L:pdbedit –Lv:列出 Samba 用户列表的详细信息。

2、使用smbclient 命令来创建用户

  • 新建 Samba 账户。

smbpasswd–a username

 

  • 删除 Samba 账户。

smbpasswd–x username

 

  • 暂停该 Samba 用户的账号。

smbpasswd -d -U username

  • 恢复该 Samba 用户的账号。

smbpasswd -e -U username:

  • 列出 Samba 用户列表,读取 passdb.tdb 数据库文件。
  • 列出 Samba 用户列表的详细信息。

6、samba客户端登入

1、Linux :

        1、查看服务器的共享资源

格式:  smbclient -L //服务器IP

[root@pxe ~]# smbclient -L //192.168.75.253

Enter SAMBA\root's password:

Anonymous login successful

Sharename       Type      Comment

---------       ----      -------

homes           Disk      Project Development Department

public          Disk      PUBLIC Project Development

IPC$            IPC       IPC Service (Samba Server Version 4.7.1)

Reconnecting with SMB1 for workgroup listing.

Anonymous login successful

Server               Comment

---------            -------

Workgroup            Master

---------            -------

[root@pxe ~]#

        2、登入服务器的共享资源

格式:  smbclient  -U  指定用户  //服务器IP

 

[root@pxe ~]# smbclient -U admin //192.168.75.253/public

Enter SAMBA\admin's password:

Try "help" to get a list of possible commands.

smb: \> dir

  .                                   D        0  Wed Nov 26 12:26:44 2025

  ..                                 DR        0  Wed Nov 19 22:33:47 2025

  readme.txt                          N       17  Wed Nov 26 12:26:44 2025

20936704 blocks of size 1024. 20903372 blocks available

smb: \>

        1、挂载使用

临时:

[root@pxe ~]# mount -t cifs  -o username=dev,password=123456 //192.168.75.253/public /smbshare

永久: 写入/etc/fstab

//服务器 ip/服务器共享 /本地挂载目录 cifs defaults,_netdev,username=xxx,password=xxx 0 0

[root@pxe ~]# echo "//192.168.75.253/public /smbshare cifs defaults,_netdev,username=dev,password=123456 0 0 " >> /etc/fstab

        2、SMB客户端的 multiuser 挂载技术,管理员只需要作一次挂载,客户端在访问挂载点时,若需要不同权限,可以临时切换为新的共享用户(无需重新挂载)

[root@pxe smbshare]# echo "my name is dev " >> readme.txt

-bash: readme.txt: Permission denied

[root@pxe ~]# mount -t cifs  -o multiuser,sec=ntlmssp,username=admin //192.168.75.253/public /smbshare

[root@pxe ~]# cd /smbshare/

[root@pxe smbshare]# echo "my name is admin " >> readme.txt

[root@pxe smbshare]# cat readme.txt

this is pex test

my name is admin

2、Window

        1、地址栏输入:\\服务器IP\共享名
        2、windows查看网络连接

二、功能模块

1、网络访问控制

拒绝某个网段                                                 hosts deny = 192.168.75.

允许某个IP                                                     hosts allow = 192.168.75.3

拒绝所有                                                        hosts deny = all

允许某个网段但拒绝某个单个IP                    hosts allow = 172.38.40. EXCEPT 172.38.40.254

deny和allow同时存在,allow优先

2、共享目录读写控制

1、资源权限

当执行smbclient命令时是否可以查看看到共享资源

browseable = yes/no

2、是否可匿名登入

public = yes/no 或者 guest ok = yes/no

3、是否可写

writable = yes/no

4、只读权限

read only = yes/no

5、部分可写权限

read only = yes/no

write list = 用户名,@组名

6、访问对象控制

允许那些用户可以登入samba服务器

valid users = 用户名,@组名

三、实验

场景一、特殊()目录共享

要求:成立一个研发部门Project Development Department,运维组dev和开发组ops再加上一个项目经理op,搭建一个samba服务给dev组提供operation共享目录,给ops组提供develop共享目录,两个组的资源组员之间不能相互访问,op对两个组的目录都有读写权限。各自的资源信息不可查看,不能匿名登入。dev组在192.168.88网段,ops组在192.168.100网段,op在192.168.75网段,资源不允许192.168.75网段访问

dev组成员有zhangsan,ops组成员有lisi,op成员admin

1、创建用户信息和组信息

用户创建

[root@public ~]# useradd -s /bin/bash admin

[root@public ~]# echo "123456" | passwd --stdin admin

Changing password for user admin.

passwd: all authentication tokens updated successfully.

[root@public ~]# useradd -s /sbin/nologin -d /home/operation dev

[root@public ~]# useradd -s /sbin/nologin -d /home/develop ops

添加admin在dev和ops组里面

[root@public ~]# groupmems -g dev -a admin

[root@public ~]# groupmems -g ops -a admin

[root@public ~]# cat /etc/group | grep -E "dev|ops"

dev:x:1001:admin

ops:x:1002:admin

2、 搭建samba服务器,安装samba服务包

[root@public ~]# yum -y install samba samba-common

启动samba服务,设置开机自启

[root@public ~]# systemctl start smb

[root@public ~]# systemctl enable smb

Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.

[root@public ~]#

3、修改/etc/samba/smb.conf配置

添加smb用户

[root@public ~]# pdbedit -a admin

[root@public ~]# pdbedit -a dev

[root@public ~]# pdbedit -a ops

[root@public ~]# pdbedit -L

dev:1001:

ops:1002:

admin:1000:

修改配置

[global]

        workgroup = MYGROUP

        server string = Samba Server Version %v

        ;监控的网卡

        interfaces = lo 192.168.75.253

        ;允许192.168.{88,100}网段访问

        hosts allow = 192.168.88. 192.168.100.

        ;拒绝192.168.75网段的访问,这个192.168.75.252地址除外

        hosts deny = 192.168.75. EXCEPT 192.168.75.252

        log file = /var/log/samba/log.%m

        max log size = 50

        ;认证模式

        security = user

        passdb backend = tdbsam

[homes]

        comment = Project Development Department

        browseable = yes

        guest ok = no

        writable = yes

        valid users = %S,admin

修改完成后重启服务

[root@public ~]# systemctl restart smb

4、测试登入

[root@pxe ~]# smbclient -L //192.168.75.253

Enter SAMBA\root's password:

Anonymous login successful

Sharename       Type      Comment

---------       ----      -------

homes           Disk      Project Development Department

IPC$            IPC       IPC Service (Samba Server Version 4.7.1)

Reconnecting with SMB1 for workgroup listing.

Anonymous login successful

Server               Comment

---------            -------

Workgroup            Master

---------            -------

[root@pxe ~]#

使用admin登入dev组

[root@pxe ~]# smbclient -U admin //192.168.75.253/dev

Enter SAMBA\admin's password:

Try "help" to get a list of possible commands.

smb: \> dir

NT_STATUS_ACCESS_DENIED listing \*

smb: \>

smb对admin有访问权限,但是dev的目录对admin没有访问权限,要加上特殊权限,上面已经设置admin在dev和ops组中,给组设置对dev或者ops目录有读写访问权限

[root@public home]# getfacl develop/

# file: develop/

# owner: ops

# group: ops

user::rwx

group::---

other::---

[root@public home]# setfacl -m g:ops:rwx develop/

[root@public home]# setfacl -m g:dev:rwx operation/

[root@public home]# getfacl operation/

# file: operation/

# owner: dev

# group: dev

user::rwx

group::---

group:dev:rwx

mask::rwx

other::---

[root@public home]#

[root@pxe ~]# smbclient -U admin //192.168.75.253/dev

Enter SAMBA\admin's password:

Try "help" to get a list of possible commands.

smb: \> dir

  .                                   D        0  Wed Nov 26 10:13:22 2025

  ..                                  D        0  Wed Nov 26 10:13:42 2025

  .bash_logout                        H       18  Wed Apr 11 08:53:01 2018

  .bash_profile                       H      193  Wed Apr 11 08:53:01 2018

  .bashrc                             H      231  Wed Apr 11 08:53:01 2018

18597888 blocks of size 1024. 17323764 blocks available

smb: \>

不能相互访问

[root@pxe ~]# smbclient -U ops //192.168.75.253/dev

Enter SAMBA\ops's password:

tree connect failed: NT_STATUS_ACCESS_DENIED

场景二、公共目录共享

根据场景一、添加一个公共共享目录/common, 设置admin有读写权限,dev\ops组成员对/common只读权限

资源可见,不可匿名访问

1、在/etc/samba/smb.conf ,上添加后,保存重启smb服务

;共享名

[public]

        ;说明

        comment = PUBLIC Project Development

        ;共享的目录

        path = /common

        browseable = yes

        public = no

        ;对部分用户只读权限

        read only = yes

        write list = @admin

        valid users = @admin,@dev,@ops

对/common设置特殊访问权限

[root@public samba]# ll -d /common/

drwxr-xr-x. 2 root root 6 Nov 19 22:29 /common/

[root@public samba]# setfacl -m g:admin:rwx /common/

2、测试

[root@pxe ~]# smbclient -L //192.168.75.253

Enter SAMBA\root's password:

Anonymous login successful

Sharename       Type      Comment

---------       ----      -------

homes           Disk      Project Development Department

public          Disk      PUBLIC Project Development

IPC$            IPC       IPC Service (Samba Server Version 4.7.1)

Reconnecting with SMB1 for workgroup listing.

Anonymous login successful

Server               Comment

---------            -------

Workgroup            Master

---------            -------

[root@pxe ~]#

使用admin用户登入测试可以写入成功

使用dev\用户或者ops用户拒绝写入

3、在linux服务器上挂载

[root@pxe ~]# echo "//192.168.75.253/public /smbshare cifs defaults,_netdev,username=dev,password=123456 0 0 " >> /etc/fstab

[root@pxe ~]# mount -a

[root@pxe ~]# df -h | grep smbshare

//192.168.75.253/public   20G   33M   20G   1% /smbshare

[root@pxe ~]#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值