J'ai plusieurs hôtes Linux Ubuntu qui doivent se connecter à Active Directory pour la gestion des utilisateurs (malheureusement, un serveur LDAP n'était pas une option ici ...) et ont configuré Winbind pour gérer l'authentification, et mon entrée de groupe %sudoers
fonctionne correctement. :
## Allow AD members of the service group restricted user access to that account
%sudoers ALL=(ALL:ALL) NOPASSWD:ALL
J'ai autorisé l'authentification par mot de passe dans la configuration ssh et j'ai ajouté l'entrée suivante à mon fichier sudoers pour le compte:
%service ALL=(service:service) NOPASSWD:ALL
Cela ne permet même pas de trouver le groupe même si les groupes sudoers
et service
se trouvent au même niveau dans l’arborescence du serveur AD. Quand je fais ça:
%domain.local\\service ALL=(ALL:ALL) NOPASSWD:ALL
Les membres du groupe service
peuvent se connecter et disposent de tous les droits Sudo, y compris de la racine, ce qui est déjà inacceptable et déjà couverts par le groupe sudoers
et l'entrée. Alternativement quand je fais ceci:
%domain.local\\service ALL=(service:service) NOPASSWD:ALL
... les membres ne peuvent pas utiliser Sudo. En ce qui concerne l'utilisateur du service, voici l'entrée/etc/passwd pour l'utilisateur service
:
service:x:1001:16777230::/opt/service:/bin/bash
Selon la Page de manuel Sudoers , cette dernière entrée devrait probablement fonctionner, mais pour une raison quelconque, cela ne fonctionne pas. En outre, le %service
devrait également couvrir à la fois les membres locaux et les membres fournis par AD, mais cela ne semble pas être le cas. Quand je crée cet utilisateur puisqu'il y a déjà un groupe dans le serveur d'annuaire nommé service
, voici comment je crée le compte utilisateur service
:
useradd -d /opt/service -g service service
Voici le résultat de Sudo -l
pour un membre du groupe:
[user.test@server ~]$ Sudo -l
Matching Defaults entries for user.test on this Host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS
DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1
PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE
LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL
LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User user.test may run the following commands on this Host:
(service : service) NOPASSWD: /opt/service
Qu'est-ce que j'oublie ici?
J'ai trouvé la solution. Nous devions définir le shell de connexion et le chemin d'accès à l'entrée sudoers pour le domicile de l'utilisateur service
, comme suit:
%domain.local\\service ALL=(service) NOPASSWD:/bin/bash, /opt/service/*
Nous pouvons maintenant entrer les informations suivantes pour devenir l'utilisateur service
:
$ Sudo -i -u service
$ whoami
service
$ pwd
/opt/service