Eu até que gosto de interfaces web, como a
phpLDAPadmin, mas eu pertenço àqueles tempos
passados da informática pré-histórica, onde eu me comunicava com
computadores via VT100. Além disto,
às vezes, eu tenho ataques de claustrofobia quando fico preso dentro de um
browser. Por estas razões, eu resolvi experimentar o script ldapadduser
,
do pacote Debian ldapscripts,
destinado à criação de usuários na base LDAP.
Descobri logo de cara que phpLDAPadmin e ldapscripts não são bom amigos,
pois eles adotam esquemas de base LDAP e gabaritos de objetos ("templates"
en inglês) incompatíveis entre si. O primeiro passo para a reconciliação
dos dois foi a reestruturação da nossa base LDAP. Os objetos do tipo "user
account" e "POSIX group" estão agora dentro dos subníveis ou=Groups
e
ou=People
, respectivamente. O atributo ou
do LDAP significa
"Organizational Unit". Na interface phpLDAPadmin, vocês verão atualmente
algo do gênero:
─> dc=cefala,dc=org (3)
└────> cn=admin
└[+]─> ou=Groups (32)
└[+]─> ou=People (27)
Esta mudança não foi suficiente, pois o gabarito de usuário usado pelo
comando ldapadduser
é incompatível com aquele usado pelo phpLDAPadmin.
Após arrancar os poucos cabelos que restam na minha cabeça ao tentar forçar
um gabarito específico no ldapadduser
, eu acabei desistindo e escrevi o
meu próprio script, cefala-add-user
, que está agora no Git:
$ git clone cefala-admin@git.cefala.org:/var/git/cefala-admin/cefala-ldap
Eis um exemplo de criação de usuário utilizando o script:
$ sudo cefala-add-user foo
cefala-add-user:I: Creating user foo.
Last name: Bar
First name: Foo
Email address: foo.bar@example.org
Login shell (default /bin/bash):
Last name: Bar
First name: Foo
Email address: foo.bar@example.org
Login shell: /bin/bash
Is the above information correct [y/n]: y
New password:
Re-enter new password:
Successfully added group foo to LDAP
adding new entry "cn=Foo Bar,ou=People,dc=cefala,dc=org"
cefala-add-user:I: Created user foo (UID: 1027, GID: 532)
Dois commentários importantes:
- Vocês devem ter notado que o script cria um grupo específico para o
usuário, cujo nome é idêntico ao nome de login. Esta é a norma na
distribuição Debian. Anteriormente, os usuários do CEFALA ficavam todos
no mesmo grupo
cefala-users
. Como os grupos POSIX servem apenas para
o compartilhamento de arquivos, não fazia sentido colocar todo mundo
dentro do mesmo grupo. Para que tudo fique coerente, eu criei grupos
para os usuários existentes e modifiquei os GIDs dos arquivos na
partição /home
.
- Vocês também devem ter notado que o script cria o diretório de login na
partição
/home
. Esta é uma razão a mais para a utilização do script
cefala-users
ao invés da criação de usuários via phpLDAPadmin. No
caso acima, o diretório ficou assim:$ ls -ld /home/foo
drwx------ 40 foo foo 4096 Sep 9 13:12 /home/foo