本质是通过权限分层覆盖实现:父目录设755保留执行权以支持进入和列表,子目录独立设sgid+2770属组全权,并确保用户加入目标组且umask为002;可选加sticky bit防误删。
只读共享中配置一个“特殊完全控制子目录”,本质是打破父目录的只读限制,让特定子目录对某些用户或组拥有读、写、执行全权——这不是靠继承实现的,而是靠权限分层覆盖和精准归属控制。关键在于:父目录设只读(阻止常规写入),子目录单独设属组+sgid+宽松权限,并确保目标用户属于该组且 umask 兼容。
一、父目录设只读,但保留执行权限
只读共享的前提是用户能进入目录、列出内容,所以必须保留 x(执行)位,否则连 ls 都失败。
- 设为
755(rwxr-xr-x)或750(若仅限组内访问):属主全权,属组和其他人可读可进,但不可写 - 绝对不要用
555或444:缺少 x 位会导致“Permission denied”无法进入 - 确认命令:
sudo chmod 755 /share,再ls -ld /share验证显示drwxr-xr-x
二、子目录独立设属组并启用 SGID
这个子目录不继承父目录的只读策略,它要自己定义协作身份。SGID 不是为继承“只读”,而是为继承“指定组”——后续权限靠组写权保障。
将提醒同步至 Windows/Outlook 日历。用户提及「提醒我」「设置提醒」「加到日历」「同步到日历」「日程」「calendar」「日历」时触发。支持Microsoft Graph API 设备代码流认证,无需 Web 服务器,直接写入用户 Outlook 日历。
- 先建子目录:
sudo mkdir /share/fully_controlled - 指定目标协作组(如
editors):sudo chown :editors /share/fully_controlled - 开启 SGID 并赋予组读写执行:
sudo chmod 2770 /share/fully_controlled - 验证:
ls -ld /share/fully_controlled应显示drwxrws---(组执行位是小写 s)
三、确保用户入组且环境支持组写权
即使子目录开了 SGID,用户不在 editors 组里,或系统过滤了组写权限,依然无法写入。
- 把需要完全控制权的用户加入组:
sudo usermod -aG editors alice - 用户需重新登录,或运行
newgrp editors切换当前会话主组 - 检查生效:
id -nG输出应含editors - 统一
umask 002(写入/etc/profile或~/.bashrc),确保新建文件默认带组写权(-rw-rw----)
四、可选:加 Sticky Bit 防误删
多人共写时,删除权比写权更敏感。加 t 位后,只有文件所有者、子目录属主(如 root)或 root 才能删文件。
- 命令:
sudo chmod +t /share/fully_controlled或一步sudo chmod 12770 /share/fully_controlled - 验证:
ls -ld /share/fully_controlled显示drwxrws--t(小写 t 表示有 x 权限)










