Linux / CentOS – 需要为将来的目录设置只读权限

在任何types的Linux中,我都有很less的背景,所以我完全没有时间开始。

老板曾经要求我build立一个基于CentOS的FTP服务器。 到目前为止,事情已经如预期一样,我已经能够在需要的时候获得大部分设置。 创build新用户时,会在用户的主目录中自动创build两个文件夹 – 上传和下载。

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

任何协助这个问题将不胜感激!

谢谢! 伊恩

我们需要更多关于设置的信息才能给出更好的答案,但是,首先,您可以修改您正在使用的脚本创builduploaddownload来设置权限并更改所有权,如下所示:

 # 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在那里。

看看umask命令。 在/ etc / profile中根据需要进行设置,默认情况下,用户将使用指定的priv来创build文件。

根据您使用的FTP软件,也可以在其configuration文件中设置此行为。 如果你还没有,我build议看看这样的东西,这将封装你需要的许多function,而不一定要求你的用户有真正的shell帐户。

对于CentOS,你可能会select使用vsftpd。 这是安全和表演的一个很好的守护进程。 https://security.appspot.com/vsftpd/vsftpd_conf.html

您可以指定用户是否可以拥有chroot环境( chroot_local_user=YES ); 您可以在创build用户时指定一个预定义的骨架( useradd -k /path/to/your/skel

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