So legen Sie Dateiberechtigungen mit dem Befehl touch fest

16

Es scheint, dass, wann immer ich eine Datei mit touchden Berechtigungen erstelle, festgelegt sind auf: -rw-r - r-- .

Gibt es eine Möglichkeit, mit der ich die Berechtigungen konfigurieren kann touchoder muss dies mit einem anderen Befehl erfolgen?

Chackerian
quelle

Antworten:

27

Sie können Ihre ändern umask, um (für die meisten Implementierungen) mehr Lese- / Schreibrechte zuzulassen, die jedoch nicht ausführbar sind, da im Allgemeinen die angeforderten Berechtigungen vorliegen 0666.

Wenn dies der Fall umaskist 022, wird toucheine 0644Datei erstellt.

Interessanterweise beschreibt POSIX dieses Verhalten in Bezug auf creat:

  1. Wenn die Datei nicht existiert:

    Die Funktion creat () wird mit folgenden Argumenten aufgerufen:

    • Der Dateioperand wird als Pfadargument verwendet.

    • Der Wert des bitweise-inclusive OR von S_IRUSR, S_IWUSR, S_IRGRP, S_IWGRP, S_IROTH, und S_IWOTHwird als Argument Modus verwendet.

und nur durch Verfolgen der Links zu creat, dann zu open, Feststellen der Erwähnung umaskund Zurückverfolgung zu open(und creat), um zu überprüfen, ob dies umaskAuswirkungen haben soll touch.

Um umasknur den touchBefehl zu beeinflussen , verwenden Sie eine Subshell:

(umask 066; touch private-file)
(umask 0; touch world-writable-file)
touch file-as-per-current-umask

(Beachten Sie, dass in jedem Fall, wenn die Datei zuvor vorhanden war, touchdie Berechtigungen nicht geändert werden, sondern nur die Zeitstempel aktualisiert werden.)

Thomas Dickey
quelle
2

Sie können das manipulieren umask. Im Allgemeinen ist es auf , 022was bedeutet , wenn ein Benutzer eine Datei erstellt, wird es Erlaubnis bekommen 0644, können Sie manipulieren umasknach Ihren Bedürfnissen.

TarunSinghal
quelle