文章目录

  • (1)Samba概述
  • (2)安装Samba
  • (3)启动和管理Samba服务
  • (4)查看Samba进程
  • (5)介绍Samba配置文件
  • (6)修改Samba配置文件
  • (7)添加和删除Samba用户
  • (8)连接Samba共享
  • (9)Samba详细示例
  • (10)注意事项


(1)Samba概述

Samba是一个用于在Linux和Windows之间传输或共享文件的文件服务器。它采用客户端-服务器(C/S)模式工作,并使用UDP和TCP端口137、138、139和445。Samba可以用于搭建局域网文件服务器,方便共享资源,也可以用于共享打印机。

(2)安装Samba

在安装Samba服务之前,需要确认防火墙是否关闭并且iptables是否开启。可以使用以下命令检查防火墙状态:

[root@localhost ~]# systemctl status firewalld.service

如果防火墙处于运行状态,可以使用以下命令关闭防火墙:

[root@localhost ~]# systemctl stop firewalld.service

检查系统是否存在samba

  • 使用以下命令检查是否已安装Samba软件包:rpm -aq | grep samba
  • 使用以下命令查看可用的Samba版本:yum list all | grep samba
  • 使用以下命令通过yum安装Samba:yum -y install samba

接下来,使用以下命令安装Samba服务:

[root@localhost ~]# yum -y install samba

(3)启动和管理Samba服务

可以使用以下命令来启动、重启、停止和设置开机启动Samba服务:

systemctl start smb    # 开启Samba服务
systemctl restart smb  # 重启Samba服务
systemctl stop smb     # 停止Samba服务
systemctl enable smb   # 设置Samba服务开机启动

(4)查看Samba进程

可以使用以下命令查看Samba服务所监听的端口以及相关进程:

[root@localhost ~]# netstat -tnap | grep smb

如果需要查看所有TCP进程,可以使用以下命令:

[root@localhost ~]# netstat -tnlp

(5)介绍Samba配置文件

配置项

说明

workgroup

设置Samba服务所属的工作组或域

server string

设置Samba服务器的注释或介绍

log file

定义Samba日志文件的最大容量

security

设置用户访问Samba服务器的验证方式

passdb backend

设置用户后台的方式

printing

设置Samba共享打印机的类型

printcap name

设置共享打印机的配置文件

load printers

设置是否在启动Samba时共享打印机

cups options

设置CUPS打印选项

共享名称

自定义共享的名称

comment

对该共享的描述

path

共享目录的路径

browseable

指定该共享是否可以浏览

writable

指定该共享路径是否可写

write list

允许写入该共享的用户或组

available

指定该共享资源是否可用

public

指定该共享是否允许guest账户访问

guest ok

与public具有相同的作用

admin users

指定该共享的管理员

valid users

指定允许访问该共享资源的用户

create mask

设置用户创建文件的权限掩码

directory mask

设置用户创建文件夹的权限掩码

veto files

禁止上传的文件类型

vfs object

载入用于回收站功能的模块

recycle:repository

指定该共享文件夹的回收站目录

recycle:keeptree

指定是否按删除时的目录结构存放

recycle:versions

指定是否区分同名文件的版本

recycle:maxsize

指定回收站目录的大小限制

recycle:exclude

指定不放入回收站的文件类型

recycle:noversions

指定覆盖同名文件的文件类型

注意事项

  • 回收站文件夹的用户和用户组设置应与共享文件夹的设置一致,以确保被删除的文件可以保存到回收站文件夹
  • 如果回收站的maxsize设置为0,需要手动删除回收站中的文件,可以使用计划任务定期清理过期文件
  • 每个共享文件夹应设置一个单独的回收站文件夹,以避免同名文件覆盖和方便管理
  • 创建用户时,如果需要在共享中具有写入权限,应同时将用户加入相应的写入权限组
  • 如果在Samba共享中无法获得写入权限,可能是SELinux导致的问题,可以检查SELinux的状态是否为permissive(宽松模式)

