2017-06-03 2 views
0

Ich versuche herauszufinden, was der mode Parameter von setfmode() ist, die schließlich von aufgerufen wird.Modus Parameter in Chmod?

Wenn ich es ausdrucken und etwas tun wie chmod +t test.txt wird "33700" ausgedruckt. Wenn ich das tue, wird chmod +w test.txt "33252" ausgedruckt.

Gibt es eine Möglichkeit zu sehen, welche spezifischen Bits mit diesen Zahlen gesetzt werden?

Antwort

2

Eine vollständige Beschreibung der Berechtigungsbits finden Sie auf der FreeBSD-Handbuchseite unter https://www.freebsd.org/doc/handbook/permissions.html. Beachten Sie, dass die Abbildungen der Berechtigungsbits im Oktalformat sind.

Suchmaschinen sind deine Freunde - ich suchte nach "FreeBSD Erlaubnisbits" und fand sofort den obigen Link als das erste zurückgegebene Ergebnis.

Von Chat:

„Ich versuche, wenn der Benutzer die Sticky-Bit-Einstellung ist zu erfahren, so in setfmode() Ich denke, ich werde bitweise und der Modus-Variable mit der Sticky-Bit-Konstante, dann überprüfen, ob das das sticky-Bit-konstante“

Das sticky-Bit ist oktal 1000 gleich - siehe the FreeBSD chmod man page Um Zahlen in oktal in C zu schreiben, setzen Sie vor den Wert mit einem 0, so vorausgesetzt, Ihr Moduswert wird in einer variablen namens mode, tun (mode & 01000). Wenn dieser Wert Null ist, wird das Sticky-Bit nicht gesetzt, wenn es nicht Null ist (d. H. 01000), wird das Sticky-Bit gesetzt.

Mark: „Ok mein Scheck scheint zu funktionieren - if ((mode & S_ISTXT) == S_ISTXT)

+0

ich aufblickte, aber ich kann nicht herausfinden, warum eine 5-stellige Nummer gedruckt wird. Kannst du mir bitte helfen zu verstehen? – MarksCode

+0

Wie drucken Sie die Berechtigungsbits? – FKEinternet

+0

'printf ("% i ", Modus)' – MarksCode