如何为特定用户分配对 shell 和 SFTP 中文件夹子集的读取/执行权限?

如何为特定用户分配对 shell 和 SFTP 中文件夹子集的读取/执行权限?

一直在网上搜索此解决方案,但所有答案都涉及组、文件夹所有者或所有用户。

就我而言,我有自己的用户(“ kai”)和其他几个使用该机器的用户。

我有一个文件夹“/home/kai/projects.complete”,我可以通过 shell 和 SFTP 编辑其中的文件。

但是,我现在需要允许第二/第三个用户以只读方式访问/home/kai/projects.complete 机器上的所有文件,但这些用户目前根本没有设置。

我发现的最佳解决方案是将文件夹权限设置为rwxrwxrrr允许我自己和我自己的个人组访问读/写/执行项目,并允许所有其他用户访问只读。但是,我不希望所有其他用户都拥有访问权限。

假设我的示例用户是jonny

我想创建一个jonny有自己密码的用户,并授予他只读访问权限,/home/kai/projects.complete 他需要对项目内的所有文件和目录具有只读访问权限。他还需要能够通过 SSH 访问该框并以与我相同的方式使用 SFTP,理想情况下,他在 SFTP 中的默认目录是/home/kai/projects.complete(最好有)

我需要一个 bash 命令或脚本来执行以下操作:a)添加带有密码的用户 b)授予read-execute文件夹中的用户权限/home/kai/projects.complete以及其所有子目录和文件。如果可能的话,我希望 shell 默认使用此文件夹,而不是/home/jonny/ (但这是一件好事) c) 允许通过 SSH 和 FTP 访问下载/home/kai/projects.complete d)中的任何文件不允许访问任何其他文件夹或文件(必须只能访问/home/kai/projects.complete其子目录和文件)e)当用户登录 FTP 时,我希望用户自动进入目录/home/kai.projects.complete (再次强调,这是件好事——他们总是可以手动导航或在 FTP 客户端中设置默认路径)

有人能给我一个解决方案,而不需要我完全更改组或所有用户的权限吗?有时,其他用户会被添加,但他们无权访问这些文件。

谢谢

答案1

对于保护/权限部分,如果你的文件系统支持 ACL,你可以运行

setfacl -R -m u:jonny:r /home/kai/projects.complete
setfacl -R -m default:u:jonny:r /home/kai/projects.complete

内容如下:

为目录 上的用户 jonny readonly ( ) 递归 ( )设置-m访问控制列表 (ACL) ,并将默认 ACL 设置为相同,这意味着下面新建的每个目录将自动获得相同的 ACL。您还必须确保“其他人”对您的目录没有任何访问权限:-Ru:jonny:r/home/kai/projects.completechmod -R o-rwx /home/kai

无法将只读目录赋予 jonny 作为主目录,因为登录/注销时会有文件写入主目录。

对于 FTP 的配置,这取决于您使用的 FTP 服务器。大多数都chroot指向主目录(或其他目录,如果已配置),因此 FTP 用户无法更改到外部目录。请查看您的 FTP 服务器的描述。

要访问监狱外的文件夹chroot,请参见http://www.ducea.com/2006/07/27/allowing-ftp-access-to-files-outside-the-home-directory-chroot/

相关内容