Как изменить uid и gid
При смене числовых ID y пользователя нужно сменить и ID (owner/group) файлов вне домашнего каталога (если таковые имеются).
Пример. Найти все директории и файлы с ID 1007 от самого корня / и сделать chown для каждого найденного элемента
find / -user 1007 -exec chown -h 1337 <> \;
Сайт rtfm.wiki использует cookies и трекинг посещений. Продолжая использовать этот сайт, вы соглашаетесь с сохранением файлов cookie на вашем компьютере. Если вы не согласны покиньте сайт или включите Adblock ОК Что такое cookies?
Как (правильно) изменить UID и GID пользователя / группы в Linux

Мануал
Автор cryptoparty На чтение 2 мин Опубликовано 27.07.2020
Изменение UID и GID пользователя может показаться тривиальной задачей для большинства системных администраторов.
Но это не так тривиально и требует гораздо больше изменений в бэкэнде.
В этом руководстве мы отметили точные шаги для изменения UID и GID пользователя «user01».
Username: user01 Group: group01 Existing UID: 800 Existing GID: 700 New UID: 900 New GID: 600
Предпосылки
1. Убедитесь, что пользователь, для которого необходимо изменить UID и GID, в данный момент не имеет активных процессов, запущенных в системе.
Чтобы проверить то же самое, используйте команду «ps».
# ps -ef | grep user01 # ps -ef | grep 800
Примечание: в команде «ps -ef» отображаются UID. Так что убедитесь, что вы грепаете поя UID, а также имени пользователя.
2. Сделайте резервную копию важных файлов, в которых хранится информация, связанная с UID и GID. т.е. /etc/passwd и /etc/group.
# cp -p /etc/passwd /etc/passwd.bkp # cp -p /etc/group /etc/group.bkp
3. Проверьте существующие UID и GID пользователя с помощью команды «id»:
# id user01 uid=800(user01) gid=700(group01) groups=700(group01)
Изменение UID и GID пользователя и группы
После того, как вы сделали необходимые резервные копии, мы можем изменить UID и GID.
1. Сначала измените GID группы, group01:
# groupmod -g 600 group01
2. Затем также измените UID и GID пользователя user01:
# usermod -u 900 -g 600 user01
3. Проверьте новый UID и GID пользователя:
# id user01 uid=900(user01) gid=600(group01) groups=600(group01)
Предостережения
1. Если в группе «group01» несколько пользователей, после изменения GID группы вам придется изменить других пользователей, а также user01, как показано выше.
2. После того, как вы изменили UID и GID, вам также придется изменить права доступа к файлам, принадлежащим пользователю/группе.
Но команда chown также сбрасывает SETUID и SETGID файлов, поэтому вам потребуется вручную изменить разрешения этих файлов позже.
Чтобы найти такие файлы:
# find / -uid 900 -perm /6000 -ls # find / -gid 900 -perm /6000 -ls
3. Чтобы найти файлы, принадлежащие user01 и group01, и изменить их права:
# find / -uid 800 -exec chown -v -h 900 '<>' \; # find / -gid 700 -exec chgrp -v 600 '<>' \;
Опция -h также используется для изменения прав символических ссылок.
Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий Отменить ответ
user 09.02.2022 в 16:38
Ошибка в
# find / -gid 900 -perm /6000 -ls Должно быть
# find / -gid 600 -perm /6000 -ls
Альф 05.03.2022 в 23:30
Спасибо.
Добавьте в Предостерижения в п.1
# cat /etc/group | grep group01
чтоб увидеть пользователей входящих в группу.

Поддержать нас
- Аудит ИБ (49)
- Вакансии (12)
- Закрытие уязвимостей (110)
- Книги (27)
- Мануал (2 359)
- Медиа (66)
- Мероприятия (39)
- Мошенники (23)
- Обзоры (831)
- Обход запретов (34)
- Опросы (3)
- Скрипты (116)
- Статьи (360)
- Философия (124)
- Юмор (18)
Наш Telegram

