Nie jest jasne, czy pytasz o zachowanie uprawnień źródłowych czy docelowych. Przesyliłeś również spam do witryny SuperUser.
Tom Shaw
Dla przypomnienia opcje „zachowania” odnoszą się do źródła . cp -pdopasowuje atrybuty docelowe (zachowując w ten sposób) atrybuty źródłowe.
mpersico,
1
Właśnie natknąłem się na tę stronę. cp domyślnie powinien zachować uprawnienia do plików docelowych i user: group, ponieważ otwiera cel w trybie aktualizacji i zachowuje swój i-węzeł. Nie jest więc dla mnie jasne, dlaczego odpowiedzi na to nie wskazują.
Pamiętaj, że uprawnienia roota są potrzebne, jeśli chcesz zachować własność i pracę grupową.
Fragment instrukcji:
--preserve[=ATTR_LIST]
preserve the specified attributes (default: mode,owner-
ship,timestamps), if possible additional attributes: context,
links, xattr, all
Niezupełnie to, czego chciał autor. --no-preservema sens, jeśli zostanie użyty po --preserve(lub jego aliasach), w przeciwnym razie nie wpłynie na zachowanie cp. Autor chciał zachować tryb pliku istniejącego pliku docelowego i nadpisać tylko jego zawartość
basen
Np .: zamień klucze hosta ssh cp --no-preserve=mode,ownership ssh* /etc/ssh/. Dzięki temu tajne klucze są czytelne na całym świecie.
dorzecze
Wyjaśnienie strony podręcznika - zachowaj wyjaśnienie jest niedorzeczne przez IMHO, ponieważ nie wyjaśnia, że zachowuje co: Atrybuty źródła lub celu
Lub możesz użyć jeszcze lepszego programu instalacyjnego z GNU coreutils, który został stworzony do tego konkretnego celu. Pamiętaj, że nie można go powtórzyć (brak opcji -R lub -r).
cp -p
dopasowuje atrybuty docelowe (zachowując w ten sposób) atrybuty źródłowe.Odpowiedzi:
Jeśli tylko otworzyłeś instrukcję dla
cp
...Następny nie zastąpi uprawnień do plików i własności + praca grupowa:
Pamiętaj, że uprawnienia roota są potrzebne, jeśli chcesz zachować własność i pracę grupową.
Fragment instrukcji:
źródło
--no-preserve
ma sens, jeśli zostanie użyty po--preserve
(lub jego aliasach), w przeciwnym razie nie wpłynie na zachowaniecp
. Autor chciał zachować tryb pliku istniejącego pliku docelowego i nadpisać tylko jego zawartośćcp --no-preserve=mode,ownership ssh* /etc/ssh/
. Dzięki temu tajne klucze są czytelne na całym świecie.cat
też będzie działać:źródło
Lub możesz użyć jeszcze lepszego programu instalacyjnego z GNU coreutils, który został stworzony do tego konkretnego celu. Pamiętaj, że nie można go powtórzyć (brak opcji -R lub -r).
http://www.gnu.org/software/coreutils/manual/html_node/install-invocation.html
źródło
W ogóle nie używaj przełączników związanych z uprawnieniami, zwłaszcza
--no-preserve
że zachowuje się dziwnie:dobry:
zły:
źródło
Cp nie zastępują uprawnienia domyślnie. Jeśli chcesz mieć pewność, że pozwolenie nie zostanie zastąpione, użyj
źródło