Archive for the ‘Komandozeile – Terminal’ Category

h1

Backups.backupdb löschen

31. Dezember 2009

Böse Geschichte: Ein sich aufgehängtes Backup mittels Time-Machine auf eine externe WD MyBook Studio Edition (1 TB) hinterliess ein nicht mehr zu löschendes Verzeichnis Backups.backupdb. Nach intensiver Suche in Büchern und Foren habe ich dann eine Lösung gefunden.

Die Lösung in Kurzform (für Leopard):

  1. Deaktivieren der ACLs (fsaclctl)
  2. Löschen des Verzeichnisses im Finder (nicht auf der Komandozeile)

Lösungsansätze für Snow-Leopard siehe Ende des Artikels.

Meine Odysee und Erkenntnisse


Flags

Quellen
Kommandozeile
    $ ls -lO datei01
    -rw-r--r--  1 ingolantschner  ingolantschner  uchg 0 31 Dez 13:00 datei01
    $ chflags nouchg datei01
    $ ls -lO datei01
    -rw-r--r--  1 ingolantschner  ingolantschner  - 0 31 Dez 13:00 datei01
    $ sudo chflags schg datei01
    $ sudo chflags noschg datei01
    $ ls -lO datei01
    -rw-r--r--  1 ingolantschner  ingolantschner  schg 0 31 Dez 13:00 datei01
    $ ls -lO datei01
    -rw-r--r--  1 ingolantschner  ingolantschner  - 0 31 Dez 13:00 datei01

Ergebnis: An den Flags lag es also nicht.


ACLs komplett entfernen

Quelle: http://discussions.apple.com/thread.jspa?threadID=1469957

    $ sudo chmod -R -N Backups.backupdb/
    chmod: Failed to clear ACL on file spinning-globe.scm: Operation not permitted

Sandbox

Schaut ganz nett aus das Tool – setzt die Rechte aber auch nicht um. Das sehen wir z.B.

hier:

    $ ls -le Installer\ Log\ File
    -rwxrwxrwx@ 3 lisi  staff  12922 23 Sep  2008 Installer Log File
     0: group:everyone deny write,delete,append,writeattr,writeextattr,chown

Ausserdem gibt es von Seiten Sandbox keine Rückmeldung, dass das Setzen der Berechtigungen fehlschlug. Ein zuverlässiges Werkzeug schaut anders aus.

Interessant: Dieses pauschale evereyone deny schaut nicht gut aus … ich habe einen Verdacht.

Reproduktion meines Verdachtes
    $ chmod +a "everyone deny write,delete,append,writeattr,writeextattr,chown" datei02
    $ ls -le datei02
    -rw-r--r--+ 1 ingolantschner  ingolantschner  0 31 Dez 14:01 datei02
     0: group:everyone deny write,delete,append,writeattr,writeextattr,chown
    $ rm datei02
    override rw-r--r--  ingolantschner/ingolantschner for datei02? y
    rm: datei02: Permission denied
    $ sudo rm datei02
    Password:
    $ ls -le datei02
    ls: datei02: No such file or directory

Seltsam: Eine so gesperrte Datei kann also sehr wohl noch mit sudo gelöscht werden. (Also an sich ist das nicht so verwunderlich und durchaus eine vernünftige Verhaltensweise des Betriebssystemes – nur im konkreten Fall wähnte ich mich schon einer Erklärung nahe, die jetzt aber nicht zutrifft.) Mein Verdacht, dass das „everyone deny …“ meine Löschversuche ursächlich unterbindet war also unbegründet.


ACLs ausschalten

Quelle: http://www.macosxhints.com/article.php?story=20080128003716101

    $ fsaclctl -p /Volumes/Filme/ -v
    fsaclctl version 1.2
    $ fsaclctl -p /Volumes/Filme/
    Access control lists are supported on /Volumes/Filme/.

    $ sudo fsaclctl -p /Volumes/Filme/ -d
    $ ls -le Installer\ Log\ File
    -rwxrwxrwx@ 3 lisi  staff  12922 23 Sep  2008 Installer Log File

Die ACLs werden nicht mehr angezeigt.

Erster Teilerfolg: Mit sudo rm <datei> lässt sich die Datei nun endlich entfernen.

    $ sudo rm Installer\ Log\ File
    $ ls -le Installer\ Log\ File
    ls: Installer Log File: No such file or directory
Symlink (Alias?) lässt sich nicht entfernen
    $ ls -le
    total 8
    lrwxr-xr-x  1 root  staff   28 30 Dez 17:57 CodeResources -> _CodeSignature/CodeResources
    drwxr-xr-x  5 lisi  staff  170 31 Dez 14:09 Frameworks
    iMac-Ingo:Contents ingolantschner$ sudo rm CodeResources
    Password:
    rm: CodeResources: Operation not permitted

