Próbuję znaleźć standardowy sposób POSIX do duplikowania uprawnień jednego pliku do innego pliku. W systemie GNU jest to łatwe:
[alexmchale@bullfrog ~]$ ls -l hardcopy.*
-rw-r--r-- 1 alexmchale users 2972 Jul 8 20:40 hardcopy.1
---------- 1 alexmchale users 2824 May 14 13:45 hardcopy.4
[alexmchale@bullfrog ~]$ chmod --reference=hardcopy.1 hardcopy.4
[alexmchale@bullfrog ~]$ ls -l hardcopy.*
-rw-r--r-- 1 alexmchale users 2972 Jul 8 20:40 hardcopy.1
-rw-r--r-- 1 alexmchale users 2824 May 14 13:45 hardcopy.4
Niestety flaga --reference na chmod jest niestandardową opcją. To jest moje przeznaczenie. Wolałbym, aby był to jeden liniowiec, ale nie jest to konieczne. Ostatecznie musi być w składni sh POSIX.
command-line
unix
chmod
posix
Alex
źródło
źródło
cp has template
, powinno zostać użytecp -p
do zachowania atrybutów trybu i własności.cp
przypadku, gdy właściciel / grupa pliku (np. „użytkownik”) różni się od tego, który wykonuje kopiowanie (np. root).cp -p
niej.Możesz użyć
stat
polecenia, aby uzyskać uprawnienia do pliku:Składnia Mac OS X (BSD):
Składnia systemu Linux (niepewna):
` Symbolem jest backquote.
źródło
stat
jest to wymagane przez POSIX. Często nie jest dostępny.Do tego celu można użyć narzędzi ACL getfacl i setfacl , ale nie wiem, czy to wystarczająco zgodne z POSIX. Działa przynajmniej w FreeBSD 8.0 i Linux, ale z drugiej strony może być konieczne zainstalowanie narzędzi ACL.
Ze strony podręcznika:
Myślę, że getfacl i setfacl mogą również obsługiwać standardowe uprawnienia do plików oprócz list ACL.
źródło
cp -p
zachowa uprawnienia do plików.źródło
-p
) działa na jakie pragnienia OP, który ma powielać uprawnienia dla innego pliku, a nie duplikatu pliku.Jeden przenośny, prosty sposób nie jest standardowym narzędziem - należy wywołać stat () w pliku szablonu, a następnie chmod () w plikach docelowych. Oznacza to używanie języka takiego jak C lub innego powszechnie używanego języka, takiego jak Perl.
Uprawnienia dostępu do pliku są określone w elemencie struct stat st_mode przez 0007777 bitów. Rozwiązanie Dennisa jest poprawne, jeśli jest nieco obciążone we / wy, więc w przypadku naprawdę dużych plików może się nie powieść:
Rozważ ten nieprzygotowany do produkcji przykład:
źródło