Дозвіл заборонено змінювати gid (групу) файлу, який я маю


17

Здається, я все ще пропускаю деякі речі щодо того, як працюють дозволи. Я перебуваю на системі debian 7 btw. просто зараз у мене є цей файл, який я завантажив, і він належить myuser:myuser, тобто мені призначені і користувач, і група. Він також знаходиться в моєму $HOMEкаталозі, оскільки саме там я його завантажив.

Все йде нормально. Тепер я хочу поділитися цим файлом з деякими іншими користувачами ПК, і для цього я хочу переключити групову власність на файл на групу "користувачів". однак це не вдається:

nass@quarx:~/xmas_carol$ chgrp -R users * 
chgrp: changing group of movie.mov': Operation not permitted

І вміст папки:

-rwxr-xr-x 1 nass nass 2482411461 Feb  6 03:57 movie.mov

Мені нечітко про те, що відбувається з дозволами. Може хтось пояснить


це /xmas_carolсамба / монтування?
Рахул Патіль

Рішення таке setfacl(якщо файлова система має ACL). дивіться unix.stackexchange.com/questions/101263/…
ctrl-alt-delor

У мене була така ж помилка, поки я не зрозумів, що ДОСТУПНО додав себе до цієї групи. Іншими словами, мені довелося вийти, увійти, щоб зміни набрали чинності.
Джонатан

Відповіді:


22

Ваш користувач, ймовірно, не є членом usersгрупи, тому ви не маєте права надавати файл цій групі. Проілюструвати:

$ groups
terdon sudo netdev fuse vboxsf vboxusers

$ ls -l file
-rw-r--r-- 1 terdon terdon 604 Feb  6 03:04 file
$ chgrp users file
chgrp: changing group of ‘file’: Operation not permitted
$ chgrp vboxusers file
$ ls -l file
-rw-r--r-- 1 terdon vboxusers 604 Feb  6 03:04 file

Така поведінка згадується в специфікаціях POSIX :

Лише власник файлу або користувач із відповідними привілеями може змінювати власника або групу файлу.

Деякі реалізації обмежують використання chgrp користувачеві з відповідними привілеями, коли вказана група не є ефективним ідентифікатором групи або одним із додаткових ідентифікаторів групи процесу виклику.

Основна причина цього полягає в тому, що якщо ви не є членом групи, ви не зможете змінювати те, до чого ця група має доступ. Ця відповідь щодо chownдозволів також є актуальною.

Традиційно у спільних системах у вас є usersгрупа, до якої належать усі постійні користувачі, і це основна група кожного користувача. Таким чином, файли створюються у власності usersгрупи, і всі користувачі можуть їх читати.

У будь-якому випадку, оскільки це не так, як налаштовані на сьогодні Debian дистрибутиви, спосіб надати конкретному користувачеві доступ до вашого файлу був би

  1. Змініть групове право власності на файл / каталог на групу, учасниками якої є і ви, і інший користувач;

  2. Просто змініть дозволи файлу / каталогу відповідно:

    $ chmod 755 /home/terdon
    $ ls -ld /home/terdon
    drwxr-xr-x 170 terdon terdon 491520 Apr 20 13:43 /home/terdon/
    

    Це зробить каталог доступним для всіх.


4

У останніх UNICes (і "нещодавні" тут має досить широке значення) ви не можете змінити право власності на файли на групу, до якої ви не є членом. Спадкові версії різних ароматів UNIX підтримували це для випадків використання, таких як ваш, але це виявилося проблемою безпеки.

Проблема можливості змінити право власності на групу на іноземні групи є досить тривіальною: якщо у файловій системі, на якій знаходиться файл, увімкнено групові квоти, користувач із шкідливим наміром може просто заповнити квоту іноземної групи, що робить неможливим для користувачів з цією групою як основним ідентифікатором групи для створення будь-яких подальших файлів. Це може легко вплинути на навіть запущені процеси і призвести до їх загибелі через "повний диск".

Щоб обійти проблему, існує (принаймні) дві можливості: По-перше, ви можете попросити суперкористувача вашої системи додати призначену цільову групу до списку додаткових груп вашого облікового запису. Звичайно, це має обмежений сенс, якщо ви в іншому випадку не маєте відношення до цієї групи.

Інший спосіб, коли не потрібно робити файл для запису у всьому світі, що, звичайно, не бажано, - це використання ACL для надання дозволеній групі дозволу на читання та запис:

$ setfacl -m group:thegroupsname:rwx the_file(s)

вам не потрібно давати Execute (у звичайному файлі) і, ймовірно, не хочете надавати дозвіл на запис.
ctrl-alt-delor

2

Це може бути тому, що встановлений незмінний біт. Отримайте список атрибутів файлів, що працюють

lsattr /path/to/your/file

якщо я з'являється, то встановлюється незмінний атрибут, і ніхто не може змінювати файл (навіть root).

Щоб видалити атрибут, слід запустити як root

chattr -i /path/to/your/file

Щоб побачити більше атрибутів файлової системи, прочитайте підручні сторінки

man chattr
man lsattr

Добре, але з питання, я думаю, запитуючий не має супер прав користувачів, для чого потрібно очистити непорушний прапор (принаймні, на всіх файлових системах, з якими я так довго працював). Крім того, оскільки він щойно витягнув архів, це, мабуть, не проблема, оскільки використаному архіватору знадобиться його встановити (така ж проблема).
Andreas Wiese

0

Якщо ви додали себе до групи лише зараз, не забудьте вийти, увійдіть назад, щоб переконатися, що зміни набули чинності.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.