Pakuję folder z wieloma podfolderami i plikami w systemie Windows za pomocą 7zip, przesyłam do VPS, a następnie uruchamiam polecenie:
tar -xvzf file.tar.gz
wtedy wszystkie rozpakowane pliki i foldery mają uprawnienia 777. Jak mogę je uzyskać, aby foldery miały uprawnienia 755 i pliki 644?
linux
file-permissions
tar
Kaspar L. Palgi
źródło
źródło
Odpowiedzi:
Jeśli pracujesz
tar(1)
jako zwykły użytkownik, zastosuje onumask
domyślnie. Jeśli używasztar(1)
jakoroot
, możesz podać--no-same-permissions
opcję wiersza polecenia, aby poprosićtar(1)
o przestrzeganieumask
.Więc: uruchom to jako zwykły użytkownik:
lub uruchom jako
root
:Może chcesz przykleić
umask 022
do swojej~/.bashrc
,~/.bash_profile
lub~/.profile
. (Szczegółowebash(1)
informacje na temat plików startowych można znaleźć na stronie podręcznika. To skomplikowane).Szczegółowe informacje na
umask
ten temat można znaleźć na stronie podręcznika powłoki, na stronieumask(2)
wywołania systemowego lub na stronieumask(1posix)
narzędzia dostarczonej przez POSIX (jeśli jest jużmanpages-posix
zainstalowany).źródło
Uruchom następujące polecenia w katalogu głównym katalogu, aby ustawić żądane uprawnienia dla katalogów i plików:
Uważaj na przestrzeń między zamykającym nawias klamrowy a tylnym ukośnikiem
źródło
\;
Jeśli użyjesz dużej litery X
chmod
, możesz użyć jej do ustawienia uprawnień do wykonywania tylko dla katalogów. to znaczyźródło
Znalazłem to rozwiązanie, które zadziałało dla mnie. W przypadku folderów i podfolderów:
I dla wszystkich plików (także w folderach i podfolderach):
Wszystkie komentarze są mile widziane, jeśli nie jest to dobry sposób na zrobienie tego. Właśnie zacząłem uczyć się Linuksa.
Po komentarzach bardziej solidnym rozwiązaniem, które ładnie obsługuje znaki specjalne, byłoby:
źródło
the': No such file or directory chmod: cannot access
Logo.txt ': Brak takiego pliku lub katalogu chmod: nie można uzyskać dostępu do `./blog/wp-content/themes/OneRoom/LOGO': Brak takiego pliku lub di777
jest niebezpieczny i ma zastosowanie tylko do bardzo niewielkiej mniejszości systemów.find . -type f -print0 | xargs -0 chmod 644
.-name "*"
Nie jest to konieczne, ixargs(1)
będzie analizować nazw na przestrzeni lub znakami nowej linii , chyba że używasz-0
- który przetwarza nazwy plików na ASCIINUL
znaku, który nie może pojawiać się w nazwach plików.-print0
Dlafind(1)
prosi go sformatować swoje wyjście w trybie odpowiednim doxargs -0
wejścia.odnaleźć . -type f -exec chmod 644 {} \;
źródło