В чем главное отличие 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 : введите описание изображения здесь


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изменится, как владельцы и группы могут получить доступ к файлу (или вообще могут ли они получить к нему доступ).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.