1
0
Fork 0

feat(config): add YNH config with settings from dict

fix: sudo without password for admins
This commit is contained in:
Arthur BOUDREAULT 2023-03-14 14:22:21 +00:00 committed by Christophe Chaudier
parent fb1b1aeaad
commit b69df5362e
7 changed files with 46 additions and 44 deletions

View file

@ -40,6 +40,7 @@ Ces tags sont applicables suivant les rôles.
|apps|Tâches spécifiques aux applications de Yunohost.|
|update|Tâches liées aux paramètres de mise à jour de Yunohost.|
|smtp|Tâches liées aux paramètres de relais smtp de Yunohost.|
|settings|Tâches liées aux paramètres de Yunohost.|
|backup|Tâches liées aux sauvegardes de Yunohost en local.|
|borg|Tâches liées aux sauvegardes avec BorgBackup.|
|restic|Tâches liées aux sauvegardes avec Restic.|

View file

@ -40,6 +40,7 @@ These tags are applicable to roles.
|apps|Tasks specific to Yunohost apps.|
|update|Tasks related to Yunohost update settings.|
|smtp|Tasks related to Yunohost smtp relay settings.|
|settings|Tasks related to Yunohost settings.|
|backup|Tasks related to local Yunohost backups.|
|borg|Tasks related to backups with BorgBackup.|
|restic|Tasks related to backups with Restic.|

View file

