Samba 用户映射.note

noteId: WEB21b0603d6db16d1e3cc879e18b7a329a · 原始路径:/ALL/Linux - A模块/服务配置/Samba、Samba AD域/Samba 用户映射.note · 图片:13 · 附件待处理:0

 
·作用
# username map作用:
把客户端登陆的用户名,映射成Samba内部的另一个用户名
例如Windows客户端用administrator登陆访问时,能够映射为 admin
多用于公共共享目录、简化权限控制、处理匿名访问
相当于别名,例如,将 test用户映射为smbuser用户,当客户端使用 test用户登陆时,实际上就是在登陆smbuser用户,必须输入正确smbuser用户的密码才能登陆成功,test用户不需要在samba本地真实存在,哪怕开启了匿名登陆也是这样
 
# force user作用:
不管是谁通过认证(包括匿名用户),最后访问文件、目录时都强制使用定义的这个用户,并且只能定义一个,不像username map可以定义映射成多个用户
 
# 区别:
username map可以定义多个,相当于改写用户名,将这个用户重定向为另一个用户进行认证(输入密码)
 
force user只能定义一个,在用户认证成功后,强制使用定义的这个用户进行读写文件(类似于强制修改属主、属组)
 
 
1、配置username map:
 
1)映射指定用户:
adduser smbuser
adduser user1
 
smbpasswd -a smbuser
smbpasswd -a user1
chmod 777 /share
 
# 配置用户映射:
vim /etc/samba/smb.conf
## 定义在 [global] 下:
 
# 定义映射文件:
vim /etc/samba/map
## 可以使用 @ 匹配一整个组的用户,例如:@group1
systemctl restart smbd
 
·测试:
登陆 test 用户(需要输入映射用户的密码,这里需要输入smbuser用户的密码):
 
上传文件:
 
去到 Samba上查看文件属主:
可以看到,我们用户 test用户登陆、上传的文件最终属主是定义的映射用户smbuser
 
 
2)映射匿名用户:
# 如果要映射匿名用户:
## 所有匿名用户默认会映射为 nobody/nogroup,如果要修改,就不需要使用用户映射,直接在配置文件中修改(在[global]下定义):
guest account = guest1    //guest1用户需要本地存在
vim /etc/samba/smb.conf
systemctl restart smbd
 
测试:
客户端使用匿名用户登陆、上传文件:
 
然后去到samba服务器上查看:
可以看到文件属主为 guest1
 
3)将所有登陆用户映射为指定用户(包括匿名用户):
配置了这个之后将变相导致匿名用户无法登陆,因为所有匿名用户都被映射过去需要输入密码了
# 如果要将所有登陆用户名都映射为某个用户:
smbuser = *
vim /etc/samba/map
systemctl restart smbd
 
 
2、配置 force user:
vim /etc/samba/smb.conf
 
·测试:
这里用匿名用户登陆进行登陆、文件上传测试: