Migrando usuários e grupos para sistemas Debian
December 8, 2007 on 3:53 pm | In DebianBR | 4 CommentsHoje em dia nem tanto porque a maioria dos sistemas que administro já estão todos convertidos para Debian GNU/Linux (e os que não estão não foram convertidos por não poderem ser convertidos devido a razões polÃticas), mas na época em que entrei na empresa onde trabalho atualmente passei um bom tempo migrando servidores Red Hat e similares (antigo Red Hat, Fedora, etc) para Debian.
Na época, sempre tive trabalho devido ao Debian e os sistemas baseados em Red Hat utilizarem polÃticas diferentes para usuários e grupos : em sistemas Red Hat e similares, usuários normais (ou seja, excetuando-se os usuários de sistema e os utilizados por daemons/serviços) iniciam no UID 500 e grupos normais (também com exceção dos grupos de sistema e criados para serem utilizados por daemons/serviços) iniciam no GID 500.
Em sistemas Debian, no entanto, usuários e grupos criados pelo administrador, ou seja, usuários e grupos que não são fornecidos na instalação padrão e que não são criados devido a instalação de algum pacote adicional (como um daemon, por exemplo), devem utilizar UID e GID iniciados a partir de 1000.
Como a conversão de servidores na época era grande, perdi alguns minutos e desenvolvi o script shell que publico abaixo para me auxiliar na tarefa de, com base nos arquivo /etc/passwd (para usuários) e /etc/group (para grupos) do sistema a ser convertido, criar as entradas já adaptadas para serem somente inseridas ao final dos arquivo /etc/passwd e /etc/group do novo sistema Debian.
O script foi criado há muitos anos atrás e agora só coloquei alguns comentários a mais para deixá-lo mais compreensÃvel, mas ainda acho que pode ser de alguma utilidade para quem possa estar passando por uma situação semelhante a que eu passei há alguns anos atrás. Além de possivelmente ser útil para alguém, estou publicando também para ter fácil acesso ao mesmo caso algum dia precise e para que o Google me ajude indexando-o e tornando “encontrável” por qualquer um que necessite de algo parecido.
#!/bin/bash
# Script : gid-uid-rh-to-debian.sh
# Author : André LuÃs Lopes
# Version : 0.1
# License : GPL (General Public License) version 2 (GPLv2)
# Description : A simple script which takes users and groups
# from a Red-Hat-like (RHEL,Fedora,etc) system and
# adapts them to be used on Debian systems, taking
# care to adapt the UID and the GID numbers to the
# Debian policies (non-sytem/user-created users
# starting from UID 1000 and groups starting from
# GID 1000) or to the user-desired ones.# Minimun UID used for users in the previous GNU/Linux distribution
# (Red-Hat-like distros uses UID 500, for reference).
minuid=”500″
# Minimun GID for groups in the previous GNU/Linux distribution
# (Red-Hat-like distros uses GID 500, for reference).
mingid=”500″
# A pipe separated list of users not to be included in the output
# (i.e. user blacklisting feature).
uidblacklist=”nobody”
# A pipe separated list of groups not to be included in the output
# (.e. group blacklisting feature).
gidblacklist=”nogroup”
# UID increment strategy (i.e. how much to sum to the current UIDs).
uidplus=”1000″
# GID increment strategy (i.e. how much to sum to the current GIDs)
# It’s not a good idea to choose a GID different from the UID given
# above (Debian’s defaults are 1000 both for UID and GID).
gidplus=”1000″# Bail out if there’s not enough parameters provided. Also, teach
# the user how we should be used instead.
if [ -z “$1″ ] || [ -z “$2″ ] ; then
echo “”
echo “Usage : $(basename $0) [passwd|group] [passwd file|group file]”
echo “Examples :”
echo “”
echo “$basename $0 passwd passwd-file”
echo “$basename $0 group group-file”
echo “”
echo “Output will be ready to be inserted to the end of your new”
echo “system’s /etc/passwd (when using the ‘passwd’ parameter) or”
echo “/etc/group (when using the ‘group’ parameter).”
echo “”
echo “IMPORTANT :”
echo “———–”
echo “You should provide as the second parameter to this script the”
echo “passwd or group from your current (i.e. Red-Hat-like) system,”
echo “NOT the passwd or group file from your new Debian system.”
echo “”
exit 0
fi# Check what the user want to work with this time : passwd or group.
# Output only the non-system users so the user will be able to add
# the output of this script to the end of his/her new system’s passwd
# or group file.
case “$1″ inpasswd)
awk -F: ‘($3 >= ‘$minuid’) && ($4 >= ‘$mingid’) {print $1 “:” \
$2 “:” $3+1000 “:” $4+100 “:” $5 “:” $6 “:” $7}’ $1 \
| grep -v -E “$uidblacklist”;;
group)
awk -F: ‘($3 >= ‘$mingid’) {print $1 “:” $2 “:” $3+1000 “:” $4}’ \
$1 | grep -v -E “$gidblacklist”;;
esac
Estou aberto a receber comentários e sugestões de possÃveis melhorias caso alguém o utilize e queira compartilhar suas impressões. CrÃticas, caso sejam construtivas, também são bem-vindas. Os comentários deste post estão aà para isso. Somente lembre-se que o script foi criado há anos atrás de maneira rápida para atender a uma necessidade especÃfica antes de destilar o veneno nos comentários. Sejam bonzinhos
Outro detalhe a ser notado é que, por mais que eu tenha tentado, o Wordpress não deixou a formatação do script de maneira idêntica a maneira utilizada em sua cópia original em disco. Por isso, contenham suas crÃticas sobre identação, já que a mesma não vai existir nessa versão online piorada pelo Wordpress ![]()
Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^