Чому 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, але немає шансів змінити власника файлів.