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

Наивное решение:

git rev-list --all | xargs -n1 git ls-tree --full-name -r --name-only  | sort -u

Это перечисляет все фиксации, затем использует это для списка всех файлов в каждой фиксации. вид дедуплицирует. Только работы для небольшого repos, хотя, как требуется много времени.

Лучшее решение состояло бы в том, чтобы использовать libgit2, чтобы сделать то же, должно быть быстрее, но требует некоторого программирования. Быстрый взлом, который реализует это, может быть найден на GitHub. Это использует pygit2 и является порядком величины быстрее, чем конвейер оболочки выше.

17
06.02.2014, 19:57
4 ответа

Ваш пользователь является, вероятно, не членом 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 полномочия также релевантны.

Традиционно, в общих системах, у Вас есть a 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/
    

    Это сделает каталог доступным для всех.

22
27.01.2020, 19:47

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

lsattr /path/to/your/file

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

Для удаления атрибута, необходимо работать как корень

chattr -i /path/to/your/file

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

man chattr
man lsattr
2
27.01.2020, 19:47
  • 1
    , но от вопроса, я предполагаю корреспондента, не имеет прав суперпользователя, которые необходимо очистить неизменный флаг (по крайней мере, во всех файловых системах, я приезжал так долго). Кроме того, так как он просто извлек архив, это - по всей вероятности не проблема, так как используемый archiver был бы, должен был установить его (та же проблема). –  Andreas Wiese 21.04.2014, 15:54

На недавних UNIC (и «недавний» здесь имеет довольно широкое значение) вы не можете изменить права собственности на группу файлов на группу, членом которой вы не являетесь. Устаревшие версии различных разновидностей UNIX поддерживали это для таких случаев использования, как ваш, но оказалось, что это проблема безопасности.

Проблема возможности смены группового владения на чужие группы довольно тривиальна: если в файловой системе, в которой находится файл, включены групповые квоты, пользователь со злонамеренными намерениями может просто заполнить квоту чужой группы, сделав это Невозможно для пользователей с этой группой в качестве основного идентификатора группы создавать какие-либо дополнительные файлы. Это может легко повлиять даже на уже запущенные процессы и привести к их завершению из-за «переполнения диска».

Чтобы обойти вашу проблему, есть (как минимум) две возможности: во-первых, вы можете попросить суперпользователя вашей системы добавить намеченную целевую группу в список дополнительных групп вашей учетной записи. Конечно, это имеет лишь ограниченный смысл, если вы не имеете никакого отношения к этой группе.

Другой способ избавиться от необходимости делать файл доступным для всеобщей записи, что, конечно же, нежелательно, - это использовать списки управления доступом для предоставления предполагаемой группе прав на чтение и запись:

$ setfacl -m group:thegroupsname:rwx the_file(s)
4
27.01.2020, 19:47

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

2
27.01.2020, 19:47

Теги

Похожие вопросы