在我们的学校,我们为不同的班级提供网络共享,其中包含“交作业、交作业”文件夹。学生将他们的作业放在“交作业”文件夹中,老师将作业放在“交作业”文件夹中。
Hand In 文件夹是学生具有只写权限的文件夹。[Mac OS X 将这样的文件夹称为“Drop Box”,因为您可以将文件拖放到其中,但看不到其中的内容。]
我研究了一下,得出的结论是答案是否定的,但是,任何权限和访问控制列表的组合是否允许一个人拥有一个具有只写访问权限的文件夹,您可以在其中查看驻留在其中的文件的名称(但实际上不能打开文件)? 如果学生不清楚他们是否已经提交了作业,这将允许他们验证他们是否已经提交了作业。
更好的办法是,如果学生可以看到自己提交的文件的文件名,但看不到其他任何人的文件名。
更新:另一个真正的麻烦是,学生可能需要提交整个文件夹,而不仅仅是单个文件。Mac OS X 使用包——在用户看来像文件的东西,但实际上是目录。(应用程序是最好的例子,但 Pages、Keynote,甚至 TextEdit(当您向文档中添加图形时)都会保存包。)需要做一些额外的工作才能让他们能够提交文件夹(如下所示)。
以下是我现有脚本的一部分。请注意,除了生成任何种类的内部文件列表外,它还能完成我想要的功能:
$ADMIN 是系统管理员用户。$STAFF 是教师组。$GRADE 是代表学生成绩的组。在 OS X 下,使用 chmod 命令来设置 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 文件夹中的文件具有完全访问权限(以便他们可以删除、移动它们等),并且允许学生提交文件或文件夹(但根本看不到它们!)。
答案1
授予目录(但不授予文件)的读取权限应允许用户查看文件名但不能读取单个文件。因此,您对目录的权限应为 666,但对文件的权限应为 600(假设您希望学生能够读取自己的文件,否则权限应为 200)。我不知道如何在 OSX 中做到这一点,以便他们只能看到他们提交的文件。您必须注意的事情(我是 Unix 管理员,而不是 OSX 管理员,因此我不确定如何在 OSX 中做到这一点)是,您需要确保目录权限不会成为目录中文件的默认权限。
答案2
您可以使用 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
或者使用 GUI,例如沙盒。
使用示例:
chmod -a "students allow read,write,append,readattr,writeattr,readextattr,writeextattr,readsecurity" /PATH/TO/HAND/IN/FOLDER
chmod -a "students deny list,search,file_inherit,limit_inherit,only_inherit" /PATH/TO/HAND/IN/FOLDER
答案3
我假设这是窗户,对吗?
我们在做类似的事情时遇到了很多问题,用户会在“drop off”文件夹中处理 word/excel 文档,并且他们有写入(但无删除)权限。临时文件会从 Word 和 Excel 中累积起来,造成很多麻烦。每次用户双击其中一个文件查看它(如前所述,检查他们是否提交了它)时都会发生这种情况,并且每次他们没有正确命名它并想要重命名时也会发生这种情况。
我们最终为用户提供了标准的“读/写/编辑/删除”访问权限,并让监控文件夹的人员在收到文件时将其移出。用户确实失去了查看已提交内容的能力,但是,嘿,没有完美的计划。
答案4
我认为 FTP 是实现您所追求目标的最简单方法,但我还有其他一些想法。请记住,这是从 nix 的角度出发的,因此我不确定它在 OSX 上的适用性如何。
如果 OSX 共享允许您为用户设置 umask,那么您只需授予他们对该文件夹的读/写访问权限,并设置用户 umask,以便他们创建的新文件只具有读取权限(0770 将使文件上的用户和组权限设置为 0)。
我为客户做的一个方法是,我使用 incron 立即将他们“上交”文件夹中的所有文件移动到另一个文件夹中,以便“老师”可以对其进行任何他们想做的事情。
希望有帮助