Samba配置文件中与打印机相关的参数

配置项

说明

printing

设置Samba共享打印机的类型,支持的打印系统有:bsd、sysv、plp、lprng、aix、hpux、qnx

printcap name

设置共享打印机的配置文件

load printers

设置是否在启动Samba时就共享打印机

cups options

设置CUPS打印选项,默认为raw,也可以设置为rawlpd或rawlp

说明:

  • printing = cups: 设置Samba共享打印机的类型为CUPS。CUPS是一种常见的打印系统,用于管理打印任务和打印机。
  • printcap name = cups: 设置共享打印机的配置文件为CUPS。CUPS使用/etc/printcap文件来定义打印机的属性和配置。
  • load printers = yes: 设置是否在启动Samba时共享打印机。当设置为yes时,Samba将加载系统中的打印机并允许访问。
  • cups options = raw: 设置CUPS选项为raw。这个选项指定打印数据传输的方式为原始数据,不进行任何处理或转换。

(6)修改Samba配置文件

Samba的主配置文件位于/etc/samba/smb.conf。可以使用文本编辑器(如vi)打开该文件进行修改:

[root@localhost ~]# vi /etc/samba/smb.conf

在配置文件中,可以添加或修改共享配置。例如,要创建一个名为test的共享,可以在配置文件中添加以下内容:

[test]
    comment = 共享test
    path = /data/test
    create mask = 0775
    directory mask = 0775
    write list = @test josh

在添加共享之前,需要先创建共享文件夹,并设置相应的权限和归属组。可以按照以下步骤进行操作:

[root@localhost ~]# mkdir /data/test
[root@localhost ~]# groupadd test
[root@localhost ~]# chmod 755 /data/test
[root@localhost ~]# chown root:test /data/test

请注意,所有的设置和修改都需要重启Samba服务才能生效。

(7)添加和删除Samba用户

可以使用pdbedit命令来添加和删除Samba用户。

1、pdbedit命令选项:

命令

说明

pdbedit –a username

新建Samba账户,username为新用户的用户名。

pdbedit –x username

删除Samba账户,username为需要删除的用户的用户名。

pdbedit –L

列出Samba用户列表,读取passdb.tdb数据库文件。

pdbedit –Lv

列出Samba用户列表的详细信息,包括用户名、密码、组成员等。

pdbedit –c “[D]” –u username

暂停该Samba用户的账号,username为需要暂停的用户的用户名。

pdbedit –c “[]” –u username

恢复该Samba用户的账号,username为需要恢复的用户的用户名。

2、可以使用以下命令列出所有的Samba用户

[root@localhost ~]# pdbedit -L

3、要添加一个Samba用户,还可以按照以下步骤进行操作:

[root@localhost ~]# useradd josh
[root@localhost ~]# smbpasswd -a josh
New SMB password:
Retype new SMB password:
Added user josh.

4、要删除一个Samba用户,可以使用以下命令:

[root@localhost ~]# pdbedit -x josh

(8)连接Samba共享

在Windows系统中,可以通过映射网络驱动器的方式连接Samba共享。在资源管理器中,输入以下地址进行连接:

\\192.168.224.139\test

然后输入创建的Samba账户的用户名和密码即可完成连接。

samba开放端口139 445 samba使用的端口_samba开放端口139 445

(9)Samba详细示例

通过一个示例来演示如何使用Samba配置文件中的参数。假设我们有一个名为Financial的共享文件夹,以下是对应的Samba配置:

[Financial]
    comment = Financial_Sharing
    path = /data/Financial
    write list = @cw root cw_b @cw_r Josh
    create mask = 0775
    directory mask = 0775
    valid users = @cw
    vfs object = recycle
    recycle:repository = .deleted/%U
    recycle:keeptree = Yes
    recycle:versions = Yes
    recycle:maxsize = 0
    recycle:exclude = *.tmp|*.mp3
    recycle:noversions = *.doc

