Samba服务器搭建

刚好学习了搭建 Samba

最近刚好学习了搭建 Samba 服务器,想起之前想搭建网络共享服务器时考虑过 Samba 服务器却没有成功,最后还是采用了别的方案
既然正好解决了之前碰到的问题,那就记录下搭建的过程吧

搭建 Samba 服务器

注意:为了使客户端可以连接上 Samba 服务器,记得把防火墙关了!

软件安装

服务端只需要安装 Samba 就可以了,Arch Linux 和 RHEL 都一样

1
pacman -S Samba

RHEL 安装命令

1
yum install samba

配置共享目录

创建需要共享的目录,注意权限的设置
由于 Samba 的目录权限是取 Samba 的配置和实际目录的权限的交集,为了方便,我就设置为777的最高权限
实际情况按实际情况考虑

1
mkdir -m 777 /test

创建 Samba 用户

1
2
3
groupadd test #创建用户组
useradd -g test test_user #创建用户
passwd test_user #设置密码

添加 Samba 账户,需要该用户实际存在,否则无法添加

1
smbpasswd -a test_user

设置 ACL

1
setfacl -m g:test:rwx /test
  • 设置 test_user 用户拥有该目录的所有权限,实际情况实际考虑

查看是否设置成功

1
getfacl /test

编辑 /etc/samba/smb.conf 文件,Arch Linux 和 RHEL 的目录都一样,没有就新建一个
配置文件的详情可以查询 Arch Linux Wiki

1
2
3
4
5
6
[test]
comment = test
path = /test
public = no
writable = yes
browseable = yes
  • [test] 共享名,可以随便命名
  • comment 备注信息
  • public 是否允许匿名访问
  • writable 是否可写
  • browseable 是否可浏览该目录

这是最简单的配置文件,如果需要更多的配置,可以去网上找别人的配置或查询 wiki

测试配置是否格式正确

1
testparm /etc/samba/smb.conf

重启服务

1
2
systemctl restart smb.service 
systemctl restart nmb.service

关闭防火墙

1
2
3
systemctl stop firewalld
setenforce 0
iptables -F

客户端连接

Arch Linux 的客户端 和 RHEL 用的软件一样,但名字不一样

安装软件

1
pacman -S smbclient cifs-utils
1
yum install samba-client cifs-utils

测试连接

验证是否可以连接 Samba 服务器

1
smbclient -L <IP/主机名> 

此方法为匿名登录,不需要输入密码,如果连接成功会输出 Samba 服务器共享的目录

查看某用户的共享目录

1
smbclient -L <IP/主机名> -U username[%password]

挂载共享目录

1
mount -t cifs //IP或主机名/共享目录名称 挂载点 -o user=<username>,password=<password>,uid=<username>,gid=<group>,workgroup=<workgroup>,ip=<serverip>,iocharset=utf8
  • user 用户名
  • password 密码
  • uid 挂载的uid
  • gid 挂载的gid
    使用 uid 和 gid 挂载选项时,注意文件权限
  • workgroup 用户组
  • ip 设置目标 IP 地址,如果请求的 UNC 名称的服务器名称部分可以解析,则此选项会自动设置,因此用户很少需要指定
  • iocharset 用于将本地路径名与 Unicode 相互转换的字符集

自动挂载 Saamba 目录

编辑 /etc/fstab 文件,注意这个文件很重要,如果不小心打错了,容易开不了机

1
//IP或主机名/共享目录名称 挂载点 cifs username=<username>,password=<password>,file_mode=0755,dir_mode=0755 0 0

使配置生效

1
mount -a

算是解决了一个常年的困难吧 (´▽`ʃƪ)
以后碰到需要文件共享的时候,也可以用 Samba 服务器了 (●´∀`)ノ♡