Używasz -664, po prostu użyj 664zamiast tego. I nigdy nie używaj, sudokiedy nie musisz. Jeśli to twój plik, nie potrzebujesz sudo:
chmod 644 my_file
Po uruchomieniu chmodz -przed trybie, można usunąć ten tryb. Zobacz man chmod(moje podkreślenie):
Operator + powoduje, że wybrane bity trybu pliku są dodawane do istniejących bitów trybu pliku każdego pliku; - powoduje ich usunięcie ; i = powoduje ich dodanie i usunięcie niewymienionych bitów, z wyjątkiem tego, że nie ma to wpływu na niewymienione bity identyfikatora użytkownika i grupy w katalogu.
Liczby to:
- 1: wykonaj
- 2: pisz
- 4: przeczytaj
Tak więc plik z 777uprawnieniami oznacza, że każdy ma prawo zrobić wszystkie trzy, ponieważ 1 + 2 + 4 = 7, a zatem ustawienie uprawnień na 7 oznacza umożliwienie odczytu, zapisu i wykonania.
Jeśli zaczynasz od pliku, którego tryb to 777:
$ ls -l my_file
-rwxrwxrwx 1 terdon terdon 0 May 28 13:45 my_file
A teraz uruchom chmod -644, usuniesz bity 644i skończysz na pliku, którego tryb to 133:
$ chmod -644 my_file; ls -l my_file
---x-wx-wx 1 terdon terdon 0 May 28 13:45 my_file
Wynika to z faktu, że usunąłeś 6 (odczyt (4) + zapis (2)) z uprawnień właściciela, pozostawiając tylko 1 (wykonanie) i 4 (odczyt) z grupy oraz innych uprawnień. Rezultatem jest plik z uprawnieniami tylko do wykonania (1) dla właściciela oraz do zapisu i wykonania (cofniesz ustawienie 4, pozostawiając 1 i 3) dla reszty.
Ponieważ plik prawdopodobnie miał domyślne uprawnienia do nowych plików, więc 644po uruchomieniu chmod -644 my_fileusunąłeś wszystkie ustawione bity uprawnień i otrzymałeś plik bez uprawnień dla nikogo.
$ ls -l my_file
-rw-r--r-- 1 terdon terdon 0 May 28 13:45 my_file
$ chmod -644 my_file
$ ls -l my_file
---------- 1 terdon terdon 0 May 28 13:45 my_file
-przed 644? Spróbowaćsudo chmod 644 my_file.-644usunie prawa.