Чому chown
команда працює лише корінь? Чому не-користувачі не можуть використовувати програму chown, щоб передавати їм власні файли?
chown
для видачі власних файлів. (Я бачив системи, де, залежно від конфігурації файлової системи, ви можете.)
Чому chown
команда працює лише корінь? Чому не-користувачі не можуть використовувати програму chown, щоб передавати їм власні файли?
chown
для видачі власних файлів. (Я бачив системи, де, залежно від конфігурації файлової системи, ви можете.)
Відповіді:
Більшість систем Unix забороняють користувачам «віддавати» файли, тобто користувачі можуть запускатись лише у chown
випадку, якщо вони мають цільові права користувача та групи. Оскільки для використання chown
потрібно володіти файлом або мати root (користувачі ніколи не можуть присвоювати файли інших користувачів), тільки root може запускатися, chown
щоб змінити власника файлу на іншого користувача.
Причиною цього обмеження є те, що передача файлу іншому користувачеві може призвести до того, що погані речі трапляються в нечастому, але все ж важливому випадку. Наприклад:
chown
щоб зробити цей файл власником іншого користувача Білла. Файл тоді зараховуватиметься до дискової квоти Білла, навіть якщо тільки Аліса може використовувати цей файл./bin/bash
, налаштувати його, а потім chown
передати його кому хоче. Тепер вони мають доступ до оболонки як ця людина.
chown
завжди очищає встановлені та встановлені жорсткі біти.
drwxr-xr-x ring0 ring0 .
), у якому root має звичайний файл ( -rw-r--r-- root root file
), чому я не можу це зробити, chown ring0 file
оскільки це все одно дозволено робити, як ring0
, cp file x ; rm file ; mv x file
(і деякі необов'язкові touch sometime file
...)?
В Linux вам потрібна можливість CAP_CHOWN, щоб подати клопот. root наданий такий. Зверніться до: http://vouters.dyndns.org/tima/Linux-OpenVMS-C-Implementing_chown.html для пояснень. Якщо ви маєте намір надати можливість CAP_CHOWN, створіть свій код за допомогою libcap-ng або libcap, як це продемонструвало: http://vouters.dyndns.org/tima/Linux-PAM-C-Pluggable_Authentication_Modules_programming_example.html там, де вам потрібно просто замінити CAP_AUDIT_WRITE з CAP_CHOWN.
Ви можете запустити команду, але вона не працюватиме, якщо ви не root. Це легко: уявіть користувача, який може змінити програмне забезпечення на root користувача. Він може додати встановлений біт і, voilà, хлопець root! Отже, використання може додати біт із chmod, але немає шансів змінити власника файлів.