Was bedeutet mode_t 0644?

Lesezeit: 2 Minuten

Benutzer-Avatar
Sycx

#define COPYMODE 0644
creat(argV[2],COPYMODE);

Ich habe diese zwei Codezeilen in einer copy.c-Datei. Ich weiß nicht, was es bedeutet. Geben Sie bitte ein Beispiel dazu

  • plus wie man eine Datei kopiert, ein AC-Programm verwendet und die ausführbare Datei für die Kopierdatei beibehält

    – Sycx

    24. August 2013 um 6:59 Uhr

  • Entfernen Sie das Semikolon am Ende von #define

    – P0W

    24. August 2013 um 7:01 Uhr


Benutzer-Avatar
Luser Drog

Es gibt 3×3-Bit-Flags für einen Modus:

  • (besitzender) Benutzer
    • lesen
    • schreiben
    • ausführen
  • Gruppe
    • lesen
    • schreiben
    • ausführen
  • Sonstiges
    • lesen
    • schreiben
    • ausführen

Jedes Tripel wird also gut als Oktalziffer codiert.

rwx oct    meaning
--- ---    -------
001 01   = execute
010 02   = write
011 03   = write & execute
100 04   = read
101 05   = read & execute
110 06   = read & write
111 07   = read & write & execute

0644 ist also:

* (owning) User: read & write
* Group: read
* Other: read

Beachten Sie, dass in C ein Anfangsbuchstabe 0 gibt die oktale Notation an, genau wie 0x gibt die hexadezimale Schreibweise an. Jedes Mal, wenn Sie in C eine einfache Null schreiben, ist es eigentlich eine oktal Null (lustige Tatsache).

Dies könnte auch geschrieben werden:

-rw-r--r--

Während volle Berechtigungen vorhanden sind, kann 0777 auch geschrieben werden:

-rwxrwxrwx

Also wird die Oktalzahl an übergeben creat entspricht direkt (über Oktalcodierung des Bitmusters) den Dateiberechtigungen, wie sie von angezeigt werden ls -l.

  • Ich denke, es ist besser, sie als Bit-Flags zu erklären

    – JosefH

    24. August 2013 um 7:02 Uhr

  • In diesem Zusammenhang Owner ist ungewöhnlich. User ist üblich. Siehe auch man chmod darauf.

    – alk

    24. August 2013 um 12:46 Uhr


  • Um die Bedeutung nicht zu verlieren, würde ich vorschlagen, die Formulierung zu verwenden (owning) User Anstatt von Owner..

    – alk

    24. August 2013 um 13:00 Uhr


  • Übrigens, warum können wir nur sagen – 644, warum wird 0644 benötigt?

    – geschickt

    18. April 2014 um 9:27 Uhr

  • @SHREYASJOSHI In der C-Quelle müssen Sie eine anfängliche Null verwenden, um eine Oktalkonstante anzugeben, andernfalls wird sie als Dezimalkonstante betrachtet. Mit Kommandozeilen-Tools wie chmodkönnen Sie weglassen 0 und chmod wird die Zahl sowieso als Oktalkonstante interpretieren.

    – Luser Drog

    19. April 2014 um 4:42 Uhr

Das bedeutet:

  • Der Eigentümer der Datei kann lesen und schreiben (6)
  • Benutzer in derselben Gruppe wie der Besitzer der Datei können lesen (erste 4)
  • Alle Benutzer können lesen (Sekunde 4)

Sehen http://www.ss64.com/bash/chmod.html.

  • Sehr nützlicher Link @Rafe

    – Felipe Pereira

    9. Februar 2016 um 21:00 Uhr

1227000cookie-checkWas bedeutet mode_t 0644?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy