В чем главное отличие chmod от chown?

43

В некоторых примерах я видел, что некоторые использовали chownвместо chmod. Я не знаю, где использовать chmodи chown. Пожалуйста, объясните мне разницу между ними, когда и почему я должен использовать либо.

саравана кумар кандасами
источник
18
Ничьи сделал это явно еще: один ч ANGES в модах е и другой ч ANGES на собственный эр. Кроме того , читать человек UAL.
Стоп Harm Моника
1
И хотя chownможет также сп Ange о гр НУ р , там chgrpпосвящены именно этой задаче.
Стоп Harm Monica
6
В чем главное отличие банана от стула? Не садись на банан.
Шадур

Ответы:

48

Давайте создадим файл

touch rainbow

Давайте посмотрим на метаданные файла

$ ls -l rainbow
-rw-rw-r-- 1 zanna zanna 0 May 24 10:09 rainbow

Первая часть информации - это тип файла ( -в начале означает, что это обычный файл) и биты прав доступа.

После этого мы видим владельца (занну) и группу (занну). Мы можем использовать chownкоманду, чтобы изменить это:

$ sudo chown pixie rainbow
$ ls -l rainbow
-rw-rw-r-- 1 pixie zanna 0 May 24 10:09 rainbow

И мы используем, chmodчтобы изменить биты разрешения

$ sudo chmod 333 rainbow
$ ls -l rainbow
--wx-wx-wx 1 pixie zanna 0 May 24 10:09 rainbow

Поскольку биты прав доступа устанавливаются отдельно для владельца, группы и других, вы можете управлять правами доступа к файлам для разных пользователей, комбинируя chownи chmod. См. Это краткое руководство для ускоренного курса по разрешениям в Linux.

Занна
источник
1
+1 для изображения .. Нет восьмеричной защиты, хотя? Или chmod a+wпример? Что занимает много времени, но я получаю больше голосов: D
WinEunuuchs2Unix
2
@ WinEunuuchs2Unix хаха спасибо ... Я сознательно выбрал особо бесполезную настройку разрешений. Если я действительно начну объяснять, когда и зачем использовать каждую возможную перестановку chmodи chown(что является слишком широким вопросом на данный момент), мой ответ будет продолжаться вечно. Попытка сделать это простым
Zanna
96

Простой термин chownиспользуется для изменения владельца файла, а chmodдля изменения битов режима файла.

  • chown определяет, кому принадлежит файл.
  • chmod определяет, кто может что делать

Когда вы делаете кого-то владельцем файла, он может делать почти везде, где он хочет этот файл, например, он может использовать его chmodдля изменения его модов (скажем, разрешений), чтобы определить, кто что может делать.

$ ls -l file
-rwxrwxr-x  2  ravexina admins   26 May  9 12:49 file

В приведенной выше строке мы видим, что ravexinaэто владелец файла и adminsгруппа. Я могу использовать: sudo chown dave:sudo fileчтобы изменить владельца файла на daveи группу на sudo; Теперь файл принадлежит «dave» и всем в группе «sudo».

Однако с помощью chmodмы определяем, кто может делать что? кто имеет право читать файл, писать в файл или выполнять его. например:

chmod 777 file

дает права на чтение, запись и выполнение всем, включая владельца, группу и всех остальных.

От turnoff.us : введите описание изображения здесь

Ravexina
источник
1
Владелец не может делать с файлом все, что хочет - для удаления или перемещения требуются разрешения на запись в содержащий каталог.
Муру
2
@muru, это правда;) Я имел в виду чтение / запись / exec, есть также, chattrчто может повлиять на файл, я думаю.
Равексина
1
@KamilMaciorowski Вы знаете это, я знаю, Равексина знает это, но большинство людей не знают.
Муру
2
@KamilMaciorowski Я не просил тебя притворяться. Вам не хватает того, что большинство людей не думают об удалении или переименовании файла как о операциях с каталогом, а как о операциях с файлом. Вот почему у нас есть такие вопросы: superuser.com/q/373115/334516 , unix.stackexchange.com/q/48579/70524 , askubuntu.com/q/240424/158442 Очевидно, вы знаете, что это операции над каталогом (поздравления !), но существует распространенное заблуждение по этому поводу, поэтому я заметил, что переименование или удаление связаны с разрешениями для каталога, а не для файла. ...
Муру
1
@KamilMaciorowski ... Этот вопрос задан пользователем, который не знает разницы между chmod и chown, поэтому мне кажется разумным, что они не знают, что для переименования файла потребуются разрешения для каталога.
Муру
19

При рассмотрении прав доступа к файлу (или каталогу, или какому-либо другому) есть два фактора:

  • кто владеет файлом - пользователь и группа, и
  • что они могут с этим делать - читать, писать, выполнять или их комбинацию.

chownимеет дело с кем . chmodимеет дело с чем . Вы не можете использовать один вместо другого.

Простые разрешения Unix классифицируют пользователей, пытающихся получить доступ к файлу, на три типа:

  1. владелец файла
  2. пользователи, которые являются членами группы, владеющей файлом
  3. все остальные

chownиспользуется для изменения первых двух. chmodиспользуется для изменения прав, предоставленных этим типам.

Мур
источник
7

Несколько пунктов / советов, чтобы добавить к предыдущим отличным ответам:

  • Вы должны иметь разрешение на выполнение для каталога (и всех вышеупомянутых) для доступа к нему
  • Используйте опцию -R, чтобы применить изменения рекурсивно ко всему, включая и ниже цели, например chown -R www-data files/
  • Вы можете изменить пользователя и группу одновременно, используя синтаксис chown user:group myfile
  • Часто проще / лучше использовать опции «+» и «-», а не устанавливать абсолютные права доступа, особенно при работе с комбинацией файлов и каталогов. Например, если вы хотите дать групповым разрешениям на запись в каталог и все, что находится под ним, chmod -R 775 files/файл '/ / и все, что находится внутри и под ним, будут исполняемыми и доступными для чтения всем, что может быть нежелательным результатом для каждого файла. Использование chmod -R g+w files/просто добавит разрешение на запись группы, не затрагивая ничего другого.
Джеймс-Гелдарт
источник
6

Очень хорошие ответы уже, но я хотел бы внести свой вклад, где разрешения очень легко понять

chmod u=r+w,o=r-w,g=-r-w test.php

u = user
o = other
g = group

Таким образом, вы можете легко добавлять права доступа к файлу. В приведенном выше примере

user = read + write
other = read but not write
group = not read not write

И не забывайте, -Rесли вы хотите изменить разрешения рекурсивно.

Адам
источник
1

chownИзменит, кому принадлежит файл и к какой группе он принадлежит, а также chmodизменится, как владельцы и группы могут получить доступ к файлу (или вообще могут ли они получить к нему доступ).

Бруно Фингер
источник