Linux / CentOS - 需要为未来目录设置仅读/写权限

Linux / CentOS - 需要为未来目录设置仅读/写权限

我对任何类型的 Linux 的背景都很少,所以我一开始就完全是即兴发挥。

老板要求我基于 CentOS 设置一个 FTP 服务器。到目前为止,一切进展顺利,我已经能够根据需要设置好大部分内容。创建新用户时,会自动在用户的主目录中创建两个文件夹 - upload 和 download。

我需要能够设置权限,以便在创建新用户并创建默认目录时,用户将无法从这些文件夹中删除任何内容。

任何关于此问题的帮助都将不胜感激!

谢谢!Ian

答案1

我们需要更多有关您的设置的信息才能给出更好的答案,但首先,您可以修改用于创建uploaddownload设置权限以及更改所有权的脚本,例如:

# create the directories
mkdir $USERHOME/upload $USERHOME/download

# Set permissions on those directories to make them read-only for $USER
chown root:root $USERHOME/upload $USERHOME/download
chmod 755 $USERHOME/upload $USERHOME/download

您可以使用除所有权之外的其他用户root,例如 FTP 用户。

这种安排的诀窍是,用户大概拥有$USERHOME,因此如果$USERHOME/upload$USERHOME/download目录非空,则可以删除它们(但用户不能删除非空目录)(用户可以这样做,因为删除这些目录取决于父目录 $USERHOME 的权限,而不是子目录本身的所有权)。

为了防止这种情况(同时保留用户轻松写入文件的能力$USERHOME),您还可以在脚本中执行以下操作:

touch $USERHOME/upload/.dummyfile $USERHOME/upload/.dummyfile

用户将无法删除该目录,因为该目录仍然.dummyfile存在。

答案2

看看umask命令。根据需要在 /etc/profile 中设置它,您的用户将默认创建具有指定权限的文件。

根据您使用的 FTP 软件,也可以在其配置文件中设置此行为。如果您还没有,我建议您查看类似它将封装您需要的许多功能,而并不一定要求您的用户拥有实际的 shell 帐户。

答案3

对于 CentOS,您可能会选择使用 vsftpd。这是一个安全性和性能都很好的守护进程。https://security.appspot.com/vsftpd/vsftpd_conf.html

您可以指定用户是否可以拥有 chroot 环境,(chroot_local_user=YES);您可以在创建用户时为其主页指定预定义的框架(useradd -k /path/to/your/skel

默认情况下,无法从文件夹中删除任何内容是匿名用户的典型限制,您可以通过 获得chown_uploads

相关内容