麒麟系统多用户共享同一文件夹需通过Samba实现细粒度权限控制,含图形界面授权、smb.conf配置valid users、创建专用用户组同步权限、NFS替代方案及防火墙校验五种路径。
如果您在麒麟操作系统中需为多个用户配置同一文件夹的协同访问权限,以支撑团队协作场景,则必须突破单用户共享限制,通过Samba服务实现基于系统用户的细粒度权限控制。以下是多种可并行实施的配置路径,涵盖图形界面快速授权、Samba配置文件精准管控及本地文件权限协同校准三个维度。
该方法利用系统内置共享属性面板,直接绑定多个本机用户至同一共享目录,无需终端操作,适用于对权限颗粒度要求不高的办公环境。其核心是通过“高级共享”功能将多个用户纳入访问白名单,并统一赋予读写权限。
1、在文件管理器中定位目标文件夹,例如主目录下的“teamwork”文件夹。
2、右键点击该文件夹,选择“属性”,切换至“共享”选项卡。
3、勾选“共享此文件夹”,取消勾选“只读”,确保内容可编辑。
4、点击“高级共享”按钮,弹出用户管理窗口。
5、在用户列表中依次勾选需授权的多个本机用户(如kylin、admin、dev),每人均显示为独立条目。
6、为全部已勾选用户统一设置“读取和写入”权限,点击“确定”保存。
7、系统弹出权限确认窗口,输入当前用户的开机密码完成授权。
8、再次点击“确定增加权限”,共享角标出现即表示多用户授权生效。
该方法绕过图形界面封装,直接编辑/etc/samba/smb.conf,在共享段中显式声明多个合法访问用户,确保仅指定账户可通过Samba协议认证访问,杜绝游客模式带来的越权风险。所有用户必须为系统已存在账户且已配置Samba密码。
1、打开终端,执行命令检查Samba是否已安装:dpkg -l | grep samba;如未安装,运行sudo apt install samba samba-common-bin。
2、备份原始配置:sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup。
3、使用编辑器打开配置文件:sudo vim /etc/samba/smb.conf。
4、在文件末尾新增共享段,严格按格式书写(注意缩进与换行):
[teamshare]
comment = Team Collaboration Folder
path = /srv/samba/teamshare
browseable = yes
read only = no
create mask = 0664
directory mask = 0775
valid users = kylin admin dev
force group = teamgroup
5、保存退出后,为每个valid users中的用户创建Samba密码:sudo smbpasswd -a kylin、sudo smbpasswd -a admin、sudo smbpasswd -a dev。
6、重启Samba服务使配置生效:sudo systemctl restart smbd。
该方法通过Linux系统级用户组机制,将多个用户归入同一组,再将共享目录所属组设为该组,并启用setgid位,确保新创建文件自动继承组所有权,从而实现无缝协作。Samba配置中仅需指定force group,无需逐个列出valid users。
1、创建专用协作组:sudo groupadd teamgroup。
2、将多个用户加入该组:sudo usermod -a -G teamgroup kylin、sudo usermod -a -G teamgroup admin、sudo usermod -a -G teamgroup dev。
3、新建共享目录(以/srv/samba/teamshare为例):sudo mkdir -p /srv/samba/teamshare。
4、将目录所属组设为teamgroup:sudo chgrp teamgroup /srv/samba/teamshare。
5、设置目录权限掩码并启用setgid位:sudo chmod 2775 /srv/samba/teamshare。
6、验证权限生效:ls -ld /srv/samba/teamshare,输出中应显示drwxrwsr-x及所属组为teamgroup。
7、编辑smb.conf,在对应共享段添加force group = teamgroup,并删除valid users行。
8、重启Samba服务:sudo systemctl restart smbd。
该方法采用NFS协议替代Samba,适用于局域网内全Linux/Unix设备协作场景,规避Windows兼容性开销,支持更高效的大文件传输与实时同步。需在服务端启用nfs-kernel-server,并在客户端挂载,所有用户通过本地UID/GID映射获得一致权限。
1、安装NFS服务端:sudo apt install nfs-kernel-server。
2、编辑NFS导出配置:sudo vim /etc/exports。
3、在文件末尾添加导出规则(允许多IP访问):
/srv/nfs/teamshare 192.168.1.0/24(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1001)
4、创建NFS共享目录:sudo mkdir -p /srv/nfs/teamshare。
5、设置目录属主为指定UID/GID(如kylin用户UID=1000,teamgroup GID=1001):sudo chown -R 1000:1001 /srv/nfs/teamshare。
6、重启NFS服务:sudo systemctl restart nfs-kernel-server。
7、在客户端执行挂载:sudo mount -t nfs 192.168.1.100:/srv/nfs/teamshare /mnt/teamshare。
无论采用上述任一方法,均需确保Samba或NFS对应端口未被系统防火墙拦截,且相关服务处于活跃运行状态。缺失此步骤将导致客户端无法发现或连接共享资源。
1、检查UFW防火墙状态:sudo ufw status verbose。
2、若启用防火墙,开放Samba端口(TCP 139/445,UDP 137/138):sudo ufw allow 139/tcp、sudo ufw allow 445/tcp、sudo ufw allow 137/udp、sudo ufw allow 138/udp。
3、若使用NFS,开放对应端口(TCP/UDP 2049):sudo ufw allow 2049。
4、校验Samba服务状态:sudo systemctl is-active smbd,预期返回active。
5、校验NFS服务状态:sudo systemctl is-active nfs-server,预期返回active。
6、验证Samba共享列表:smbclient -L localhost -U%