我有一个Linux文件服务器与一些共享目录。 这些目录有时可以通过SFTP访问,有时也可以通过shell来访问。 无论如何访问这些目录,我想确保:
g+rw的道德) g+x的道德等价物)中的所有用户遍历, gx的道德等价物) 我有一个模糊的回忆,我已经用setfacl做过,但我不知道如何。
我来这里最近的是:
$ chown fileserver:fileserver . -R $ find . -type f -print -exec chmod ax '{}' ';' $ find . -type d -print -exec chmod u+x '{}' ';' $ find . -type d -print -exec chmod g+xs '{}' ';' $ cat facls user::rwx group::rwx other::rx default:user::rwx default:user:fileserver:rwx default:group::rwx default:group:fileserver:rwx default:mask::rwx default:other::rx $ setfacl -M facls -R .
而且它似乎在写入这个目录的进程上意外的过分严格的umasks上做了正确的事情,但它仍然使用户能够chmod他们创build的文件,从而限制他们的权限。
这个解决scheme的关键问题是文件仍然由创build它们的人所拥有,文件所有者具有不可撤销的权限修改权限。 在BSD派生系统上,似乎你可以通过一个setuid目录来解决这个问题(这会导致在该目录下创build的所有文件都被该目录的所有者拥有)。 然而,Linux只对setgid有这种行为。