Modifica di / etc / sudoers per consentire ai membri del gruppo Winbind di eseguire solo su 1 utente locale

Ho più host Ubuntu Linux che devono connettersi ad Active Directory per la gestione degli utenti (purtroppo un vero server LDAP non era un’opzione qui …) e hanno configurato Winbind per gestire l’autenticazione, e la mia voce di gruppo %sudoers funziona bene:

 ## Allow AD members of the service group restricted user access to that account %sudoers ALL=(ALL:ALL) NOPASSWD:ALL 

Ho autorizzato l’autenticazione tramite password nella configurazione ssh e ho aggiunto la seguente voce al mio file sudoers per l’account:

 %service ALL=(service:service) NOPASSWD:ALL 

Questo non trova nemmeno il gruppo anche se il gruppo sudoers e i gruppi di service si trovano allo stesso livello nell’albero delle directory sul server AD. Quando faccio questo:

 %domain.local\\service ALL=(ALL:ALL) NOPASSWD:ALL 

… i membri del gruppo di service sono in grado di accedere e disporre di diritti completi sudo, inclusa la radice che è inaccettabile e già coperti dal gruppo e dalla voce sudoers . In alternativa quando faccio questo:

 %domain.local\\service ALL=(service:service) NOPASSWD:ALL 

… i membri non sono in grado di sudo per nessun utente. Per quanto riguarda l’utente del servizio, ecco la voce / etc / passwd per l’utente del service :

 service:x:1001:16777230::/opt/service:/bin/bash 

Per l’ Uomo Sudoers, quest’ultima pagina probabilmente dovrebbe funzionare, ma per qualche ragione no. Inoltre, il %service dovrebbe probabilmente riguardare sia l’abbonamento locale sia quello fornito da AD, ma non sembra. Quando creo questo utente poiché esiste già un gruppo nel server di directory denominato service ecco come sto creando l’account utente del service :

 useradd -d /opt/service -g service service 

Ecco l’output di sudo -l per un membro del gruppo:

 [[email protected] ~]$ 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 

Cosa mi manca qui?

Ho trovato la soluzione. Avevamo bisogno di impostare la shell di login e il percorso per la voce sudoers per la casa dell’utente del service modo:

 %domain.local\\service ALL=(service) NOPASSWD:/bin/bash, /opt/service/* 

Ora siamo in grado di inserire quanto segue per diventare l’utente del service :

 $ sudo -i -u service $ whoami service $ pwd /opt/service