Samba是什么,做生物的我们为什么需要它?

Samba简单介绍

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

作用

在高校以及科研单位背景下,通常一个团队内,会有很多的公共资源,我们可以通过建立这样一个共享资源池,使得团队内的成员都可以访问到这个资源池,并且传输速率也很快(主要取决于设备带宽),这样一个资源池是非常有利于团队高效协作的。本次介绍的是基于局域网的,如果需要外网访问可以搭建虚拟局域网或者固定IP、内网穿透等,另外随着IPV6的全面普及,外网访问将得到有效解决。

需要准备的东西

  • Linux服务端
  • 可控局域网
  • 客户端

Samba服务端配置

Samba安装

通常Linux会默认安装Samba服务,可以先查看一下 dpkg -l | grep samba

# 安装
apt install -y samba

# 启动服务
systemctl start smbd

# 查看状态
systemctl status smbd

# 重启服务
service smbd restart

# 设置开机启动
systemctl enable smbd

Samba 配置

“ smb.conf ”这个文件的配置。

#配置案例

[global] 
	workgroup = MYGROUP
	server string = Samba Server Version %v 
	log file = /var/log/samba/log.%m 
	max log size = 10000 
	security = user 
	passdb backend = tdbsam 
	load printers = yes 
	cups options = raw 
[share_sc] 
	comment = Do not arbitrarily modify the database file 
	path = /home/share_sc
	browseable = yes
	public = no 
	writable = yes
	valid users = logic

[data] 
	comment = Do not arbitrarily modify the database file 
	path = /home/share_sc/data
	browseable = yes
	public = no 
	writable = yes
	valid users = @sang,logic

[data1] 
	comment = Do not arbitrarily modify the database file 
	path = /home/share_sc/data1
	browseable = yes
	public = no 
	writable = yes
	valid users = @sang,logic

[] 
	comment = Do not arbitrarily modify the database file 
	path = /home/logic/Documents/
	browseable = yes
	public = no 
	writable = yes
	valid users = logic

设置Samba用户

# 利用 pdbedit 命令创建用户
pdbedit -a -u username
###
-L:列出samba服务中的所有用户;
-a, --create:添加用户为samba用户;
-u, --user=USER:要管理的用户;
-x, --delete:删除用户;
-t, --password-from-stdin:从标准输出接收字符串作为用户密码;
	使用空提示符,而后将密码输入两次;
###

# 批量创建 #

Linux系统配置

创建目录以及用户和组

# 建立共享目录
mkdir 文件名

# 设置用户组
groupadd -g GID groupname

# 设置系统用户
useradd -g groupname -u 1001 -s /sbin/nologin user1
# 批量创建 #

# 更改目录属组和用户
chown 参数 所有者:所属组 文件或目录名称
chgrp 组名 文件或目录名称

修改共享目录权限

基本权限
# 查看目录基本权限
ls -lh

# 设置文件夹的基本权限
chmod g+rx -R 目录名称
chmod 755 -R 目录名称
特殊权限
# SUID 特殊权限位
# SUID是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者暂时拥有所有者的权限。
###
特点:
1)SUID权限仅仅对二进制程序有效;
2)执行者对于该程序需要具有x的可执行权限;
3)本权限仅在执行该程序的过程中有效;
4)执行者将具有该程序拥有者的权限;
5)SUID仅可用在二进制程序上,不能够用在shell脚本上面;
###
chmod u+s -R 目录名称

# SGID 特殊权限位
# 让执行者临时拥有属组的权限(对拥有执行权限的二进制程序进行设置);
# 在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置)。
chmod g+s -R 目录名称

# SBIT 特殊权限位
# SBIT 特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。
chmod o+t -R 目录名称
隐藏权限
# 查看隐藏权限
lsattr 目录名称

# 设置隐藏权限
chattr [参数] 文件
###
i 无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S 文件内容在变更后立即同步到硬盘(sync)
s 彻底从硬盘中删除,不可恢复(用 0 填充原文件所在硬盘区域)
A 不再修改这个文件或目录的最后访问时间(atime)
b 不再修改文件或目录的存取时间
D 检查压缩文件中的错误
d 使用 dump 命令备份时忽略本文件/目录
c 默认将文件或目录进行压缩
u 当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t 让文件系统支持尾部合并(tail-merging)
X 可以直接访问压缩文件中的内容
###
ACL权限
# setfacl 命令用于管理文件的 ACL 规则
#文件的 ACL提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用 setfacl 命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。其中,针对目录文件需要使用-R 递归参数;针对普通文件则使用-m 参数;如果想要删除某个文件的 ACL,则可以使用-b 参数。
setfacl [参数] 文件名称
-m 设定ACL权限
-x 删除指定的ACL权限
-b 删除整个目录所有的ACL权限
-d 设定默认的ACL权限
-k 删除默认的ACL权限
-R 递归设定ACL权限

# getfacl 命令用于显示文件上设置的 ACL 信息
getfacl 文件名称
# 首先先设置最大权限mask权限
setfacl -R -m m:rwx 目录

# 设置默认ACL权限
setfacl -d -m u:用户名:权限 -R 目录
setfacl -d -m g:组名:权限 -R 目录

# 设置递归ACL权限
setfacl -m u:用户名:权限 -R 目录

Windows客户端配置

Linux客户端配置

常见问题