'chmod -644' установит для файла разрешение 000

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

sudo chmod -664 my_file

права доступа к файлу были установлены на 000 (----------) .

Попытка изменить разрешения на что-либо отличное от 000, похоже, не работает. Что мне здесь не хватает?

12
задан 30 May 2019 в 08:15

1 ответ

Вы используете -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 (чтение) из группы и другие разрешения. В результате получается файл с правами только на выполнение (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
0
ответ дан 30 May 2019 в 08:15

Другие вопросы по тегам:

Похожие вопросы: