'chmod -644' встановить дозвіл файлу на 000


12

У мене був файл з 644 ( -rw-r--r--) і хотів змінити його на 664 ( -rw-rw-r--), після запуску:

sudo chmod -664 my_file

для дозволів файлів було встановлено 000 ( ----------).

Спроба змінити дозволи на щось інше, ніж 000, здається, не працює. Що я тут пропускаю?


11
Чому у вас -перед 644? Спробуйте sudo chmod 644 my_file. -644вилучить права.
Soren A

Відповіді:


34

Ви використовуєте -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 (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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.