samba
安装
For ubuntu
# smbclient 用来测试 samba 服务
sudo apt install samba smbclient
For arch
sudo pacman -Sy samba smbclient
配置文件
/etc/samba/smb.conf
末尾追加如下内容:
注意这里的 [share]
windows 映射网络驱动器的时候路径为: \\<ubuntu ip>\share
[share]
path = /home/username/Public
public = yes
writable = yes
valid users = username //映射时的登陆名
create mask = 0644
force create mode = 0644
directory mask = 0755
force directory mode = 0755
available = yes
设置密码
sudo touch /etc/samba/smbpasswd
sudo smbpasswd -a username
# then insert password
重启 samba 服务
For ubuntu
sudo service smbd restart
For arch
sudo systemctl restart smb
测试 samba 服务
smbclient -L //localhost/Public
# 如果提示输入密码说明共享服务成功
windows 挂载 samba 共享
两种挂载方式
- win+r, 输入 ubuntu ip
- windows 文件管理器, 映射网络驱动器, 输入路径
\\<ubuntu ip>\share
Linux CLI 挂载 samba 共享
sudo mount -t cifs -o username=${USER},password=${PASSWORD},uid=<user>,gid=<group> //server-address/folder /mount/path/on/ubuntu
uid,gid
指定为对应smb client用户的id,如果不指定挂载后所有文件显示为root:root
mode.
多用户多目录 samba 配置
创建共享目录并配置权限
# samba 用户,仅用于配置文件目录用户及用户组,不用于 samba 客户端访问登录账号
sudo useradd samba
sudo mkdir /samba
sudo mkdir -p /samba/public
sudo mkdir -p /samba/software
sudo mkdir -p /samba/hardware
sudo chown samba:samba /samba -R
# sudo chmod 755 /samba -R
创建账号密码
- 用户添加命令
sudo useradd xxx
默认不会创建 homesudo adduser xxx
默认会创建 home
- sbin/nologin 不需要这些账号登录服务器权限
# 管理者用户
sudo useradd -s /sbin/nologin henan
# 部门级公共用户
sudo useradd -d /samba/software -s /sbin/nologin software
sudo useradd -d /samba/hardware -s /sbin/nologin hardware
sudo chown samba:samba /samba -R
sudo chown software:samba /samba/software
sudo chown hardware:samba /samba/hardware
chmod 777 /samba/public
smbpasswd 命令设置密码,用于 samba 服务中对用户权限进行管理
sudo smbpasswd -a henan
sudo smbpasswd -a software
sudo smbpasswd -a hardware
参数说明:
-a 添加用户
-x 删除用户
-d 冻结用户
-n 密码置空
配置samba
/etc/samba/smb.conf
[public]
path=/samba/public
public=yes
writeable=yes
browseable=yes
create mask=0775
directory mask=0775
[software]
path=/samba/software
writeable=yes
browseable=yes
create mask=0775
directory mask=0775
valid users=software,henan
[hardware]
path=/samba/hardware
writeable=yes
browseable=yes
create mask=0775
directory mask=0775
valid users=hardware,henan
参数项说明:
参数 | 说明 |
---|---|
comment | 注释说明 |
path | 分享资源的完整路径名称,除了路径要正确外,目录的权限也要设正确 |
browseable | 是yes/否no在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取 |
printable | 是yes/否no允许打印 |
hide dot ftles | 是yes/否no隐藏隐藏文件 |
public | 是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用) |
guest ok | 是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用) |
read only | 是yes/否no以只读方式共享当与writable发生冲突时也writable为准 |
writable | 是yes/否no不以只读方式共享当与read only发生冲突时,无视read only |
vaild users | 设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名) |
invalid users | 设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名) |
read list | 设定此名单内的成员为只读(用户名/@组名) |
write list | 若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名) |
create mask | 建立文件时所给的权限 |
directory mask | 建立目录时所给的权限 |
force group | 指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名) |
force user | 指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名) |
allow hosts | 设定只有此网段/IP的用户才能访问共享资源 |
allwo hosts = 网段 | except IP |
deny hosts | 设定只有此网段/IP的用户不能访问共享资源 |
allow hosts= | 本网段指定IP指定IP |
deny hosts= | 指定IP本网段指定IP |
解决访问共享时提示多重连接的问题
windows 命令行执行:
net use * /del /y