Przesyłam pliki na konto powłoki za pomocą scp. Ponieważ potrzebuję innych uprawnień na serwerze niż na moim komputerze, chciałbym mieć sposób na łatwą zmianę uprawnień po przesłaniu bez konieczności ssh na koncie i zmieniania ich ręcznie.
upload
permissions
scp
Florian Mayer
źródło
źródło
Moim preferowanym rozwiązaniem roboczym byłoby użycie
rsync
zamiast tego:Zastąpić:
Z:
Zapobiega to dwukrotnemu uwierzytelnieniu. Istnieje również wiele innych opcji z rsync, które prawdopodobnie zwiększyłyby wartość, taką jak możliwość zachowania właściciela, grupy itp.
źródło
--perms
. wyjaśniaPrzeprowadziłem kilka eksperymentów z scp. W przypadku nowych plików przesyłanych na serwer docelowy pliki mają takie same uprawnienia jak na serwerze źródłowym. Jeśli istniejące pliki zostaną zastąpione na serwerze docelowym, uprawnienia do tych plików nie ulegną zmianie.
Przeprowadziłem te eksperymenty z CentOS 4.6.
źródło
Możesz to zrobić za pomocą tar, ssh i umask w następujący sposób:
na hoście 1:
na hoście 2:
Możesz upuścić przełączniki -v na tar, które tu zawarłem, abyś mógł zobaczyć, jak pliki są dzielone na host1 i wysyłane przez STDOUT (aka. -), a następnie usuwane z tar-hosta na host2.
UWAGA: Dlaczego to działa? Domyślnym zachowaniem Tar jest rozpakowywanie plików za pomocą umask użytkownika zdalnego. W powyższym przykładzie zawarłem polecenie umask, aby jawnie ustawić go na coś innego, co pokazuje, że zdalna tar zmienia uprawnienia po stronie zdalnej.
źródło
umask
tylko uprawnienia odejmujące, np. Dla pliku lokalnego, w700
którym nie można uzyskać pliku755
na serwerze docelowym, czy się mylę?--no-same-permissions
drugiegotar
użycia, jeśli użytkownik docelowy jest rootem, patrz superuser.com/a/383801/89031umask
cały zestaw plików zapisywanych na zdalnym serwerze. Nie ma indywidualnej kontroli dla różnych plików. Często tego używam, ponieważ chcę pozbawić uprawnienia, które były OK na moim laptopie, na przykład podczas kopiowania do zdalnego wdrożenia.--no-same-permissions
jest to również poprawne wedługtar
strony podręcznika man. Zmieniłem podpowiedzi w moim przykładzie, więc nie ma co do tego wątpliwości.Napisałem mały skrypt dla zadania w Pythonie. Możesz zrobić skrypt w python script.py -p o + r niektóre pliki / dir / on / the / server /
źródło
Sugerowałbym skonfigurowanie lepkiego bitu w folderze, aby pliki przesyłane w tym folderze automatycznie otrzymały to uprawnienie.
„1” użyte powyżej ustawia lepki bit.
więc musisz tylko przesłać jedną i nie musisz później uruchamiać innej komendy.
źródło
Zakładając, że przesyłasz do wariantu UNIX, uważam, że uprawnienia powinny być zgodne z ustawieniami UMASK. Nie przypominam sobie z góry głowy, które pliki kropkowe są przetwarzane dla SCP, ale jeśli ustawisz UMASK w jednym z tych plików, które utworzysz, będzie miał ustawione uprawnienia na podstawie tego. Prawdopodobnie zależy to od powłoki używanej w systemie zdalnym.
Cokolwiek robisz, nie używaj opcji -p, ponieważ robi to dokładnie odwrotność tego, co chcesz.
źródło