Lösung: Im Finder ist dieser Link dann aber problemlos zu löschen. Und auch der gesamte Verzeichnisbaum Backups.backupdb lässt sich einfach in den Papierkorb werfen. Von dort ist es dann in zwei Schritten auch zu entfernen. (Ich musste den Papierkorb zwei mal entleeren, bis alles weg war.)

Hinweis

In Snow Leopard wird man das tool fsaclctl vergeblich suchen – es wird nicht mehr angeboten. Gerüchteweise kann man aber die Version vom Leopard auch in Snow-Leopard verwenden (man muss es sich halt auf den Schneeleo-Rechner von einer alten Installation kopieren.) Ein weiteres Gerücht besagt, dass man im Single User Mode (cmd + S bei Ertönen des Startgongs drücken) mit rm -rf alles ohne Rückfragen und Einschränkungen löschen könne. Nun ja, das auszuprobieren überlasse ich nun jemand anders – ich bitte um Kommentare :-)

Advertisements
h1

Diskimage-File (img) mit dd auf OS X erstellen

1. Juli 2009

Wer z.B. ein ext2fs oder ext3fs in Form einer startfähigen Speicherkarte oder anderen Mediums hat, möchte davon vielleicht eine Kopie in eine Datei oder auf ein anderes Medium erstellen. Das Festplatten Dienstprogramm von OS X eignet sich dazu nicht. Dafür kann das aus der UNIX-Welt kommende dd (disk dump) dies erledigen. Und so geht es:

Um von einer Disk (z.B.  SD-Karte mit startfähigem Ubuntu-Linux) eine Kopie in eine Datei zu erzeugen und diese dann für die Erzeugung beliebig vieler „Clones“ dieser SD-Karte zu verwenden, gebe man diese Komandos auf der Komandozeile (im Terminal) von Mac OS X ein:

$ sudo -s 
# diskutil list
/dev/disk0
 #:                       TYPE NAME                    SIZE       IDENTIFIER
 0:      GUID_partition_scheme                        *232.9 Gi   disk0
 1:                        EFI                         200.0 Mi   disk0s1
 2:                  Apple_HFS Macintosh HD            232.6 Gi   disk0s2

# --> Einlegen der SD-Karte mit dem z.B. starfähigen Ubuntu

# diskutil list
/dev/disk0
 #:                       TYPE NAME                    SIZE       IDENTIFIER
 0:      GUID_partition_scheme                        *232.9 Gi   disk0
 1:                        EFI                         200.0 Mi   disk0s1
 2:                  Apple_HFS Macintosh HD            232.6 Gi   disk0s2
/dev/disk1
 #:                       TYPE NAME                    SIZE       IDENTIFIER
 0:     FDisk_partition_scheme                        *3.7 Gi     disk1
 1:                      Linux                         3.5 Gi     disk1s1
 2:                 Linux_Swap                         219.6 Mi   disk1s5

# --> Ok, wir wissen nun dass diese als /dev/disk1 angesprochen werden kann.

# diskutil umount /dev/disk1
# dd if=/dev/disk1 of=Zauberkarte.img
7729152+0 records in
7729152+0 records out
3957325824 bytes transferred in 631.937897 secs (6262207 bytes/sec)
# --> Der Inhalt von disk1 wurde nun in die Datei Zauberkarte.img kopiert

# --> Die Karte, von der kopiert wurde aus dem Kartenleser nehmen und
#     stattdessen die neue, zu überschreibende Karte einlegen.

# diskutil list
/dev/disk0
 #:                       TYPE NAME                    SIZE       IDENTIFIER
 0:      GUID_partition_scheme                        *232.9 Gi   disk0
 1:                        EFI                         200.0 Mi   disk0s1
 2:                  Apple_HFS Macintosh HD            232.6 Gi   disk0s2
/dev/disk1
 #:                       TYPE NAME                    SIZE       IDENTIFIER
 0:     FDisk_partition_scheme                        *3.7 Gi     disk1
 1:                 DOS_FAT_32 NO NAME                 3.7 Gi     disk1s1

# diskutil umountDisk /dev/disk1
Unmount of all volumes on disk1 was successful

# dd if=Zauberkarte.img of=/dev/disk1 bs=1m
3774+0 records in
3774+0 records out
3957325824 bytes transferred in 617.424331 secs (6409410 bytes/sec)

# --> Fertig, die Karte im Leser ist nun eine exakte Kopie des Images Zauberkarte.img

Fehler „Resource busy“:

Es kann folgender Fehler beim Kopieren der IMG-Datei auf die frische Karte auftreten: dd: /dev/disk1: Resource busy

$ diskutil umount /dev/disk1
$ sudo dd if=Zauberkarte.img of=/dev/disk1 bs=1m
dd: /dev/disk1: Resource busy

Der Fehler war, dass anstelle von umountDisk der Befehl unmount verwendet wurde, das nur einzelne Partitionen und nicht die ganze Disk aushängt.

So ist es richtig:

$ diskutil umountDisk /dev/disk1
Unmount of all volumes on disk1 was successful
$ sudo dd if=Zauberkarte.img of=/dev/disk1 bs=1m