К сожалению, я думаю, что Вы вполне завинчены. Если Вы только смешали с таблицей разделов затем, TestDisk является Вашим лучшим выстрелом, но так как Вы изменяли размер (который на самом деле означает копировать и возможно даже удалять), Ваши данные, более или менее, повреждаются.
Если у Вас есть резервное копирование до выполнения изменить размер операции, это - хорошее время для использования его. Еще, я не знаю то, что можно сделать, я угробил бы раздел и создал бы новый, прощаясь с данными внутри. Урок, который должен быть извлечен из этого, всегда быть осторожным с Вашими данными. (Конечно, необходимо попытаться ожидать, чтобы видеть, существует ли какой-либо супер большой ответ, который может добиться большего успеха, но не содержит слишком много надежды.)
Теперь, если у Вас действительно есть резервное копирование, более легкий способ "изменить размер" состоит в том, чтобы удалить старый раздел, создать новый, затем восстановить данные там.
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
делает его задание, которое не является тем, что Вы думали). Я могу или не мог решить Вашу проблему. Это необычно для приложений, которые не регистрируют Вас в искать базы данных группы и пользователь; обычно права доступа были бы решены путем проверки, является ли процесс запроса членом соответствующей группы. Если Вы имеете проблему с конкретным приложением, говорите нам который.
Причина 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 вместо этого.
newgrp
программа аутентификации/авторизации, и она использует getgrent
дизайном. Но mount.davfs2
не должен делать никакой аутентификации, таким образом, она не должна использовать базу данных группы, она должна проверить, является ли обработка вызовов членом необходимой группы (только авторизация).
– Gilles 'SO- stop being evil'
21.06.2011, 18:47
newgrp
в Вашем комментарии? Если так, я только что сказал Вам, что это не полезно так или иначе. Безотносительно проблемы Вы имеете,newgrp
не решение. – Gilles 'SO- stop being evil' 21.06.2011, 15:51