W naszych szkołach mamy udziały sieciowe dla różnych klas zawierających foldery „Hand In, Hand Out”. Uczniowie umieszczają swoją pracę w folderze Hand In, a nauczyciele umieszczają zadania w folderze Hand Out.
Folder Hand In to folder, do którego uczniowie mają dostęp tylko do zapisu. [Mac OS X nazywa taki folder „Drop Box”, ponieważ możesz przeciągać i upuszczać do niego pliki, ale nie widzieć, co jest w środku.]
Przyjrzałem się temu i doszedłem do wniosku, że odpowiedź brzmi „nie”, ale czy każda kombinacja uprawnień i list kontroli dostępu pozwala mieć folder z dostępem tylko do zapisu, w którym można zobaczyć nazwy plików, które się w nim znajdują ( ale nie otwierają plików)? W przypadku, gdy uczeń nie był pewien, czy oddał zadanie, pozwoliłoby to sprawdzić, czy tak się stało.
O krok lepiej byłoby, gdyby uczniowie zobaczyli nazwy plików, które przekazali, ale nie nazw innych osób.
Aktualizacja: Jeszcze jeden prawdziwy nuans polega na tym, że uczniowie mogą potrzebować oddawać całe foldery, a nie tylko pojedyncze pliki. Mac OS X używa pakietów - rzeczy, które wyglądają jak pliki dla użytkownika, ale w rzeczywistości są katalogami. (Aplikacje są najlepszym przykładem, ale Pages, Keynote i cholera, nawet TextEdit (po dodaniu grafiki do dokumentu), zapisywanie pakietów.) Zajęło trochę dodatkowej pracy, aby umożliwić przekazanie folderów (jak możesz patrz poniżej).
Oto część mojego istniejącego skryptu. Zauważ, że robi to, co chcę, z wyjątkiem uzyskania jakiejkolwiek listy plików w środku:
$ ADMIN jest użytkownikiem administratora systemu. $ STAFF to grupa nauczycieli. $ GRADE to grupa reprezentująca grupę studentów. Polecenie funky chmod służy do ustawiania list ACL w systemie OS X.
# 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"
Dzięki temu administrator i grupa pracowników mają pełny dostęp do plików w folderze Hand In (dzięki czemu mogą je usuwać, przenosić itp.), A uczniowie mogą przekazywać pliki lub foldery (ale ich nie widzieć) w ogóle!).