我对 Linux 还很陌生,但我已经设法构建了自己的 DIY NAS(Odroid CS2、Ubuntu 18.04),设置了 Samba、SSH 等,现在处于访问和文件夹管理阶段。
我确实了解什么chown
以及chmod
一般的做法,但我缺少在多用户环境中管理权限的典型策略。
情况:
我是家里负责技术事务的人,其他家庭成员在安全方面都很粗心,但他们也不会听从我的改进建议(但是,如果遇到任何麻烦,他们会寻求帮助)。
因此,我不太介意他们在自己的 Windows 计算机上做什么,但是我想帮助他们在我们的 NAS 上安全地存储和共享他们的文件。
NAS 上当前有一个主文件夹:
/secure/usr/
包含几个子文件夹:
/01_monika /02_rebecca /03_hans /04_alfred /05_share
每个用户都有一个同名的Linux用户和Samba用户(例如monika,rebecca,hans,alfred)并且有一个组(例如samba_users)。
问题:
我希望所有用户都将文件存储在自己的用户目录中,但只有部分子文件夹(如 /photos)应可供其他用户访问(具有读取权限)。理想情况下,所有其他文件夹/文件都应对其他家庭成员隐藏,或至少不可访问。
示例:由于家庭成员的计算机可能受到病毒和木马的攻击,默认情况下任何人都不能读取其他用户的私人文件,例如/02_rebecca/documents
用户 hans 无法访问。但是,/02_rebecca/photos/
仍然应该具有读取权限,因为家庭成员经常需要共享他们的照片,理想情况下我不希望他们将所有共享文件单独存储在 中/05_share
。
感谢您的任何建议!
补充想法:
符号链接是否可以绕过父目录权限,例如,当父目录的权限不允许读取时,允许
samba_users
访问子文件夹?我读到过,符号链接在 Windows 中不起作用,但 Microsoft/photos/
/hans/photos/
另有说明。我知道我可以为每个用户创建子文件夹(例如)
/01_monika/private/
和/01_monika/shared/
。但我想避免这种情况,因为我的一些家庭成员会感到困惑,把所有东西都放在/shared
答案1
我找到了一种方法,正如所解释的那样这里来自用户@Gilles:
拥有目录的读取或写入权限而没有执行权限是没有用的。拥有执行权限但没有读取权限有时很有用:只有知道文件的确切名称时才允许访问文件,这是一种原始的密码保护。
这意味着,设置执行位但不允许对用户目录进行读取(rwx--x---
)。然后,在子文件夹上/photos/
,允许组进行读取和执行权限family
(rwxr-x---
)。
这意味着正常情况下,用户目录不能被所有家庭成员直接打开,但知道有一个子文件夹/01_monika/photos/
,用户可以直接打开这个特定的文件夹。然后我只需要在人们的桌面上,或者在 NAS 上的某个主文件夹中创建这些子文件夹的快捷方式。
我知道这是可能的,这正是我所需要的!