У меня был файл с 644 (-rw-r--r--
) и я хотел изменить его на 664 (-rw-rw-r--
), после запуска:
sudo chmod -664 my_file
права доступа к файлу были установлены на 000 (----------
) .
Попытка изменить разрешения на что-либо отличное от 000, похоже, не работает. Что мне здесь не хватает?
Вы используете -664
, просто используйте 664
вместо этого. И никогда не используйте sudo
, когда вам это не нужно. Если это ваш файл, вам не нужно sudo
:
chmod 644 my_file
Когда вы запускаете chmod
с -
перед режимом, вы удалите этот режим. См. man chmod
(выделено мной):
Оператор + вызывает добавление выбранных битов режима файла к существующим битам режима файла каждого файла; - вызывает их удаление ; и = вызывает их добавление и приводит к удалению безымянных битов, за исключением того, что неизменяемые установленные пользователем биты каталога и биты идентификатора группы не затрагиваются.
blockquote>Числа:
- 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