![如何为特定用户分配对 shell 和 SFTP 中文件夹子集的读取/执行权限?](https://linux22.com/image/1143587/%E5%A6%82%E4%BD%95%E4%B8%BA%E7%89%B9%E5%AE%9A%E7%94%A8%E6%88%B7%E5%88%86%E9%85%8D%E5%AF%B9%20shell%20%E5%92%8C%20SFTP%20%E4%B8%AD%E6%96%87%E4%BB%B6%E5%A4%B9%E5%AD%90%E9%9B%86%E7%9A%84%E8%AF%BB%E5%8F%96%2F%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90%EF%BC%9F.png)
一直在网上搜索此解决方案,但所有答案都涉及组、文件夹所有者或所有用户。
就我而言,我有自己的用户(“ 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。您还必须确保“其他人”对您的目录没有任何访问权限:-R
u:jonny:r
/home/kai/projects.complete
chmod -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/