Hello.
We have to migrate an old Centos 6 to Centos 8. C6 has UID/GID starting at number 500. I the Users should possibily keep the existing UID/GID as on the old system.
I changed on the Centos 8 system, in /etc/login.defs, the lines UID_MIN/SYS_UID_MAX and GID_MIN/SYS_GID_MAX:
# # Min/max values for automatic uid selection in useradd # UID_MIN 500 UID_MAX 60000 # System accounts SYS_UID_MIN 201 SYS_UID_MAX 499
# # Min/max values for automatic gid selection in groupadd # GID_MIN 500 GID_MAX 60000 # System accounts SYS_GID_MIN 201 SYS_GID_MAX 499
and extracted all users and groups with UID/GID greater than 499 from the old system and inserted in the corresponding files (passwd/groups/shadows) on the new system.
So wanted to ask if this is a valid thing to do? Especially regarding security of the new system. Can it create problems in the future (updates etc.)? It is a simple LAMP server.
Thanks, Thomas
Hello.
We have to migrate an old Centos 6 to Centos 8. C6 has UID/GID starting at number 500. I the Users should possibily keep the existing UID/GID as on the old system.
I changed on the Centos 8 system, in /etc/login.defs, the lines UID_MIN/SYS_UID_MAX and GID_MIN/SYS_GID_MAX:
# # Min/max values for automatic uid selection in useradd # UID_MIN 500 UID_MAX 60000 # System accounts SYS_UID_MIN 201 SYS_UID_MAX 499
# # Min/max values for automatic gid selection in groupadd # GID_MIN 500 GID_MAX 60000 # System accounts SYS_GID_MIN 201 SYS_GID_MAX 499
and extracted all users and groups with UID/GID greater than 499 from the old system and inserted in the corresponding files (passwd/groups/shadows) on the new system.
So wanted to ask if this is a valid thing to do? Especially regarding security of the new system. Can it create problems in the future (updates etc.)? It is a simple LAMP server.
I was in a similar situation but on a quite large application server with hundreds of users. I quickly found that I don't want to fiddle with UID/GID settings so I decided to change all users on the CentOS 6 host before migrating any data. I've created a script which uses `chown' to recursively change UIDs and GIDs. I don't remember exactly but I think I made it run for every user in parallel and it finished quite fast considering the fact that it had to traverse the whole storage consisting of millions of files. I could then later just rsync everything to the new box without ant UID/GID conversion. See below for the script `chuidgid'.
Regards, Simon
----%<----- #!/bin/bash
if (( $# < 4 )); then echo "Usage: $0 <username> <new uid> <new gid | "" = uid> <dir> [<dir>...]" echo "Example: $0 user1 1000 "" /tmp /etc /usr /opt /var /home" echo echo "Important: this needs to run before changing any uid/gid!" exit 1 fi
USR="$1" NEW_UID="$2" NEW_GID="$3"
shift 3 DIRS=$@
OLD_UID=$(id -u "$USR") OLD_GID=$(id -g "$USR")
if [[ -z "$NEW_GID" ]]; then NEW_GID="$NEW_UID" fi
echo "modifying user $USR ids ${OLD_UID}:${OLD_GID} -> ${NEW_UID}:${NEW_GID} on $DIRS"
# Note: usermod changes ownership of at least $HOME and /var/spool/mail/${USR} groupmod -g "$NEW_GID" "$USR" usermod -u "$NEW_UID" -g "$USR" "$USR"
chown --changes --silent --no-dereference --preserve-root --recursive --from=":${OLD_GID}" ":${NEW_GID}" $DIRS chown --changes --silent --no-dereference --preserve-root --recursive --from="${OLD_UID}" "${NEW_UID}" $DIRS ----%<-----
On 11/15/2021 6:48 AM, Simon Matter wrote:
I've created a script which uses `chown' to recursively change UIDs and GIDs. I don't remember exactly but I think I made it run for every user in parallel and it finished quite fast considering the fact that it had to traverse the whole storage consisting of millions of files. I could then later just rsync everything to the new box without ant UID/GID conversion.
rsync by default copies by name, not UID/GID. So you can let the new system assign numbers based on the new limits and let rsync do the conversion.
You could also just keep the old numbers. AFAIK, no numbers in the 500-999 range have been globally registered. Create your users with their old IDs on a minimal system before installing any optional packages that might try to allocate a system UID from the same range. Then the optional packages will allocate from any "holes" in that range.
Other UID ranges you want to dodge are listed here: