在Ubuntu中设置共享文件夹的权限(只读、读写、无权限),主要通过两种方式实现:文件系统权限和Samba共享配置。以下是详细步骤:
一、文件系统权限设置(基础权限)
1. 修改文件夹所有权和权限
① 创建共享目录(示例)
sudo mkdir /mnt/shared
②
创建新系统用户
sudo adduser 共享用户名 # 创建新系统用户
#或者
sudo useradd -M -s /usr/sbin/nologin 共享用户名 # 创建无登录权限的用户
③ 设置Samba专属密码
先安装Samba
sudo apt update
sudo apt install samba
sudo smbpasswd -a 共享用户名 # 设置独立于系统密码的Samba访问密码
④添加用户到用户组(如组名为 "sharegroup")
sudo groupadd sharegroup
sudo usermod -aG sharegroup 用户名 # 将需要访问的用户加入组
⑤修改文件夹所属组
sudo chgrp -R sharegroup /mnt/shared
⑥设置权限:
# 读写权限:组用户可读写
sudo chmod -R 775 /mnt/shared # 所有者和组可读写,其他人只读
# 或
sudo chmod -R 770 /mnt/shared # 仅所有者和组可读写
# 只读权限:组用户只读
sudo chmod -R 750 /mnt/shared # 所有者读写,组只读
# 或
sudo chmod -R 755 /mnt/shared # 所有者读写,组和其他人只读
# 无权限:拒绝特定用户访问
sudo chmod -R 750 /mnt/shared # 仅所有者和组可访问(拒绝其他用户)
2. 验证权限
ls -ld /mnt/shared # 输出示例:drwxr-xr-x 表示其他人只读
二、Samba共享设置(网络共享权限)
1. 编辑Samba配置文件
sudo nano /etc/samba/smb.conf
在文件末尾添加以下配置(根据需求选择一种):
读写权限配置:
[Shared]
path = /mnt/shared
browseable = yes
writable = yes # 允许写入
valid users = @sharegroup # 允许访问的用户组
create mask = 0775 # 新建文件权限
directory mask = 0775 # 新建目录权限
只读权限配置:
[Shared]
path = /mnt/shared
browseable = yes
read only = yes # 设置为只读
valid users = @sharegroup
无权限配置(拒绝访问):
[Shared]
path = /mnt/shared
browseable = no # 隐藏共享
guest ok = no # 禁止来宾访问
valid users = 特定用户名 # 只允许特定用户(不包含拒绝的用户)
2. 重启Samba服务
sudo systemctl restart smbd nmbd
三、权限组合说明
权限类型 |
文件系统命令 |
Samba配置关键项 |
---|---|---|
读写 |
|
|
只读 |
|
|
无权限 |
不添加用户组 + |
不添加用户到 |
权限对照表
权限类型 |
关键配置项 |
生效场景 |
---|---|---|
读写 |
|
Samba共享 |
只读 |
|
Samba共享 |
无权限 |
不在 |
所有共享类型 |
四、验证权限生效
本地验证:
# 尝试用不同用户创建文件
sudo -u 用户名
touch /mnt/shared/test.txt
成功:读写权限有效
失败:检查用户组和文件权限
网络共享验证:
从另一台电脑访问共享:
smb://ubuntu_ip/Shared
输入已授权的Samba用户密码测试读写操作。
五、高级权限控制
精细控制:使用ACL(访问控制列表)细化权限:
sudo apt install acl
sudo setfacl -m g:sharegroup:rwx /mnt/shared # 赋予组读写执行
sudo setfacl -m g:readonlygroup:r-x /mnt/shared # 只读组
匿名访问(慎用):
在Samba配置中添加:
guest ok = yes
public = yes
核心原则:
文件系统权限控制本地访问。
Samba配置控制网络访问。
两者需配合使用以确保安全。