我有一个个人服务器,用于各种用途,但主要用途之一是文件和文件共享。有些服务需要对目录具有某些权限,但我想在这些服务中使用相同的目录,因为它简单而优雅,不会让人感到困惑,而且不管怎样,我都想访问相同的文件。我可以将它们嵌套在里面,但这并不优雅,而且会造成混淆,或者只上传到这个目录等...我放弃 SFTP 而使用 VSFTPD 的 FTPS,尽管这样不太安全,因为要上传到目录而不是根目录对大多数人来说非常令人困惑,而且根据客户端的不同,它可能不尊重 conf sftp 启动文件中的启动目录等...
例如,我有一个公共部分。它使用 VSFTPD(FTPS 服务)供其他人在以特殊用户登录时上传。它有一个 Web 界面,供其他人公开查看和共享文件。/var/www 目录只是指向主目录(即共享)的符号链接。它有一个 Samba 共享点,因为我想轻松地像文件一样共享。它具有使用 FTPS 的匿名查看功能,或者至少它应该有,但是当我启用它并更改其 prems 以使其工作时,它会破坏其他东西,并且没有简单的解决方法,尽管从纸面上看它应该可以工作,并且不会破坏任何东西,例如安全性,因为不同的用户有不同的权限,如果没有对 VSFTPD 进行硬设置,它会拒绝匿名用户连接。我没有自由在配置文件中覆盖它。这不像其他选项那么糟糕。
示例 2,我个人有一个目录,其中包含敏感的个人数据,该目录使用 SFTP,具体取决于我用于连接的用户,它是只读的还是具有写入权限。现在,如果我使用 SFTP,那么 samba 必须是只读的,如果我让 samba 具有写入权限,那么它会破坏 SFTP。
等等... 我有 5 件东西由于我无法弄清楚而坏了。
我最初的想法是创建例如 .../public_share/Real,然后创建 .../public_share/Servicex,然后通过符号链接或硬链接将 servicex 链接到 Real。问题是,使用 Linux 上的 GNU 实用程序的这种方法几乎是不可能的。我读到使用“crown -H”命令,但 GNU 实用程序中不存在该命令,不像 BSD 实用程序或 Macintosh 操作系统上的实用程序。在 Apple 系统上,如果它不创建循环路径,您可以创建指向目录的硬链接。我很惊讶,假设有人使用 GNU 实用程序,Linux 中不存在该命令。这是第一次看到另一个类 UNIX 系统比它更好。
所以我唯一的另一个想法是,我不知道该怎么做,有没有办法欺骗它,使它看起来好像目录以一种方式配置了权限,但实际上它是以另一种方式配置的?
或者任何其他我没有想到的解决方法,这些解决方法对于最终用户来说很简单并且在服务器端?
答案1
我想在这些服务中使用相同的目录”。
这就是“组”的作用。使用同一个组,为该组设置所需的权限(目录、服务、ftp 登录),然后就可以使用该目录。
chmod
除了使用 之外,您还可以通过以下方式更改权限访问控制列表。
POSIX 访问控制列表 (ACL) 是针对文件和目录的更细粒度的访问权限。ACL 由指定相关对象访问权限的条目组成。可以按用户、按组或通过有效权限掩码配置 ACL。
这些权限适用于单个用户或组,并使用
rwx
与常规权限相同的权限。
示例 2,我个人有一个目录,其中包含敏感的个人数据,该目录使用 SFTP,具体取决于我用于连接的用户,它是只读的还是具有写入权限。现在,如果我使用 SFTP,那么 samba 必须是只读的,如果我让 samba 具有写入权限,那么它会破坏 SFTP。
我觉得这很奇怪。但我认为你可以使用 来避免这种情况bindfs
。
在苹果系统上,如果目录没有创建循环路径,则可以创建硬链接。如果有人使用 GNU ontop,我很惊讶 Linux 中没有这个功能。我
我并不感到惊讶,而且……MacOS 允许这样做,从而削弱了核心实用程序,在我看来,这是一个愚蠢的举动。您还需要使用第三方脚本来修复导致问题的部分原因(ln
已损坏,并且您无法从命令行撤消硬链接)。
您应该使用bindfs
。MacOS 十年前就应该添加对此的支持。它适用于所有现代 Linux、Unix 和 BSD(Catalina 是第一个 MacOS,如果我没记错的话)。
bindfs
将目录挂载到另一个位置并改变权限位。
bindfs
是一个用于将目录挂载到另一个位置的 FUSE 文件系统,类似于mount --bind
。可以使用各种规则更改挂载点内的权限。
查看关联更多信息,但从您发布的内容来看,这似乎是对您所有问题的答案。