@ -49,16 +49,27 @@ Si des mises à jour sont disponibles, elles sont faites automatiquement. En cas
Pour en savoir plus sur le fonctionnement des mises à jour dans Yunohost vous pouvez vous rendre [ici](https://yunohost.org/fr/update). Le changelog des versions de Yunohost est aussi disponible [ici](https://forum.yunohost.org/tag/ynh_release).
### Modification du port SSH
Parmi les paramètres proposés dans YunoHost, il est possible de modifier le port SSH. Vous devez juste créer la variable `ynh_ssh_port` et le rôle se chargera d'aller récupérer le port SSH et de le modifier si nécessaire. Il va aussi effectuer les changements appropriés pour fail2ban et le firewall interne de YunoHost.
Si votre instance YunoHost est derrière un firewall applicatif ou propre à votre fournisseur cloud, il faudra également ouvrir le groupe de sécurité approprié.
### Options de YunoHost
```yml
ynh_ssh_port: "812"
ynh_settings:
security.ssh.port: "22"
security.password.passwordless_sudo: "true"
```
⚠️ Attention, à partir du moment où le port SSH est modifié, la prochaine fois que vous voudrez vous connecter en SSH sur le serveur YunoHost, il faudra renseigner le port SSH utilisé (par exemple `ssh -p 812 username@hostname`). Vous pouvez également externaliser cette configuration vers un fichier de configuration SSH (plus d'infos [ici](https://linuxize.com/post/using-the-ssh-config-file/)). Vous pouvez aussi indiquer cette configuration dans votre fichier d'inventaire sinon Ansible ne pourra plus se connecter à votre serveur. (plus d'infos [ici](https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#how-do-i-handle-different-machines-needing-different-user-accounts-or-ports-to-log-in-with)).
#### Modification du port SSH
Parmi les paramètres proposés dans YunoHost, il est possible de modifier le port SSH à l'aide de la variable `security.ssh.port`. En modifiant la variable, YunoHost va effectuer les changements appropriés pour fail2ban et le firewall interne de YunoHost.
Si votre instance YunoHost est derrière un firewall applicatif ou propre à votre fournisseur cloud, il faudra également ouvrir le groupe de sécurité approprié et ne pas oublier de renseigner le port SSH utilisé (par exemple `ssh -p 812 username@hostname`). Vous pouvez également externaliser cette configuration vers un fichier de configuration SSH (plus d'infos [ici](https://linuxize.com/post/using-the-ssh-config-file/)). Vous pouvez enfin indiquer cette configuration dans votre fichier d'inventaire sinon Ansible ne pourra plus se connecter à votre serveur. (plus d'infos [ici](https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#how-do-i-handle-different-machines-needing-different-user-accounts-or-ports-to-log-in-with)).
### Utilisation de sudo sans mot de passe
À partir de Yunohost 11.1, un nouveau groupe d'administrateurs est créé sur l'instance. Il s'agit d'un groupe Unix qui est intégré à YunoHost et son LDAP. Tous les utilisateurs dans ce groupe auront accès à la console d'administration en ligne YunoHost mais pourront aussi se connecter en SSH et utiliser la commande sudo (pour prendre temporairement les droits root).
Par défaut, l'utilisateur doit taper son mot de passe pour utiliser la commande sudo mais il est possible de désactiver cette vérification depuis l'interface web (`outils` > `Paramètres de YunoHost` > `Permettre aux administrateurs d'utiliser 'sudo' sans retaper leur mot de passe`) ou en modifiant la variable `security.password.passwordless_sudo` à `true` dans votre fichier de variables Ansible. Plus d'informations disponibles [ici](https://forum.yunohost.org/t/yunohost-11-1-release-sortie-de-yunohost-11-1/23378#sudo-sans-mot-de-passe-16).
#### Paramètres supplémentaires
Vous pouvez fournir des paramètres supplémentaires à la variable `ynh_settings`. Pour en savoir plus, utilisez la commande `yunohost settings list`.
## Dépendances

View file

@ -49,16 +49,28 @@ If available, updates are done automatically. In case of problems following an a
To learn more about how updates work in Yunohost you can go [here](https://yunohost.org/fr/update). The changelog of Yunohost versions is also available [here](https://forum.yunohost.org/tag/ynh_release).
### SSH port modification
### YunoHost options
Among the settings available in YunoHost, it is possible to change the SSH port. You just have to create the `ynh_ssh_port` variable and the role will retrieve the SSH port and modify it if necessary. It will also perform the adequate modifications regarding fail2ban and the internal firewall of YunoHost.
In your YunoHost host is behind a firewall, you may consider creating the appropriate security group.
``yml
ynh_ssh_port: "812"
```yml
ynh_settings:
security.ssh.port: "22"
security.password.passwordless_sudo: "true"
```
⚠️ Be careful, from the moment the SSH port is modified, the next time you want to connect to the YunoHost server with SSH, you will have to specify the SSH port to be used (for example `ssh -p 812 username@hostname`). You can also externalize this configuration to an SSH configuration file (more info [here](https://linuxize.com/post/using-the-ssh-config-file/)). You can indicate that configuration in your inventory file otherwise Ansible won't be able to connect to your server. (More info [here](https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#how-do-i-handle-different-machines-needing-different-user-accounts-or-ports-to-log-in-with)).
#### SSH port modification
Among the settings offered in YunoHost, it is possible to change the SSH port using the `security.ssh.port` variable. By modifying the variable, YunoHost will make the appropriate changes to fail2ban and YunoHost's internal firewall.
If your YunoHost instance is behind an application or cloud provider specific firewall, you will also need to open the appropriate security group and remember to enter the SSH port in use (e.g. `ssh -p 812 username@hostname`). You can also externalize this configuration in an SSH configuration file (more info [here](https://linuxize.com/post/using-the-ssh-config-file/)). Finally, you can indicate this configuration in your inventory file otherwise Ansible will not be able to connect to your server. (more info [here](https://docs.ansible.com/ansible/latest/reference_appendices/faq.html#how-do-i-handle-different-machines-needing-different-user-accounts-or-ports-to-log-in-with)).
### Using sudo without password
Starting with Yunohost 11.1, a new administrator group is created on the instance. This is a Unix group that is integrated with YunoHost and its LDAP. All users in this group will have access to the YunoHost online administration console but will also be able to connect via SSH and use the sudo command (to temporarily take root rights).
By default, the user must type their password to use the sudo command but it is possible to disable this check from the web interface (`tools` > `YunoHost settings` > `Allow admins to use sudo without re-typing their passwords`) or by changing the `security.password.passwordless_sudo` variable to `true` in your Ansible variables file. More information available [here](https://forum.yunohost.org/t/yunohost-11-1-release-sortie-de-yunohost-11-1/23378#passwordless-sudo-4).
#### Extra settings
You can provide extra parameters to the variable `ynh_settings`. To know more, use the command `yunohost settings list`.
## Dependencies

View file

@ -39,4 +39,6 @@ ynh_autoupdate:
# system: True
# dest_script: "/usr/local/bin/"
# ynh_ssh_port: "22"
ynh_settings:
security.ssh.port: "22"
security.password.passwordless_sudo: "true"

View file

@ -41,9 +41,10 @@
- yunohost
- update
- name: Configure Yunohost SSH port
ansible.builtin.include_tasks: sshd_configuration.yml
when: ynh_ssh_port
- name: Configure YunoHost settings
ansible.builtin.command:
"yunohost settings set {{ item.key }} -v {{ item.value }}"
loop: "{{ ynh_settings | dict2items }}"
tags:
- yunohost
- ssh
- settings

View file

@ -1,26 +0,0 @@
---
#-----------------------------------------------------------------------------#
# ansible-yunohost allows to deploy Yunohost using Ansible #
# Copyright 2021-present Lydra https://www.lydra.fr/ #
# #
# this program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# this program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
#-----------------------------------------------------------------------------#
- name: Change SSH port
ansible.builtin.command:
"yunohost settings set security.ssh.port -v {{ ynh_ssh_port }}"
tags:
- yunohost
- ssh