Вопрос или проблема
Я не понимаю, почему newgrp
запрашивает у меня пароль, когда я хочу изменить свою группу.
Я даже не знаю, какой пароль он запрашивает,
но это определенно не мой (пользователь clime).
$ id
uid=500(clime) gid=501(www) groups=501(www),500(clime) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$ newgrp clime
Пароль: <--- что?!
Моя система – CentOS 6.3.
newgrp
– это рудиментарная команда из тех времен, когда ядро могло отслеживать только одну группу за раз, поэтому, если вы были членом более чем одной группы, вам приходилось использовать эту команду для переключения групп. Если вы не указаны как член группы, группе может быть назначен пароль, который вы можете ввести, чтобы переключиться на нее. Вот что у вас спрашивают.
Кстати, вы, возможно, не осознаете, но в файле /etc/group
есть поле для пароля. Это поле либо NULL (т.е. ::), либо туда помещена ЗВЕЗДОЧКА (т.е. *
). Я подозреваю, что в вашем случае во второй группе установлена звезда (т.е. *
) в файле паролей. Таким образом, если запись группы имеет то, что система рассматривает как ненулевую запись пароля в файле группы, команда newgrp
будет реагировать соответствующим образом.
Я постоянно использую команду newgrp
на работе, если я помогаю определенной группе и хочу, чтобы новые директории и файлы, которые я создаю, были доступны другим членам группы. Кстати, umask g+w
также полезен, чтобы другие могли в дальнейшем изменять мои данные, если это необходимо.
Сегодня дома я установил Wireshark из репозиториев Debian, который создал новую группу wireshark
, позволяющую членам захватывать пакеты, не выполняя его от имени root или с sudo
. Я добавил себя в эту группу, редактируя /etc/group
, но не хотел выходить из сессии Gnome еще. newgrp wireshark
также запрашивал пароль.
В этом случае это произошло потому, что я забыл про /etc/gshadow
! После того, как я также добавил себя в группу там, newgrp wireshark
заработал без проблем, и теперь я с радостью захватываю пакеты.
Просто используйте команду ниже, чтобы установить новый пароль.
sudo gpasswd docker
Ответ или решение
Использование команды newgrp
в Unix-подобных системах, таких как CentOS, может иногда быть запутанным, особенно когда система запрашивает пароль при попытке смены группы. В данной статье я объясню, почему возникает такая ситуация и как с ней справиться.
Понимание newgrp
и его функциональности
Что такое newgrp
?
Команда newgrp
позволяет пользователям Switch между группами, в которых они состоят. Это особенно полезно, когда необходимо изменить контекст группы для создания файлов и директорий, так как UNIX-системы могут вести учёт только одной активной группы за раз.
Причина запроса пароля
Запрос пароля, возникающий при использовании newgrp
, имеет следующие причины:
-
Членство в группе: Если вы пытаетесь переключиться на группу, в которой вы не являетесь членом, система может запрашивать пароль. Это делается для обеспечения безопасности, чтобы только авторизованные пользователи могли получить доступ к определённым группам.
-
Файл
/etc/group
: Каждая запись в этом файле может содержать поле пароля. Если это поле заполнено (например, символом*
или другим значением, которое не является пустым), то для переключения на группу потребуется пароль. Обычно, это означает, что группа защищена паролем. -
Файл
/etc/gshadow
: Как упомянуто в некоторых коментариях, существует ещё один файл, который управляет списком групп и защищает их паролями. Если вы не добавили себя в файл/etc/gshadow
после редактирования/etc/group
, система не узнает о вашем новом членстве в группе и снова запросит пароль.
Как решить проблему
Чтобы избежать запроса пароля при использовании newgrp
, выполните следующие шаги:
-
Проверьте ваше членство в группе:
Убедитесь, что вы являетесь членом необходимой группы:id
-
Редактируйте файл
/etc/gshadow
:
Пожалуйста, добавьте свою учетную запись в необходимую группу, если она там отсутствует. Используйте для этого команду:sudo gpasswd -a <ваше_имя_пользователя> <имя_группы>
-
Проверьте файл
/etc/group
: Убедитесь, что поле пароля пустое или корректное. Если оно заполнено, это может вызвать запрос пароля. Вы можете редактировать файл с помощьюvipw
илиvigr
для повышения безопасности. -
Настройка прав доступа: Для обеспечения прав доступа к файлам других пользователей в группе вы можете использовать:
umask g+w
Это позволит другим пользователям в вашей группе изменять ваши файлы.
Заключение
Команда newgrp
является мощным инструментом для управления группами в UNIX-подобных системах, но может вызвать путаницу при неправильном использовании. Понимание, как и почему система запрашивает пароль, может помочь избежать ненужных трудностей. Просто следите за вашим членством в группах и проверяйте настройки групповых файлов. Следуйте приведённым здесь рекомендациям, и вы сможете эффективно управлять доступом к группам и ресурсам в вашей системе CentOS.