/var/log/cron을 추적하는 동안 PAM 권한으로 인해 cron 작업이 실패했음을 발견했습니다. 내 access.conf에는 루트가 크론 작업을 실행할 수 있는 권한이 있는지 확인하기 위해(또는 보장한다고 생각했기 때문에) 다음과 같은 주석 처리를 제거했습니다.
# User "root" should be allowed to get access via cron .. tty5 tty6.
+ : root : cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6
저는 영역, sssd, kerberos를 통해 Windows Active Directory 인스턴스에 연결된 Centos 7 커널 3.10.0-693.21.1.el7.x86_64를 사용하고 있습니다. 내 설치 단계는 여기에서 찾을 수 있습니다.Windows AD에 연결하기 위한 최고의 인증 메커니즘
나는 지금 헤매고 있는데 그 원인이 무엇인지 모르겠습니다. 루트 비밀번호가 만료되지 않았는지, 만료되지 않았는지 다시 확인했습니다. 현재 루트 액세스는 Windows 보안 그룹을 통해 구성됩니다.
어떤 도움이라도 대단히 감사하겠습니다!
편집하다 pam_access.so 끝에 디버그를 추가하고 다음을 얻었습니다.
crond[17411]: pam_access(crond:account): login_access: user=root, from=cron, file=/etc/security/access.conf crond[17411]: pam_access(crond:account): line 60: - : ALL EXCEPT wheel shutdown sync : LOCAL root crond[17411]: pam_access(crond:account): list_match: list=ALL EXCEPT wheel shutdown sync, item=root crond[17411]: pam_access(crond:account): user_match: tok=ALL, item=root crond[17411]: pam_access(crond:account): string_match: tok=ALL, item=root crond[17411]: pam_access(crond:account): user_match: tok=wheel, item=root crond[17411]: pam_access(crond:account): string_match: tok=wheel, item=root crond[17411]: pam_access(crond:account): user_match: tok=shutdown, item=root crond[17411]: pam_access(crond:account): string_match: tok=shutdown, item=root crond[17411]: pam_access(crond:account): user_match: tok=sync, item=root crond[17411]: pam_access(crond:account): string_match: tok=sync, item=root crond[17411]: pam_access(crond:account): user_match=1, "root" crond[17411]: pam_access(crond:account): list_match: list=LOCAL root, item=root crond[17411]: pam_access(crond:account): from_match: tok=LOCAL, item=cron crond[17411]: pam_access(crond:account): string_match: tok=LOCAL, item=cron crond[17411]: pam_access(crond:account): from_match=1, "cron" crond[17411]: pam_access(crond:account): access denied for user
"cron"의 루트
답변1
결국 access.conf를 다음과 같이 재정렬했습니다. 이것은 구성 파일의 두 번째 항목으로 cron 항목이 있다는 점에서 cron에 대한 루트 액세스를 올바르게 설정하는 것 같습니다.
#
# Disallow non-root logins on tty1
#
#-:ALL EXCEPT root:tty1
#
# User "root" should be allowed to get access via cron .. tty5 tty6.
+ : root : cron crond :0 tty1 tty2 tty3 tty4 tty5 tty6
#
# Disallow console logins to all but a few accounts.
#
-:ALL EXCEPT wheel shutdown sync:LOCAL root
아시는 분 계시겠지만 구성에 입력된 방식에 따라 권한이 부여되는 것으로 의심됩니다. 구성 항목을 통해 권한을 부여받은 경우에도 해당 항목 앞의 줄에서 액세스를 거부하는 경우 부여 항목이 먼저 나오므로 재정의됩니까?
답변2
다음 줄에 표시된 대로:
crond[17411]: pam_access(crond:account): access denied for user root' from cron'
cron에 의해 액세스가 거부된 것 같습니다. 시스템(일반적으로 또는 디렉토리)에 또는 파일이 있는지 확인하십시오 cron.allow
. 파일이 있으면 여기에 사용자를 추가해야 하며, 파일이 있고 루트가 목록에 있으면 삭제해야 합니다.cron.deny
/etc
/etc/cron.d
cron.allow
cron.deny