Вы используете -664
, просто используйте 664
вместо этого. И никогда не используйте, sudo
когда вам это не нужно. Если это ваш файл, вам не нужно sudo
:
chmod 644 my_file
Когда вы запускаете chmod
с -
перед режимом, вы удалите этот режим. Смотрите man chmod
(выделение мое):
Оператор + вызывает добавление выбранных битов режима файла к существующим битам режима файла каждого файла; - вызывает их удаление ; и = вызывает их добавление и приводит к удалению не упомянутых битов, за исключением того, что неизменяемые установленные пользователем биты каталога и идентификаторы группы не затрагиваются.
Числа:
- 1: выполнить
- 2: написать
- 4: читать
Таким образом, файл с 777
разрешениями означает, что каждый имеет право делать все три, поскольку 1 + 2 + 4 = 7, и, следовательно, установка разрешений на 7 означает разрешение на чтение, запись и выполнение.
Если вы начинаете с файла, режим которого 777
:
$ ls -l my_file
-rwxrwxrwx 1 terdon terdon 0 May 28 13:45 my_file
А теперь запустите chmod -644
, вы удалите биты 644
и получите файл, режим которого 133
:
$ chmod -644 my_file; ls -l my_file
---x-wx-wx 1 terdon terdon 0 May 28 13:45 my_file
Это связано с тем, что вы удалили 6 (чтение (4) + запись (2)) из разрешений владельца, оставив только 1 (выполнить) набор и 4 (чтение) из группы и другие разрешения. В результате получается файл с правами только для execute (1) для владельца, а для записи - для остальных и оставляющих (4, 1 и 3) разрешения на запись и выполнение.
Поскольку ваш файл предположительно имел разрешения по умолчанию для новых файлов, поэтому 644
при запуске chmod -644 my_file
вы удалили все установленные биты разрешений и получили файл без каких-либо разрешений.
$ 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
-
перед 644? Попробуйsudo chmod 644 my_file
.-644
удалит права.