下面是对配置中各个参数的说明:

1、基本配置说明:

  • [Financial]: 共享名称,可以自定义。
  • comment = Financial_Sharing: 对该共享的描述,可以任意字符串。
  • path = /data/Financial: 共享目录的路径。
  • browseable = yes/no: 指定该共享是否可以浏览。
  • writable = yes/no: 指定该共享路径是否可写。
  • write list = @cw root cw_b @cw_r Josh: 允许写入该共享的用户或组。可以是组cw,用户Josh,以及其他用户和组的组合。
  • available = yes/no: 指定该共享资源是否可用。
  • public = yes/no: 指定该共享是否允许guest账户访问。
  • admin users = : 指定该共享的管理员(对该共享具有完全控制权限)。
  • valid users = @cw: 指定允许访问该共享资源的用户。在这个例子中,只允许组cw的用户访问。
  • create mask = 0775: 用户创建文件的权限掩码,按照0775设置。
  • directory mask = 0775: 用户创建文件夹的权限掩码,按照0775设置。
  • veto files = /**.mp3/**.mp4/**.rmvb/**.wma/**.exe/**.bat/**.dll/**.avi/*.rar: 禁止上传的文件类型。
  • vfs object = recycle: 载入用于回收站功能的模块recycle.so
    2、回收站配置说明:
  • recycle:repository = .deleted/%U: 指定该共享文件夹的回收站目录,使用%U按登录的用户名分开存放。
  • recycle:keeptree = Yes: 指定是否按删除时的目录结构存放。
  • recycle:versions = Yes: 指定是否区分同名的文件,设置为Yes表示不覆盖。
  • recycle:maxsize = 0: 指定回收站目录的大小,设置为0表示不限制。
  • recycle:exclude = *.tmp|*.mp3: 指定不放入回收站的文件类型。
  • recycle:noversions = *.doc: 指定覆盖同名文件的文件类型。

在配置好以上参数后,我们可以通过以下命令查看共享文件夹的回收站目录:

[root@gitlab24 ~]# ls -la /data/Financial/

如果一切配置正确,应该能看到一个名为.deleted的文件夹,这就是回收站目录。

需要注意的是,回收站文件夹的用户和用户组设置应与共享文件夹的设置一致,以确保被删除的文件可以保存到回收站文件夹。

此外,如果recycle:maxsize设置为0,需要手动删除回收站中的文件。

定期删除回收站

可以使用计划任务定期清理过期文件,例如在/etc/crontab中添加以下内容:

30 8 * * * root find /samba/deleted/ -mtime +30 -exec rm -rf {} \;

以上是使用示例,展示了如何根据具体需求配置Samba共享文件夹的参数。根据实际情况,您可以根据需要进行相应的修改和调整。

(10)注意事项

1、创建用户后未同时加入写入权限组,后续加组示范:

  1. 创建用户:useradd josh
  2. 添加Samba密码:smbpasswd -a josh
  3. 将用户加入写入权限组:gpasswd -a josh cp 在共享中,Samba用户"josh"创建的文件的权限将是组"josh"。

如果重新加入组,没有写入权限,可以通过以下方式进行纠正:

使用vipw命令直接修改用户的默认组:

samba开放端口139 445 samba使用的端口_服务器_02

  1. 执行命令:vipw
  2. 将用户行中的第二个组ID修改为"cp"组的ID(例如将josh:x:1003:1003中的第二个"1003"修改为"1009",表示将用户"josh"的默认组修改为"cp"组)。
  3. 保存并退出编辑器(:wq)。
    修改后,重新启动Samba服务以使更改生效。

2、创建用户时同时加入写入权限组:

  1. 创建用户并指定写入权限组:useradd -g cp josh
  2. 添加Samba密码:smbpasswd -a josh

3、如果在设置好Samba共享后,连接正常但没有写入权限

  1. 可能是由于SELinux导致的。您可以检查SELinux的状态是否为"permissive"(宽松)模式。