У чому головна відмінність chmod від chown?


43

У деяких прикладах я бачив, що деякі використовували chownзамість chmod. Я не знаю, де chmodі чим користуватися chown. Будь ласка, поясніть мені різницю між ними, коли і чому я повинен використовувати будь-який.


18
Нічиї зробив це явно ще: один год ANGES в модах е й інший ч ANGES на власний ер. Також читайте людину уалу.
Зупиніть шкодити Моніці

1
І хоча chownможе також сп Ange про гр НУ р , там chgrpприсвячені саме цьому завданню.
Зупиніть шкодити Моніці

6
У чому головна відмінність банана від стільця? Не сиди на банані.
Шадур

Відповіді:


48

Створимо файл

touch rainbow

Давайте подивимось на метадані файлу

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

Перша частина інформації - це тип файлу ( -на початку означає, що це звичайний файл) та біти дозволу

Після цього ми бачимо власника (zanna) та групи (zanna). Ми можемо використовувати 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(що на сьогоднішній день занадто широке питання), моя відповідь буде продовжуватися назавжди. Намагаючись зробити це просто
Занна

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

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.