Błąd składni pliku sudoers podczas uruchamiania poleceń sudo
Summary: Po skonfigurowaniu roli nie można uruchamiać poleceń sudo, a w pliku sudoers pojawia się błąd składniowy.
Symptoms
Podczas uruchamiania "sudo", może ono zakończyć się niepowodzeniem na jednym lub wielu węzłach, na przykład:
cluster-1# isi_for_array -s sudo date
cluster-1: Fri Sep 12 16:58:29 CDT 2014
cluster-2: Fri Sep 12 16:58:30 CDT 2014
cluster-3: sudo: >>> /usr/local/etc/sudoers: syntax error near line 124 <<<
cluster-3: sudo: parse error in /usr/local/etc/sudoers near line 124
cluster-3: sudo: no valid sudoers sources found, quitting
cluster-3: sudo: unable to initialize policy pluginCause
Może się to zdarzyć z różnych powodów:
1. Nie można rozpoznać użytkownika lub grupy dodanej do roli w węzłach, których dotyczy problem:
W węzłach, w których występuje problem, może okazać, że nie można rozwiązać problemu użytkownika lub grupy:
cluster-1# isi_for_array -n3 'isi auth users view domain\\group'
cluster-3: Failed to find group for 'GROUP:domain\group': No such group
Ponieważ użytkownik lub grupa jest nierozwiązywalna, węzeł nie może zlokalizować GID/UID dla sudoers i patrząc na plik /usr/local/etc/sudoers pliku:
cluster-1# isi_for_array -s "egrep -i 'user_alias.*newrole' /usr/local/etc/sudoers"
cluster-1: User_Alias NEWROLE = %#1000010
cluster-2: User_Alias NEWROLE = %#1000010
cluster-3: User_Alias NEWROLE =
Zauważ, że UID/GID nie został wypełniony, co powoduje błąd składniowy.
2. Rola, która została utworzona, zawiera łącznik w nazwie:
cluster-1# isi auth roles view test-role
Name: test-role
Description: -
Members: DOMAIN\user
Privileges
ID : ISI_PRIV_LOGIN_SSH
Read Only : True
ID : ISI_PRIV_AUTH
Read Only : False
cluster-1% sudo date
sudo: >>> /usr/local/etc/sudoers: syntax error near line 124 <<<
sudo: parse error in /usr/local/etc/sudoers near line 124
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin
Na przykład ten błąd występuje w wierszu 124:
cluster-1# grep -n '' /usr/local/etc/sudoers | grep ^124
124:User_Alias TEST-ROLE = #1000003
3. Użytkownik lub grupa nie ma powiązanego identyfikatora UID ani GID.
Resolution
1. Jeśli węzły nie są w stanie przetłumaczyć nazwy użytkownika lub grupy na UID/GID, musimy zamiast tego dodać użytkownika/grupę zgodnie z UID/GID.
Usuń nazwę użytkownika lub grupy z konfiguracji roli:
cluster-1# isi auth roles modify --role=newrole --remove-group=domain\\group
cluster-1# isi auth roles view newrole
Name: newrole
Description: -
Members: -
Privileges
ID : ISI_PRIV_LOGIN_SSH
Read Only : True
ID : ISI_PRIV_SMB
Read Only : False
Uzyskaj prawidłowy identyfikator UID/GID dla użytkownika z węzła, który może wykonać operację:
cluster-1# isi auth groups view domain\\group
Name: DOMAIN\group
DN: CN=group,CN=Users,DC=domain,DC=com
SID: S-1-5-21-463481935-3723234361-2963677383-1144
GID: 1000010
Domain: DOMAIN
Sam Account Name: group
Provider: lsa-activedirectory-provider:DOMAIN.COM
Generated GID: Yes
Zastosuj UID/GID zamiast nazwy grupy:
cluster-1# isi auth roles modify --role=newrole --add-gid=1000010
cluster-1# isi auth roles view newrole
Name: newrole
Description: -
Members: DOMAIN\group
Privileges
ID : ISI_PRIV_LOGIN_SSH
Read Only : True
ID : ISI_PRIV_SMB
Read Only : False
Uwaga: To samo można zrobić dla użytkownika, zastępując "add-gid" przez "add-uid".
Konfiguracja pliku sudoers powinna teraz poprawnie odzwierciedlać uid/gid:
cluster-1# isi_for_array -s "egrep -i 'alias.*newrole' /usr/local/etc/sudoers"
cluster-1: User_Alias NEWROLE = %#1000010
cluster-2: User_Alias NEWROLE = %#1000010
cluster-3: User_Alias NEWROLE = %#1000010
Ponadto polecenia sudo powinny działać poprawnie:
cluster-1# isi_for_array -s sudo date
cluster-1: Fri Sep 12 17:20:14 CDT 2014
cluster-2: Fri Sep 12 17:20:14 CDT 2014
cluster-3: Fri Sep 12 17:20:14 CDT 2014
2. Zmień nazwę roli tak, aby nie zawierała znaku "-".
Zmień nazwę roli tak, aby nie zawierała łącznika:
cluster-1# isi auth roles modify --role=test-role --name=test_role
Zauważ, że nie ma już błędu składni:
cluster-1% % sudo date
Password:
3. Plik sudoers wymaga UID lub GID do identyfikacji użytkowników i grup, upewnij się, że wszyscy użytkownicy i grupy mają skojarzony UID lub GID.