Вопрос или проблема
У меня ситуация, когда один пользователь (“minknow“) создает файлы/директории, и я хочу, чтобы другой пользователь (мой, “nano2“) имел полный доступ rwx к ним без необходимости использования sudo для изменения разрешений каждый раз при создании новой директории.
Итак, я попытался решить эту проблему, просто добавив основную группу пользователя minknow в качестве второстепенной группы для пользователя nano2 с помощью следующей команды:
sudo usermod -a -G minknow nano2
Это должно добавить группу minknow к пользователю nano2.
Затем я проверил группы, используя команду id -Gn, чтобы убедиться в добавлении группы:
nano2@nano2:/var/lib/minknow/data/P2_WGS_v3/23RKG025670$ id -Gn nano2
nano2 adm cdrom sudo dip plugdev lpadmin sambashare minknow docker
Но это не работает так, как задумано. Пользователь nano2 не имеет разрешений как часть группы minknow – у меня есть директория, созданная пользователем minknow со следующими разрешениями (вывод “ll”):
drwxrwxr-x 3 minknow minknow 4096 Jan 8 10:46 23RKG025670/
Пользователь nano2 не может создать файлы в этой директории.
Теперь я случайно также проверил команду id без указания имени пользователя. По моему пониманию, это должно просто вывести мой идентификатор и группы, но вывод немного отличается от вышеприведенного:
nano2@nano2:/var/lib/minknow/data/P2_WGS_v3/23RKG025670$ id -Gn
nano2 adm cdrom sudo dip plugdev lpadmin lxd sambashare
Отсутствуют две группы, включая группу minknow.
Я проверил, что мой пользователь действительно nano2 с помощью команды whoami.
Что здесь происходит?
В чем разница между “id” и “id {my_own_username}”?
И почему моя попытка предоставить пользователю nano2 права доступа к группам не удалась?
Огромное спасибо заранее!
Ответ или решение
Вопрос, который вы задали, касается понимания различий между командами id
и id {имя_пользователя}
, а также способа правильного добавления пользователя в группы для обеспечения доступа к файлам и каталогами. Давайте разберем эту ситуацию подробно.
Теория:
Команда id
в Linux используется для отображения идентификатора пользователя (UID) и идентификаторов групп (GID), к которым принадлежит указанный пользователь. Если вы вызываете id
без указания имени пользователя, команда покажет информацию об идентификаторе текущего пользователя. Однако, если вы укажете имя пользователя, например id {имя_пользователя}
, система покажет информацию именно об этом пользователе.
Пример:
id -Gn
: Без указания имени пользователя эта команда отобразит группы, к которым принадлежите вы, текущий пользователь.id -Gn nano2
: С указанием имени пользователяnano2
, команда покажет группы, к которым принадлежит пользовательnano2
.
Разница в выводе обеих команд может возникнуть из-за несоответствия текущей сессии пользователя и изменений, внесенных в группу после входа в сессию.
Применение:
Ваша проблема с доступом к каталогу связана с тем, что изменения в группах, внесенные с помощью команды usermod
, вступают в силу только после повторного входа пользователя в систему. Если вы добавили пользователя nano2
в группу minknow
, то эти изменения применятся только после того, как пользователь заново войдет в систему.
Чтобы исправить ситуацию, убедитесь, что:
- Выполните команду
sudo usermod -a -G minknow nano2
для добавления пользователяnano2
в группуminknow
. - Выйдите из текущей сессии пользователя
nano2
и войдите снова. Если это неудается, перезагрузите систему, чтобы гарантировать приложение новых настроек. - Проверьте членство в группе снова с командой
id -Gn nano2
илиgroups nano2
.
Для упрощения управления правами доступа также можно рассмотреть использование записи umask или групповых ACLs (Access Control Lists), чтобы автоматически применять необходимые разрешения при создании новых файлов или каталогов.
Вашу проблему можно решить, если внимательно следовать этим рекомендациям, учитывая особенности команд и нужды текущей сессии.