在我们的学校,我们为不同的班级提供了包含“Hand In, Hand Out”文件夹的网络共享。学生将作业放入 Hand In 文件夹,教师将作业放入 Hand Out 文件夹。
Hand In 文件夹是学生只能写访问的文件夹。[Mac OS X 将这样的文件夹称为“Drop Box”,因为您可以将文件拖放到其中,但看不到其中的内容。]
我调查了一下,得出的结论是,答案是否定的,但是,权限和访问控制列表的任何组合是否允许一个具有只写访问权限的文件夹,您可以在其中看到驻留在其中的文件的名称(但实际上并没有打开文件)?如果学生不清楚他们是否提交了作业,这将允许他们验证他们是否有。
如果学生可以看到他们上交的文件的文件名,而不是其他任何人的文件名,那就更好了。
更新:另一个真正的麻烦是学生可能需要上交整个文件夹,而不仅仅是单个文件。Mac OS X 使用捆绑包——对用户来说,这些东西看起来像文件,但实际上是目录。(应用程序是最好的例子,但 Pages、Keynote 和哎呀,甚至 TextEdit(当您将图形添加到文档中时)都会保存捆绑包。)制作它需要一些额外的工作,以便他们可以提交文件夹(你可以见下文)。
这是我现有脚本的一部分。请注意,除了产生任何类型的文件列表之外,这就是我想要的:
$ADMIN 是系统管理员用户。$STAFF 是一组教师。$GRADE 是一个代表某个年级学生的组。时髦的 chmod 命令用于在 OS X 下设置 ACL。
# Create the hand-in folder
mkdir "Hand In"
chown "$ADMIN:$GRADE" "Hand In"
chmod 4730 "Hand In"
chmod +a "$ADMIN allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" "Hand In"
chmod +a "$STAFF allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" "Hand In"
chmod +a "$GRADE allow add_file,delete,add_subdirectory,delete_child,writeattr,writeextattr,file_inherit,directory_inherit" "Hand In"
这样做的目的是让管理员用户和教职员工组完全访问 Hand In 文件夹中的文件(以便他们可以删除、移动它们等),并允许学生提交文件或文件夹(但看不到它们完全没有!)。
授予对目录(但不是文件)的读取权限应该允许用户查看文件名但不能读取单个文件。因此,您对目录的权限为 666,但对文件的权限为 600(假设您希望学生能够读取自己的文件,否则为 200)。我不知道在 OSX 中有什么方法可以让他们只能看到他们提交的文件。您必须注意的事情(我是 Unix 管理员,而不是 OSX 管理员,所以我不确定如何在 OSX 中执行此操作),您需要确保目录权限不会成为目录中文件的默认权限。
您可以使用 ACL 来实现这一点:
提交我假设这里正在使用一个组:
对于
student
您希望启用以下标志的组:"group:student allow list,add_file,add_subdirectory,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit"
并且以下标志明确禁用:
"group:student deny list,search,file_inherit,limit_inherit,only_inherit"
学生无法实际阅读任何文件,也无法删除任何文件。但不幸的是,他们可以列出所有文件。
您可以通过命令行使用
chmod
或使用诸如Sandbox之类的 GUI 来设置它们。使用示例:
我假设这是窗户,对吧?
我们在做这样的事情时遇到了很多问题,用户将在“drop off”文件夹中处理 word/excel 文档,并且他们具有写入(但不是删除)访问权限。临时文件会从 Word 和 Excel 建立起来,并引起很多麻烦。每次用户双击他们的一个文件来查看它(如前面提到的,检查他们是否将其打开)以及每次他们没有正确命名并想要重命名时,都会发生这种情况。
我们最终为用户提供了标准的“读/写/编辑/删除”访问权限,并让监视文件夹的人在收到文件时将文件移出。用户确实失去了查看他们已经上交的内容的能力,但是,嘿,没有完美的计划。
我第二次遇到这个问题,并没有看到我认为对你来说可能是一个好的答案,所以让我把这个扔掉:
一个 ftp 站点怎么样,(独立于操作系统的好处,可以是内部的,等等)然后你可以用这种方法锁定每个学生的文件夹/文件?
编辑:
如果您考虑该解决方案,这里有两个链接可能会帮助您:
FTP mini how-to
如何在 Windows Server 2003 中限制对 ftp 站点的访问
第二次编辑,(我认为这可能是你要找的)
如何设置“盲投”ftp 站点
IMO FTP 是完成您所追求的最简单的方法,但我还有其他一些想法。请记住,这是从 nix 的角度来看的,所以我不确定它将如何适用于 OSX。
如果 OSX 共享允许您为用户设置 umask,那么您只需要授予他们对该文件夹的读/写权限并设置用户 umask,以便他们制作的新文件只有读取权限(0770 将使其如此文件的用户和组权限设置为 0)。
我为客户做的一种方法是我使用 incron 立即将他们“Hand In”文件夹中的任何文件位置移动到另一个文件夹,“老师”可以用它做他们想做的事。
希望有帮助