Podczas tworzenia katalogów mkdir -m <mode> <dir>
przewiduje utworzenie jednego lub więcej katalogów z danym ustawionym trybem / uprawnieniami (atomowo).
Czy w wierszu polecenia istnieje odpowiednik tworzenia plików?
Coś podobnego do:
open("file", O_WRONLY | O_APPEND | O_CREAT, 0777);
Czy użycie touch
następuje po chmod
mojej jedynej opcji tutaj?
Edycja: Po wypróbowaniu sugestii teppica, przejrzałem install
ją, strace
aby zobaczyć, jak blisko jest atomu. Odpowiedź brzmi: niezbyt:
$ strace install -m 777 /dev/null newfile
...
open("newfile", O_WRONLY|O_CREAT|O_EXCL, 0666) = 4
fstat(4, {st_mode=S_IFREG|0666, st_size=0, ...}) = 0
...
fchmod(4, 0600) = 0
close(4) = 0
...
chmod("newfile", 0777) = 0
...
Mimo to jest to jedno polecenie powłoki, którego wcześniej nie znałem.
shell
permissions
files
Kwornian
źródło
źródło
install
install
, więc-m 755
nie jest potrzebny.touch
zawsze tworzy plik, jeśli nie istnieje, zawsze podąża za dowiązaniami symbolicznymi i zawsze powoduje, że plik nie jest wykonywalny. Możesz decydować o czytaniu i zapisywaniu bitów przez umask .„Bezpieczne” tworzenie plików atomowych (w szczególności za pomocą
O_NOFOLLOW
) nie jest możliwe w przypadku tradycyjnych narzędzi powłoki. Możesz używaćsysopen
w perlu. Jeśli maszmktemp
narzędzie inspirowane BSD , tworzy on plik atomowoO_NOFOLLOW
; będziesz musiał zadzwonićchmod
później, jeśli domyślny tryb 600 nie jest odpowiedni.źródło
touch
miał opcję tworzenia plików wykonywalnych, właśnie o to mi chodzi. Następnieumask
można go użyć do dostosowania szczegółów. Niestety nie ma sposobu, zumask
itouch
do tworzenia plików wykonywalnych.touch
a następniechmod +x
.Mam skrypt bash w moim katalogu domowym
/home/anthony/touchmod.sh
zawierający:Więc jeśli muszę utworzyć
readme.txt
z uprawnieniami 644, mogę wpisać:źródło