Відповіді:
Ви використовуєте -664
, просто використовуйте 664
замість цього. І ніколи не використовуйте, sudo
коли вам цього не потрібно. Якщо це ваш файл, вам не потрібно sudo
:
chmod 644 my_file
Якщо запустити chmod
з -
режимом до, ви виймете цей режим. Дивіться man chmod
(наголос мій):
Оператор + викликає додавання вибраних бітів режиму файлів до існуючих бітів режиму файлів кожного файлу; - викликає їх видалення ; і = спричиняє їх додавання і видаляє невідомі біти, за винятком того, що невказані біти ідентифікатора користувача та групи ідентифікаторів каталогу не впливають.
Цифри:
Отже, файл з 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 (read (4) + write (2)) з дозволів власника, залишивши лише 1 (Execute) набір і 4 (read) з групи та інші дозволи. Результатом є файл з дозволом на виконання (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
вилучить права.