Отказано в праве на изменение gid (группы) файла, которым я владею


17

Похоже, я все еще скучаю по тому, как работают разрешения. Я в системе Debian 7, кстати. только сейчас у меня есть этот файл, который я скачал, и он принадлежит 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_carolsamba / nfs монтируется?
Рахул Патил

Решение есть 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

если я появляюсь, то атрибут immutable устанавливается, и никто не может изменить файл (даже root).

Чтобы удалить атрибут, вы должны запустить от имени пользователя root

chattr -i /path/to/your/file

Чтобы увидеть больше атрибутов файловой системы, прочитайте справочные страницы

man chattr
man lsattr

Хороший вопрос, но из вопроса я полагаю, что спрашивающий не имеет прав суперпользователя, что необходимо для очистки флага неизменяемости (по крайней мере, на всех файловых системах, которые я использовал так долго). Кроме того, поскольку он только что извлек архив, это, скорее всего, не проблема, поскольку использованный архиватор должен был бы установить его (та же проблема).
Андреас Визе

0

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

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