mirror of
https://github.com/YunoHost/yunohost.git
synced 2024-09-03 20:06:10 +02:00
Helpers pour créer un utilisateur système et pour le supprimer. La création d'user système permettra de créer des users dédiés aux applications. Cf YEP 3.4
71 lines
2.1 KiB
Text
71 lines
2.1 KiB
Text
# Check if a YunoHost user exists
|
||
#
|
||
# example: ynh_user_exists 'toto' || exit 1
|
||
#
|
||
# usage: ynh_user_exists username
|
||
# | arg: username - the username to check
|
||
ynh_user_exists() {
|
||
sudo yunohost user list --output-as json | grep -q "\"username\": \"${1}\""
|
||
}
|
||
|
||
# Retrieve a YunoHost user information
|
||
#
|
||
# example: mail=$(ynh_user_get_info 'toto' 'mail')
|
||
#
|
||
# usage: ynh_user_get_info username key
|
||
# | arg: username - the username to retrieve info from
|
||
# | arg: key - the key to retrieve
|
||
# | ret: string - the key's value
|
||
ynh_user_get_info() {
|
||
sudo yunohost user info "$1" --output-as plain | ynh_get_plain_key "$2"
|
||
}
|
||
|
||
# Get the list of YunoHost users
|
||
#
|
||
# example: for u in $(ynh_user_list); do ...
|
||
#
|
||
# usage: ynh_user_list
|
||
# | ret: string - one username per line
|
||
ynh_user_list() {
|
||
sudo yunohost user list --output-as plain --quiet \
|
||
| awk '/^##username$/{getline; print}'
|
||
}
|
||
|
||
# Check if a user exists on the system
|
||
#
|
||
# usage: ynh_system_user_exists username
|
||
# | arg: username - the username to check
|
||
ynh_system_user_exists() {
|
||
getent passwd "$1" &>/dev/null
|
||
}
|
||
|
||
# Create a system user
|
||
#
|
||
# usage: ynh_system_user_create user_name [home_dir]
|
||
# | arg: user_name - Name of the system user that will be create
|
||
# | arg: home_dir - Path of the home dir for the user. Usually the final path of the app. If this argument is omitted, the user will be created without home
|
||
ynh_system_user_create () {
|
||
if ! ynh_system_user_exists "$1" # Check if the user exists on the system
|
||
then # If the user doesn't exist
|
||
if [ $# -ge 2 ]; then # If a home dir is mentioned
|
||
user_home_dir="-d $2"
|
||
else
|
||
user_home_dir="--no-create-home"
|
||
fi
|
||
sudo useradd $user_home_dir --system --user-group $1 --shell /usr/sbin/nologin || ynh_die "Unable to create $1 system account"
|
||
fi
|
||
}
|
||
|
||
# Delete a system user
|
||
#
|
||
# usage: ynh_system_user_delete user_name
|
||
# | arg: user_name - Name of the system user that will be create
|
||
ynh_system_user_delete () {
|
||
if ynh_system_user_exists "$1" # Check if the user exists on the system
|
||
then
|
||
echo "Remove the user $1" >&2
|
||
sudo userdel $1
|
||
else
|
||
echo "The user $1 was not found" >&2
|
||
fi
|
||
}
|