- 作者:
- 分类:知识&开发->OS->Linux基本
- 阅读:2407
- 点赞:3
- 版权:CC BY-SA 4.0
- 创建:2020-06-22
- 更新:2020-06-25
linux 下samba安装和权限管理用户管理
版权声明:本文为 neucrack 的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接(持续更新):https://neucrack.com/p/296
原文链接(持续更新):https://neucrack.com/p/296
常规安装设置
- 如果是挂载的磁盘,可能会自动挂载到
/media/用户名/磁盘label
目录下 - 安装
sudo apt update
sudo apt install samba samba-comon-bin
- 新增用户,这里名叫 public
sudo groupadd samba
sudo adduser --gecos "" public --ingroup samba
- 增加用户到samba,并使能用户
sudo smbpasswd -a public
sudo smbpasswd -e public
设置/etc/samba/smb.conf
sudo vim /etc/samba/smb.conf
设置共享目录
[data]
comment = private data Storage
path = /home/pi/storage/data
valid users = pi, public
browseable = yes
writable = yes
guest ok = no
printable = no
create mask = 0760
directory mask = 0750
这里设置只允许 pi public 两个用户有读写权限,并且新建的文件夹不允许除了自己和组之外的其它用户访问(查看和修改),并且同组的其它用户修改文件夹比如删除会收到警告,给执行权限是因为用户才能访问文件夹;新建的文件不允许除了自己和组内之外的用户查看和修改,同组用户有读写权限
重启samba服务
sudo /etc/init.d/smbd restart
# sudo /etc/init.d/nmbd restart
- 然后尝试使用这两个账户去访问共享目录
新增用户权限问题
可能会出现只有pi用户(系统创建时创建的账户)能访问,新建的 public 账户无法访问的问题,提示无权限
解决:
- 首先一定要确保public用户是系统用户
- 修改挂载点,不使用默认的 /media/ 目录,可以挂载到其它目录,比如挂在到用户目录,我这里挂载到了 /home/pi/storage 目录下
cd /home/pi
mkdir storage
sudo vim /etc/fstab
如果是硬盘,添加一行
/dev/sdc1 /home/pi/storage ext4 dufalts,noatime 0 0
/dev/sdc1
就是磁盘设备,通过sudo lsblk
看到
如果是USB设备:
UUID=3a77d775-2162-4f35-b0a3-92c8c4359ea1 /home/pi/storage ext4 nosuid,nodev,nofail,noatime 0 0
这里的 UUID
就是要挂载的磁盘的UUID
, 可以通过sudo lsblk
看到
如果是USB设备一定要填UUID,以及nofail
参数,否则可能开机挂载不了导致无法开机
最后一个0
代表不进行fsck
,否则填2
生效挂载点
sudo mount -a
修改权限
chmod 755 /home/pi/storage
chown -R pi:samba /home/pi/storage
chcon -t samba_share_t /home/pi/storage
重启samba服务
sudo /etc/init.d/smbd restart
# sudo /etc/init.d/nmbd restart
- 分别用两个用户登录目录,都可以操作
新建的文件和文件夹都将属于 samba 组,谁创建的就属于谁,创建的文件和文件夹的权限如上面设置里面设置的描述
对于权限控制,注意,以上的思想就是:
创建了一个组,叫 samba, pi和public用户都属于这个组,具体哪个文件或文件夹谁可以写通过设置文件或文件夹的属性来控制,比如一个文件夹 data
, 属性是drwxr-x--- pi samba
,即0750
,则 pi
用户具有绝对的读写权利,public
用户则有读取权利,不能写,其它用户没法读取和写入
多网卡速度问题
多网卡时,可能默认走了慢速的那一张网卡,可以手动选择网卡
sudo vim /etc/samba/smb.conf
设置
#### Networking ####
# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
; interfaces = 127.0.0.0/8 eth0
interfaces = 192.168.31.25/24 eth0
# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself. However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
bind interfaces only = yes
如上述设置,就只能通过 eth0 访问了,而不是WiFi