Социальные сети
Поделиться
Anything in here will be replaced on browsers that support the canvas element
- Каковы различные форматы сертификатов? 27.10.2023
Цифровые сертификаты могут использоваться для различных целей. Они могут использоваться для защиты соединений с веб-сайтами, для шифрования сообщений электронной почты или для проверки личности пользователя. Выбор правильного формата сертификата необходим для обеспечения безопасности и сохранности данных. Когда речь идет о различных форматах сертификатов, важно выбрать тот, который соответствует вашим потребностям Выберите формат сертификата, совместимый с […]
Преобразование файла PFX (PKCS #12) в формат PEM (Privacy Enhanced Mail) достаточно просто на Linux и Unix-подобных системах. В этой статье мы рассмотрим, как преобразовать файл сертификата в формате PFX в файл PEM с помощью OpenSSL из командной строки. Что такое файл PFX? PFX (также PKCS#12) – это формат файла, содержащего сертификат(ы) и закрытый(ые) ключ(ы), […]
Одним из основных нововведений, появившихся в Podman, стала возможность запуска контейнеров без прав root. С точки зрения безопасности это было существенным улучшением, поскольку потенциально скомпрометированный контейнер, запущенный от имени root, представляет собой угрозу безопасности для хост-системы. Чтобы добиться аналогичного поведения, последние версии Docker поддерживают запуск демона docker в пользовательском контексте. Почему процессы в контейнерах […]
Small Form Factor Pluggable (SFP) – это компактный приёмопередатчик, который устанавливается в SFP порт коммутатора Ethernet. Модуль используется для присоединения платы сетевого устройства к оптическому волокну или витой паре. Модули SFP заменили устаревшие модули GBIC благодаря своим миниатюрным размерам. Это преимущество в размерах позволяет им эффективно работать в ограниченных сетевых средах, обеспечивая быстрый обмен данными […]
Давайте поговорим о классификации вредоносных программ. Когда антивирусная программа или средство защиты от вредоносного ПО обнаруживает что-то потенциально вредоносное, она использует определенный формат, чтобы помочь вам или другим специалистам понять, с какой именно угрозой вы имеете дело. Формат может выглядеть примерно так: Type:Platform/Family.Variant!Suffixes Это не всегда будет выглядеть именно так, поскольку, как вы помните, не […]
Смена ID пользователя
Как можно поменять ID пользователя локальной linux-системы?
drSchur ★★★
20.10.13 20:25:45 MSK
Gotf ★★★
( 20.10.13 20:30:15 MSK )
В гугле то забанили?
#usermod -u UID username
sugresmax ★
( 20.10.13 20:52:27 MSK )
Ответ на: комментарий от sugresmax 20.10.13 20:52:27 MSK

А я обычно ручками.
Anon
( 20.10.13 21:16:17 MSK )

В /etc/passwd третье поле — uid. Меняй на здоровье 🙂
generator ★★★
( 21.10.13 12:52:27 MSK )
Ответ на: комментарий от Anon 20.10.13 21:16:17 MSK
Для плечистого народа хочу заметить, что usermod не только UID в passwd меняет, но и приводит в соответствие создателя директорий, папок. Не нужно делать после chown.
lvi ★★★★
( 21.10.13 14:32:36 MSK )
Ответ на: комментарий от lvi 21.10.13 14:32:36 MSK

usermod не только UID в passwd меняет, но и приводит в соответствие создателя директорий, папок
Anon
( 21.10.13 14:50:01 MSK )
Ответ на: комментарий от Anon 21.10.13 14:50:01 MSK
lvi ★★★★
( 21.10.13 15:07:01 MSK )
Последнее исправление: lvi 21.10.13 15:07:23 MSK (всего исправлений: 1)
Ответ на: комментарий от sugresmax 20.10.13 20:52:27 MSK
drSchur ★★★
( 21.10.13 15:11:04 MSK ) автор топика
Ответ на: комментарий от lvi 21.10.13 14:32:36 MSK
Да хрен там, всегда после него chown приходится проходить.
anonymous
( 21.10.13 15:40:49 MSK )
Ответ на: комментарий от anonymous 21.10.13 15:40:49 MSK
Да хрен там, всегда после него chown приходится проходить.
Мож у тебя ОС какая-то особенная.
lvi ★★★★
( 21.10.13 15:52:52 MSK )
Ответ на: комментарий от lvi 21.10.13 15:07:01 MSK

Что-то не могу придумать ситуацию, в которой возникла бы необходимость смены UID’а уже длительное время существующего пользователя. А у нового пользователя и хомяка-то нет еще, пока сам /etc/skel не скинешь и chmod не сделаешь.
Anon
( 21.10.13 15:56:57 MSK )
Ответ на: комментарий от Anon 21.10.13 15:56:57 MSK
А у нового пользователя и хомяка-то нет еще, пока сам /etc/skel не скинешь и chmod не сделаешь
Из всех ОС, что использовал, useradd все это делает поумолчанию. Debian не помню, raspbian точно явно нужно -m (useradd -m), чтобы он домашнюю директорию сделал. Тем не менее и там (useradd если с -m) копируются файлы из скела, устанавливается own, все само делается.
Ну хочет ТС UID поменять, мало ли.
lvi ★★★★
( 21.10.13 16:30:27 MSK )
Ответ на: комментарий от Anon 21.10.13 15:56:57 MSK
Легко: два сервера PostgreSQL, репликация master-slave, мастер складывает сегменты WAL в NFS-шару, откуда при необходимости восстановления их забирает slave. 2 варианта: или дикая ебля с idmapd(я не осилил), или привести id пользователей postgres в соответствие на обоих системах.
dark_barker: технические заметки
Дополнительный блог, куда я пишу разные статьи, заметки и решения каких-либо технических вопросов. Основная тематика блога: программирование, операционные системы, алгоритмы, java, linux, технологии.
13 сентября 2011 г.
linux: изменить UID/GID юзера в системе
Сабж надобится иногда для того, чтобы аккуратно перевести систему на другой дистрибутив. Или чтобы корректно работали общие ресурсы в сети. И т.д. Всё примитивно, просто памятка. Проверяю под федорой и арчем, но способ универсальный. Мне надо поменять uid (1000 вместо 500) юзера dimon и назначить ему другую основную группу — 100(users) вместо 500(dimon).
Информация о текущих uid и группах юзера
# id dimon uid=500(dimon) gid=500(dimon) группы=500(dimon),5(tty),14(uucp),54(lock),501(vboxusers),503(truecrypt),18(dialout)
Смена uid юзера
# usermod -u 1000 dimon
Для этого надо, чтобы пользователь не находился в системе. Иногда команда выполняется долго — меняются(!) права файлов, принадлежащих юзеру. Т.е. им перепрописывается новый uid. Но это происходит только в домашнем каталоге.
Кстати, аналогично для gid, если понадобится
# groupmod -g 1000 dimon
Смена прав всем файлам, принадлежащим юзеру
Помимо домашней папки поменять надо бы все остальные права файлов, делаем через find + exec, просто один из способов “в лоб”.
# find / -user -exec chown <> \;
И для групп аналогично:
# find / -group -exec chgrp <> \;
Выполняется тоже не так уж быстро. Смотрите, чтобы всякие сетевые папки были отмонтированы, а то смените вообще всем 🙂
Для домашнего каталога можно, конечно, сделать что-то типа
# chown -R dimon:dimon /home/dimon
Смена группы юзера
Это смена основной группы юзера (а не смена gid группы). Назначаем:
# usermod -g 100 dimon
# id dimon uid=1000(dimon) gid=100(users) группы=100(users),5(tty),14(uucp),54(lock),501(vboxusers),503(truecrypt),18(dialout)
Ещё обратите внимание, что права в домашней папке уже не меняются, т.е. все они остаются группы dimon, что довольно логично. При желании можно через find + exec найти все файлы группы dimon и заменить на users (в примере выше меняем oldgid=500 на newgid=100), но я делать не стал, не требовалось.