Wann ist umask() nützlich?
umask(0);
fd = open("/dev/null", O_RDWR);
Hier man 2 umask
:
umask() sets the calling process’s file mode creation mask (umask) to mask & 0777.
Aber es macht keinen Sinn für mich,als wenn wir nennen open
wir bieten auch einen Modus-parameter.
Also, was ist der Punkt, der umask
?
Mögliche Duplikate von Warum würdest du mit umask?
InformationsquelleAutor cpuer | 2011-06-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die umask wird für alle Modi verwendet in file-system-Operationen. Aus dem Handbuch
open(2)
:So können mit einem einzigen Aufruf von umask, können Sie Einfluss auf die mode von allen Dateien erstellen.
Dies ist in der Regel verwendet, wenn ein Programm möchte, dass die Benutzer damit zu übersteuern der Standard-Zuschüsse für Dateien/Verzeichnisse, die Sie erstellt. Eine paranoide Benutzer (oder root) können die umask zu
0077
was bedeutet, dass, auch wenn Sie0777
imopen(2)
, wird nur der aktuelle Benutzer Zugriff haben.777
ist,kann niemand ändern Sie es dann?scheint
open
können auch aufgerufen werden, ohne diemode
parameterint open(const char *pathname, int flags);
,was wird die Berechtigung von Dateien erstellt in diesem Fall?Ja. Macht nicht viel Sinn, aber nichts hält dich davon ab, Dateien zu erzeugen, dass Sie können nicht auf sich selbst. Eigentlich nutze ich das zu stoppen, Programme zu erstellen/ändern, die unerwünschte Dateien und Ordner mit
chmod 0 .configdir
wieder öffnen ohne Modus: Das hängt von Ihrem Unix System. Auf meinem Linux -, müssen Sie angeben, Modus wenn Sie
O_CREAT
. Einige UNIX-Varianten bauen Sie den Modus aus der Modus der Ordner in dem die neue Datei. Für details, Lesen Sie die Dokumentation.InformationsquelleAutor Aaron Digulla
Ich weiß, dies ist eine alte Frage, aber hier ist meine zwei Cent:
Berechtigungen des shared memory-Objekts
War ich versucht zu machen, ein shared-memory-Objekts, mit:
Den daraus resultierenden gemeinsam genutzten Speicher haben nicht die Berechtigung im Modus-argument, so lese ich den shm_open Mann-Seite, die führte mich zu der open-Funktion Mann Seite und dort heißt es:
Also habe ich versucht, ändern Sie den umask mit:
aber es hat nicht funktioniert entweder, so nach mehr google fand ich diese Berechtigung Festlegen Dokument in gnu.org
Empfiehlt:
und mit fchmod meine Funktion arbeitete wie ich es wollte 🙂 Sie ist es:
Sie können nur wollen, zu nennen, fchmod nur auf die Schaffung von shared memory (versuchen, zu öffnen mit RDWR, dann check errno for ENOENT, dann tun Sie, O_RDWR|O_CREAT und fchmod), als Sie nicht fchmod anderen Benutzer, die den freigegebenen Speicher auch mit den 777 Berechtigungen. Andernfalls, wenn Sie versuchen, öffnen Sie ein shared-memory-Objekt von einem anderen Benutzer angelegt, Sie erhalten einen berechtigungsfehler.
InformationsquelleAutor q325mg
Unter Berufung auf dieser Artikel:
umask
ist es nicht schon vorhanden in die parameter deropen
?Das zweite argument von
open
gibt den Modus für das öffnen der Datei, d.h. die Operationen werden auf die zurückgegebene Deskriptor.umask
, auf der anderen Seite, legt den Dateisystem-Berechtigungen festgelegt werden werden für jede neu erstellte Datei.Buyukliev,ist das nicht auch verfügbar?
int creat(const char *pathname, mode_t mode);
creat
ist alt, veraltet, Weg, um erstellen Sie eine neue leere Datei. Es ist das gleiche wieopen
mit der FlaggeO_CREAT
.Buyukliev,ich meine,entweder
creat
oderopen
hat Ihre parameter fürmode
undflag
,umask
scheint immer noch nutzlos für mich.InformationsquelleAutor Blagovest Buyukliev
Meisten Mac-Entwickler (und durch Verlängerung die meisten software Tester), aus der Zeit, als Sie Babys waren, setzen Sie diese in Ihre .cshrc
Jedoch die meisten Benutzer nicht wissen, über umask, also, wenn Sie einen neuen Benutzer erstellen auf der Maschine, und führen Sie Ihre app, sind Sie wahrscheinlich zu erstellen Sie eine Reihe von log-Dateien und so weiter ohne Gruppe Lesen/schreiben von Berechtigungen.
Dann schalten Sie die Benutzer wieder und plötzlich Ihre app funktioniert nicht.
Aus diesem Grund, fügen wir diese für alle unsere apps.
Unsere Regel-of-thumb, wenn es um Sicherheit geht, ist, dass "wir möchten, dass Benutzer in der Lage sein, unsere software zu nutzen".
InformationsquelleAutor Keith Knauber