sudo 명령을 실행할 때 sudoers 파일 구문 오류 발생
Summary: 역할을 구성한 후 sudo 명령을 실행할 수 없으며 sudoers 파일에 구문 오류가 표시됩니다.
Symptoms
"를 실행할 때sudo" 명령을 실행하면 하나 또는 여러 노드에서 실패할 수 있습니다.
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 파일에서 내보낸 고유한 SSL 라이브러리를 제공합니다.
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가 있는지 확인합니다.