Festlegen von Berechtigungen für mehrere Benutzer

1

In einer Klassenzimmerumgebung werden nach einem Monat ohne Probleme plötzlich alle aus ihren Ordnern gesperrt, einschließlich meines lokalen Administrators.

Was funktioniert, ist die Anmeldung bei jedem Benutzer, erhöht, ich kann Terminal-Befehl ausführen:

sudo find ~ $TMPDIR.. -exec chflags -h nouchg,nouappnd,noschg,nosappnd {} + -exec chown -h $UID {} + -exec chmod +rw {} + -exec chmod -h -N {} + -type d -exec chmod -h +x {} + 2>&-

Das ist von Linc Davis Reparieren von Berechtigungen, wenn der Eigentümer "Abrufen ..." ist

Wie kann man Apple Remote Desktop verwenden, um dies über ein UNIX-Skript zu beheben?

#! /bin/bash

cd /Users

# Create an array with a list of all users in the users folder excluding Shared, site, nc12, and g
full=$(ls -1 /Users/ | grep -v 'Shared\|site\|nc12\|g\|.localized')
echo Fixing Permissions....

# Loop permissions fix for the values of the array $full
for i in $full 
{
    cd /Users/$i
    find ~ $TMPDIR.. -exec chflags -h nouchg,nouappnd,noschg,nosappnd ;
    chown -h $UID
    chmod -R -N ~ $i
    chmod -R 700 $i
    chmod -R 777 $i/Public
    chmod -R 733 $i/Public/Drop\ Box
}

# A reboot shouldn't be necessary since the permissions change instantaneously and will be different the next time a program tries to access files.

# That said, it's never a bad idea to reboot
echo "You must REBOOT the machine to complete the process. Thank you."
exit

Was können meine Syntaxfehler sein? Andere Vorschläge?

Tru
quelle
1
Welche spezifische Fehlermeldung erhalten Sie in welcher Zeile? Und ich nehme an, Sie wissen, dass Ihr Skript nicht dasselbe tut wie der Befehl find von oben?
nohillside
Mögliche Probleme: full ist eine Liste, kein Array und kann keine Leerzeichen in Dateinamen verarbeiten. Anstatt zu raten, in welchen Dateien ausgeschlossen werden soll /Users , testen Sie, ob das Dateisystemobjekt ein gültiger Basisordner ist ( id und dscl könnte hier verwendet werden). Nicht zitierte Variablen im gesamten Skript. Fehlendes Escape oder Anführungszeichen im Befehl find. Fehlender Operand in der chown Aussage. Doppelte Operanden in der chmod Anweisung, die die ACLs entfernt
fd0