web-dev-qa-db-fra.com

Modification de / etc / sudoers pour permettre aux membres du groupe Winbind de créer uniquement Sudo pour 1 utilisateur local

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?

1
spyderdyne

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
1
spyderdyne