newgrp и группы присвоены через pam_group.so

К сожалению, я думаю, что Вы вполне завинчены. Если Вы только смешали с таблицей разделов затем, TestDisk является Вашим лучшим выстрелом, но так как Вы изменяли размер (который на самом деле означает копировать и возможно даже удалять), Ваши данные, более или менее, повреждаются.

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

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

0
21.06.2011, 15:16
2 ответа

newgrp только предоставляет Вам доступ к группе, к которой у Вас уже есть доступ. Бесполезные звуки? В основном, да. Это - главным образом остаток со дней, когда процесс не мог быть членом нескольких групп. Можно также получить доступ к группе, это защищено паролем, но это чрезвычайно необыкновенно используется.

С точки зрения ядра каждый процесс находится в одной или нескольких группах. setgid может только использоваться при выполнении в качестве корня или в setgid программах (для свопинга между реальным (выполненный-) и эффективный (выполненный как) группы). Ядро не знает о базах данных группы и пользователе.

Пользователь и базы данных группы (/etc/passwd, /etc/group, /etc/security/group.conf, LDAP, …), управляются login, su и другие программы, которые справляются с логинами и расширением полномочий, часто через PAM. Когда Вы входите в систему, Вы присвоены группам, перечисленным в /etc/passwd, /etc/group, и другие файлы через pam_groups; процесс похож на это:

gid_t groups[…] = /*extra GIDs computed from /etc/group and so on*/;
setgroups(sizeof(groups)/sizeof(gid_t), groups);
setgid(gid); /*main GID read from /etc/passwd*/
setuid(uid);
execve(shell, "-sh"); /*shell read from /etc/passwd*/

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

Если Вы только что добавили пользователя к группе, это вступит в силу в следующий раз, когда пользователь входит в систему. При запуске другой сессии путем входа в систему в другом терминале или по ssh процессы на той сессии будут иметь любые группы пользователь был в том, в то время, когда Вы вошли в систему. Можно использовать groups или id команда для наблюдения, что группы Вы (значение конкретного процесса Вы запустились groups от), член.

Так, я ответил на Ваши явные вопросы (newgrp делает его задание, которое не является тем, что Вы думали). Я могу или не мог решить Вашу проблему. Это необычно для приложений, которые не регистрируют Вас в искать базы данных группы и пользователь; обычно права доступа были бы решены путем проверки, является ли процесс запроса членом соответствующей группы. Если Вы имеете проблему с конкретным приложением, говорите нам который.

3
28.01.2020, 02:17
  • 1
    newgroup не работает на группы, присвоенные через pam_group.so, как я уже записал в своем вопросе, который является, почему там другое поведение newgroup на тех группах, присвоенных через pam_group.so и шланг, присвоенный через/etc/groups или ldap. –  Sven Geggus 21.06.2011, 15:48
  • 2
    @Sven: Вы имели в виду newgrp в Вашем комментарии? Если так, я только что сказал Вам, что это не полезно так или иначе. Безотносительно проблемы Вы имеете, newgrp не решение. –  Gilles 'SO- stop being evil' 21.06.2011, 15:51
  • 3
    Shure, я имел в виду newgrp. Я подозревал, что проблема была, что необходимая группа не является моей основной группой. Вот почему я попытался использовать newgrp и наткнулся на проблему, что newgrp потребовал пароля. Тем временем я выяснил, что регистрация состава группы davfs2 повреждается. Патч для специалистов по обслуживанию продвигается :) Спасибо за Вашу справку так или иначе –  Sven Geggus 21.06.2011, 18:41

Причина newgrp не может измениться, группы в Ваших случаях то, что она использует getgrent, чтобы определить, являетесь ли Вы членом требуемой группы; посмотрите функцию find_matching_group в newgrp.c исходный файл.

Почему newgrp должен выполнить эту проверку? Поскольку набор групп, которых принадлежит процесс (так называемый "вектор группы") является произвольным списком: ядро не знает о /etc/group или любая другая база данных группы и setgroups могут взять произвольный список групп. Поэтому решение, которым группы должны быть в векторе группы процесса, является вопросом политики: политика, проводившая [newgrp] и большинство других инструментов пространства пользователя, состоит в том, чтобы считать вектор группы через getgrent. (Ответ жабр предоставляет подробную информацию об этом.)

С другой стороны, pam_group проводит другую политику: это может увеличить вектор группы с группами, которых пользователь не является частью (согласно /etc/group или LDAP).

Так, в конце две различных политики существуют, и mount.davfs2 жалуется, потому что это предполагает, что только первый - в действительности. Вы могли, вероятно, сообщить об этом как об ошибке против mount.davfs2, или просто добавьте всех пользователей DAV к соответствующей группе в LDAP или /etc/group, или используйте основанную на FUSE файловую систему DAV вместо этого.

2
28.01.2020, 02:17
  • 1
    newgroup должен использовать getgroups вместо getgrent, не был должен он? –  Sven Geggus 21.06.2011, 18:43
  • 2
    @Sven: Нет, newgrp программа аутентификации/авторизации, и она использует getgrent дизайном. Но mount.davfs2 не должен делать никакой аутентификации, таким образом, она не должна использовать базу данных группы, она должна проверить, является ли обработка вызовов членом необходимой группы (только авторизация). –  Gilles 'SO- stop being evil' 21.06.2011, 18:47

Теги

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