sudo komutlarını çalıştırırken sudoers dosya sözdizimi hatası
Summary: Bir rolü yapılandırdıktan sonra sudo komutlarını çalıştıramıyorsunuz ve sudoers dosyasında bir söz dizimi hatasıyla karşılaşıyorsunuz.
Symptoms
Bir çalıştırırken "sudokomutunu çalıştırırsanız, bir veya daha fazla düğümde başarısız olabilir, örneğin:
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
Bu, çeşitli nedenlerle ortaya çıkabilir:
1. Bir role eklenen kullanıcı veya grup, etkilenen düğümlerde çözümlenemiyor:
Sorunun görüldüğü düğümlerde, eklenen kullanıcı veya grubun çözümlenemediğini görebilirsiniz:
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
Kullanıcı veya grup çözümlenemediğinden düğüm, için bir GID/UID bulamıyor sudoers dosyasına bakın ve /usr/local/etc/sudoers :
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 =
UID/GID bilgisinin doldurulmadığına ve bunun bir sözdizimi hatasına yol açtığına dikkat edin.
2. Oluşturulan rolün adında bir kısa çizgi var:
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
Örneğin, bu hata 124. satırda mevcuttur:
cluster-1# grep -n '' /usr/local/etc/sudoers | grep ^124
124:User_Alias TEST-ROLE = #1000003
3. Kullanıcı veya grubun ilişkili bir UID veya GID'si yoktur.
Resolution
1. Düğümler bir kullanıcı veya grup adını UID/GID'ye çeviremiyorsa bunun yerine UID/GID tarafından belirtilen kullanıcıyı/grubu eklemeliyiz.
Rol yapılandırmasından kullanıcı veya grup adını kaldırın:
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
İşlemi gerçekleştirebilen bir düğümden kullanıcı için uygun UID/GID'yi edinin:
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
Grup adı yerine UID/GID'yi uygulayın:
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
Not: Aynı işlem, "add-gid" yerine "add-uid" kullanan bir kullanıcı için de yapılabilir.
Sudoers dosya yapılandırması artık uid/gid'yi düzgün bir şekilde yansıtmalıdır:
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
Ayrıca, sudo komutları düzgün çalışmalıdır:
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. Rolü "-" içermeyecek şekilde yeniden adlandırın.
Rolü, kısa çizgi içermeyecek şekilde yeniden adlandırın:
cluster-1# isi auth roles modify --role=test-role --name=test_role
Artık bir söz dizimi hatası olmadığına dikkat edin:
cluster-1% % sudo date
Password:
3. Sudoers dosyası, kullanıcıları ve grupları tanımlamak için bir UID veya GID gerektirir, tüm kullanıcıların ve grupların ilişkili bir UID veya GID'ye sahip olduğundan emin olun.