文章目录
- (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账户的用户名和密码即可完成连接。
(9)Samba详细示例
通过一个示例来演示如何使用Samba配置文件中的参数。假设我们有一个名为Financial_Dept
的共享文件夹,以下是对应的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、创建用户后未同时加入写入权限组,后续加组示范:
- 创建用户:
useradd josh
- 添加Samba密码:
smbpasswd -a josh
- 将用户加入写入权限组:
gpasswd -a josh cp
在共享中,Samba用户"josh"创建的文件的权限将是组"josh"。
如果重新加入组,没有写入权限,可以通过以下方式进行纠正:
使用vipw
命令直接修改用户的默认组:
- 执行命令:
vipw
- 将用户行中的第二个组ID修改为"cp"组的ID(例如将
josh:x:1003:1003
中的第二个"1003"修改为"1009",表示将用户"josh"的默认组修改为"cp"组)。 - 保存并退出编辑器(
:wq
)。
修改后,重新启动Samba服务以使更改生效。
2、创建用户时同时加入写入权限组:
- 创建用户并指定写入权限组:
useradd -g cp josh
- 添加Samba密码:
smbpasswd -a josh
3、如果在设置好Samba共享后,连接正常但没有写入权限
- 可能是由于SELinux导致的。您可以检查SELinux的状态是否为"permissive"(宽松)模式。