SAVANNAHUSERS
Section: User Contributed Perl Documentation (1)
Updated: perl v5.6.1
Index
Return to Main Contents
NAME
savannahusers - manage shell accounts with savannah.gnu.org
SYNOPSIS
savannahusers [--help] [--verbose] [--fake]
[--firstuid=<number>] [--lastuid=<number>]
[--reuse] [--user=<login>]
[--allow-conflicts] [--www] [--ssh=<prog>] --file <file.xml>
DESCRIPTION
It is convenient to use Savannah (savannah.gnu.org) to manage accounts
on a machine that is completly unrelated to Savannah itself. For
instance, the project http://savannah.gnu.org/projects/fsffr/ lists
all the users who should have a shell account on the
france.fsfeurope.org machine.
A cron job on the target machine (france.fsfeurope.org in this case)
can fetch the list of users from Savannah and update the password
files accordingly. Adding a user to the machine can then simply be
done by adding the user as a developer of the project.
By default savannahusers only use a limited range of uid (61000 to
62000) to avoid interferences with existing users.
PRELIMINARY STEPS
You should do the following before using the savannahusers on the
xxx.gnu.org machine.
- create a Savannah project
-
You should first login savannah.gnu.org, register a new project named
gnuxxx. The only thing required is to explain the following in the
project description:
Manage accounts on xxx.gnu.org. Each member of the
project has an ssh account and can login with her
ssh protocol 1 public key. Automated.
- create a saccount user
-
The saccount user is needed in order to avoid using the environment
of the root user since it's potentialy hazardous for security.
useradd -m -p '*' -c 'Savannah Account Creation' -d /home/saccount saccount
- add saccount to sudoers
-
The only action this user needs to do with root permissions is to
run the savannahuser script. This can be done by adding a line
in the sudoer file.
saccount ALL=(root) NOPASSWD: /usr/bin/savannahusers
- send saccount ssh public of xxx.gnu.org
-
The ssh public key of root on xxx.gnu.org will needed to be registered
in the authorized_keys file of the xmlbase user on savannah.gnu.org.
ssh-keygen or ssh-keygen1
Do "not" set the passphrase. Only type return when asked for one.
Send it to savannah-hackers@gnu.org, saying that it's for the project
gnuxxx. Once it is added, you should be able to run:
rsync --rsh=ssh xmlbase@savannah.gnu.org: .
as saccount. This will download a file with account information for the
xxx.gnu.org machine, extracted from the member list of the
http://savannah.gnu.org/projects/gnuxxx/ project.
Once these steps are complete, you should be able to install and run
savannahusers properly. Before actually doing something, run it a few
times using --fake to make sure it does what you expect. When you're
satisfied install the cron job and forget about it.
OPTIONS
- --www
-
All user have access to www account. This account must already exists.
The ssh public keys of all the users known by savannahusers are inserted
in the authorized_key files of this account. All users will be able to
login as user www.
- --user=<login>
-
Run rsync as <login> user instead of root. The ssh protocol 1 key
of the <login> user will be used and should be known to Savannah.
- --reuse
-
Instead of fetching the account descriptions file with rsync, reuse
the file (see --file) that is in the temporary directory on the target
machine. When the program terminates the file is not deleted.
- --file=<file.xml>
-
The XML account information filename. This is the filename created
by the rsync --rsh=ssh xmlbase\@savannah.gnu.org: . command. The name
of the file is not decided by the target machine. When the program
terminates the file is deleted. It is placed in the temporary
directory.
- --ssh=<prog> (default ssh)
-
The name of the ssh program to use. For instance --ssh=ssh1.
- --allow-conflicts
-
Only send a warning if a login name conflict occurs. A name conflict
occurs when a login name is already in use with a uid outside the
range of uid managed by savannah users. The savannahusers script
assumes that this user was created independantly by someone with root
access on the target machine. As a consequence, savannahusers will
refuse to create it (or update it) even if the same login name was
registered in the Savannah project. The default behaviour is to abort,
with the --allow-conflicts a warning is sent, and the login name is ignored
by savannahusers.
- --firstuid=<number> (default 61000)
-
The low bound of the uid range managed by savannahusers.
- --lastuid=<number> (default 62000)
-
The high bound of the uid range managed by savannahusers.
- --fake
-
print actions and do nothing
- --help
-
print a short usage message.
- --verbose
-
print debugging messages on the stderr file descriptor.
CRON
Here is a sample cron job that can be stored in the file
/etc/cron.d/savannahusers:
MAILTO=system-hackers@gnu.org
#
# Update accounts from Savannah project fsffr
# http://savannah.gnu.org/projects/fsffr/
# http://savannah.gnu.org/savannah.html#Account%20Management
#
37 20 * * * saccount ( date ; sudo /usr/bin/savannahusers \
--file accounts-fsffr.xml --user saccount --www \
) >> /var/log/savannahusers.log 2>&1 < /dev/null
Before installing this cron job you should create the savannahusers.log
file and make sure it is owned by the saccount user.
touch /var/log/savannahusers.log
chown saccount /var/log/savannahusers.log
LOGROTATE
Here is a sample logrotate specification that can be stored in
the file /etc/logrotate.d/savannahusers:
/var/log/savannahusers.log {
rotate 30
weekly
compress
copytruncate
missingok
}
BUGS
Accented names are output in UTF-8. getpwent just discard them. Should
either be unaccented using Text-Unaccent.
AUTHOR
Loic Dachary (loic@gnu.org)
SEE ALSO
useradd(1).
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- PRELIMINARY STEPS
-
- OPTIONS
-
- CRON
-
- LOGROTATE
-
- BUGS
-
- AUTHOR
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Updated: $Date: 2006/04/22 13:07:11 $