Tutorial: Staff-Nutzer in Leopard unbekannt
ac, den 10. Januar 2008In diesem Tutorial wollen wir uns einem Problem widmen, das unter OS X Leopard auftreten kann. Ist der Nutzer „Staff“ als „Unbekannt“ bei den Zugriffsrechten eingetragen, dann gibt es mitunter Probleme bei der Freigabe von Ordnern oder Dateien im Netzwerk. Wir zeigen euch, wie ihr dies beheben könnt.
Nach einem Update auf Leopard, kann es vorkommen, dass die Gruppe „Staff“ als „Unbekannt“ angezeigt wird. Möchte man Zugriffsrechte im Info-Fenster (CMD + I) ändern, kann es dazu kommen, dass Mac OS X einen Neustart hinlegt. „Unbekannt“ lässt sich auch nicht löschen. Dieses Problem ist nervig und hat Auswirkung auf die Dateien und Dokumente, die man vor dem Update benutzt hat. Hierzu kann folgendes helfen: Geht in das Terminal und gebt folgende Befehle ein. Bei „Benutzername“ gebt den Benutzer-Kurznamen (also den Namen nach dem das Heimverzeichnis benannt ist) ein. Wichtig! Solltet ihr mehrere Festplatten haben, mit CMD + E lassen sich weitere interne und externe Laufwerke deaktivieren. Danach sollte nur noch die Systemfestplatte auf dem Desktop sichtbar sein.
sudo dscl . create /Groups/Benutzername GroupMembership Benutzername
sudo dscl . change /Groups/Benutzername RecordName Benutzername _Benutzername
Ihr müsst die erste Zeile und danach die zweite Zeile eingeben, jeweils mit sudo beginnend. Habt ihr mehrere Benutzeraccounts, die davon betroffen sind, müssen diese mit den gleichen Befehlen auf die anderen Benutzer angewendet werden. Ganz wichtig ist, dass der Unterstrich vor dem Benutzernamen stehen bleiben muss!
Hilft die Lösung nicht, kann man es mit diesem Script von Thinkyhead im Terminal versuchen. Das aber nur, wenn wirklich alle Stricke reißen!
#!/bin/bash # # Leopard User Fix by Thinkyhead # # Fixes the broken group membership in Leopard after an upgrade # if [ `whoami` == "root" ]; then echo "[ERROR] `basename $0` must be executed as an admin user (no sudo)." exit 1 fi GID_IS_UID=`sudo dscl . read /Users/$USER | grep PrimaryGroupID | grep "$UID"` GID_IS_STAFF=`sudo dscl . read /Users/$USER | grep PrimaryGroupID | grep 20` if [ -z $GID_IS_UID ]; then echo "[ERROR] It looks like your account is already fixed!" if [ -z "$GID_IS_STAFF" ]; then echo "[ERROR] However, you are not a member of group 'staff' which is bad!" fi echo -n "Would you like to proceed anyway? (y/N):"; read PROCEED if [ -z $REPAIR ] || [ "$PROCEED" = "n" ] || [ "$PROCEED" = "N" ]; then exit 0 fi fi # # 1. Change User's primary group to "staff" (20): # sudo dscl . changei /Users/$USER PrimaryGroupID 1 20 # # 2. Make sure the user is in the "staff" group in Directory Services: # USER_IS_IN_STAFF=`sudo dscl . read /Groups/staff | grep GroupMembership | grep "$USER"` if [ -z $USER_IS_IN_STAFF ]; then sudo dscl . append /Groups/staff GroupMembership $USER fi # # 3. Fix group permissions on all items in the user's home folder: # sudo chgrp -R staff $HOME # # ...or more slowly, but more accurately: # # sudo chgrp staff $HOME # sudo find $HOME -group $UID -exec chgrp staff "{}" ; # # # 4. Delete the group that's no longer in use: # sudo dscl . delete /Groups/$USER >/dev/null 2>&1 # # 5. Repair Permissions # echo -n "Would you like to repair permissions? (Y/n):"; read REPAIR if [ -z $REPAIR ] || [ "$REPAIR" = "y" ] || [ "$REPAIR" = "Y" ]; then sudo diskutil repairPermissions / fi # # 6. Reboot for safety. # echo -n "Logging out is recommended, but reboot is more thorough.nWould you like to reboot? (Y/n):"; read REBOOT if [ -z $REBOOT ] || [ "$REBOOT" = "y" ] || [ "$REBOOT" = "Y" ]; then reboot fi exit 0