sudoコマンド実行時のsudoersファイル構文エラー
Summary: 役割を構成した後、sudoコマンドを実行できず、sudoersファイルに構文エラーが表示されます。
Symptoms
「sudo」コマンドを実行すると、1つまたは複数のノードで失敗する可能性があります。
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
これは、さまざまな理由で発生する可能性があります。
1.ロールに追加されたユーザーまたはグループは、影響を受けるノードでは解決できません。
問題が発生しているノードでは、追加されたユーザーまたはグループが解決できない場合があります。
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
ユーザーまたはグループが解決できないため、ノードは、のGID/UIDを見つけることができません。 sudoers ファイルを見て、 /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が入力されていないため、構文エラーが発生します。
2.作成されたロールの名前にハイフンが含まれています。
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
たとえば、次のエラーは行 124 に存在します。
cluster-1# grep -n '' /usr/local/etc/sudoers | grep ^124
124:User_Alias TEST-ROLE = #1000003
3.ユーザーまたはグループにUIDまたはGIDが関連付けられていない。
Resolution
1.ノードがユーザー名またはグループ名をUID/GIDに変換できない場合は、代わりにUID/GIDで指定されたユーザー/グループを追加する必要があります。
役割の構成からユーザー名またはグループ名を削除します。
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
操作を実行できるノードから、ユーザーに適切なUID/GIDを取得します。
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
グループ名ではなくUID/GIDを適用します。
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
注:同じことをユーザーに対しても行い、"add-gid" を "add-uid" に置き換えます。
これで、sudoersファイル構成に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
また、sudoコマンドは正しく機能するはずです。
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.役割の名前を変更して、「-」を含まないようにします。
ハイフンを含まないようにロールの名前を変更します。
cluster-1# isi auth roles modify --role=test-role --name=test_role
構文エラーがなくなったことに注意してください。
cluster-1% % sudo date
Password:
3.sudoersファイルでは、ユーザーとグループを識別するためにUIDまたはGIDが必要であり、すべてのユーザーとグループにUIDまたはGIDが関連づけられていることを確認する。