Solaris에서 현재 로그인 한 사용자가 LDAP 사용자인지 로컬 사용자인지 식별하는 방법을 알고 싶습니다.
어떤 명령을 사용합니까?
또는 사용자가 로그인 한 후 LDAP 사용자 또는 로컬 사용자임을 나타내는 속성을 반환하는 getspname, getpwnam과 같은 임의의 C 런타임 기능?현재 로그인 한 사용자가 Solaris의 LDAP 사용자인지 식별하는 방법
답변
쉽지 않을 것입니다. 암호 파일을 열고 찾아 볼 수 있습니다. 그들이 없으면 LDAP를 끝내십시오. 물론 NIS가 아니라면. 또는 Kerberos. 사용중인 Solaris 버전에 PAM이있는 경우 해당 버전을 읽어 보면 도움이되는지 확인할 수 있습니다.
실제로 인증하는 데 사용 된 자격 증명을 알 수있는 방법을 모르겠지만 LDAP 데이터베이스에서 찾아보고 해당 항목이 있는지 확인하는 것이 더 쉬워야합니다. ldap_client 유틸리티를 사용하여 항상 사람들을 찾습니다. 당신은 LDAP 서버의 이름과 몇 가지 다른 세부 사항을 알아야합니다. 그것을위한 매뉴얼 페이지를 확인하십시오. 예를 들어, 사용자가 로컬 계정을 가지고 LDAP에있는 경우 로그인시 확인되는 암호는 시스템 구성에 따라 다릅니다.
Ldaplist는 사용자가 LDAP 데이터베이스에 항목이 있는지 알려줍니다. 사용자가/etc/passwd 파일에 항목을 가지고있는 경우를 분류하지는 않습니다.
ldaplist passwd username
"local"인 UID가 "LDAP"와 별개의 범위에 있다고 가정합니다. 또한 nsswitch가 passwd, shadow 및 or 그룹에 대해 파일 및 ldap을 사용하도록 구성되어 있다고 가정합니다. 'getent'명령은 GNU libc 시스템에 있어야합니다. 로컬 '파일'데이터베이스가 LDAP 소스보다 작은 것으로 가정하고 두 소스 중 더 작거나 빠른 테스트를 원할 것입니다. 주어진 UID이 지금보다 창조적 인 그렙이 될 수있는 파일의 기본 GID와 일치 할 수
$ getent --service=files passwd | grep 655
에 비슷한 뭔가를해야만 실행할 수있는 databses 중 하나 존재 여부를 결정하기를 원한다면
주문.
$ getent --service=files passwd | grep -e $.*:.*:655
이것을 스크립트 가능 항목으로 바꾸려면 끝에 'wc'를 붙이면 정수 테스트가 필요합니다.
$ getent --service=files passwd | grep -e $.*:.*:655 | wc -l
이 값이 없으면 0을, 발견되면 1 (또는 그 이상)을 반환해야합니다. 우리는 하나의 소스만을 테스트 할 것입니다. 왜냐하면 우리는 유효한 UID를 테스트 중이라고 가정하고 있으며, 여기에없는 다른 소스에있을 것입니다.
마지막으로, nsswitch를 사용하는 동안이 기능을 지원하는 C 라이브러리를 사용하여 유효한지 확인해야합니다. 나는 그들과 처음으로 경험을 쌓지는 못했지만 우리가 여기서했던 것처럼 특정 소스 만 사용하는 옵션을 전달할 수 있다고 가정합니다. 또는 cat/etc/passwd와 동일한 논리를 사용할 수 있습니다. 다시 생각해 보면 그들이 여기에 없다면 그들은 일을하고있는 것입니다. 사용자가 FreeIPA 서버의 LDAP 데이터베이스에있는 경우
'--service' 플래그는 GNU에 고유하며 Solaris getent에서 구현되지 않는다. – jlliagre
는 ipaclient
패키지의 일부로 sss
를 사용하는 경우,
getent --service=sss passwd $USER | wc -l
는 당신을 말할 것이다.
- 1. 사용자가 테스트 사용자인지 확인
- 2. 현재 장고 관리에 로그인 한 사용자 수를 식별하는 방법은 무엇입니까?
- 3. 사용자가 로그인 한 횟수가
- 4. Codeigniter 현재 로그인 한 사용자
- 5. 데이터베이스에서 로그인 세부 정보를 식별하는 방법
- 6. sudo를 통해 현재 사용자를 식별하는 가장 신뢰할 수있는 방법
- 7. Django가 사용자가 로그인 한 상태에서 캐싱보기를 방지합니다.
- 8. 현재 로그인 한 사용자의 Teamcity 속성
- 9. 현재 로그인 한 사용자의 ID는 어떻게 얻습니까?
- 10. 현재 로그인 한 사용자 얻기 (FullToken Context)
- 11. 현재 로그인 한 사용자를 쿼리에 사용하십시오.
- 12. 로그인 한 현재 사용자의 데이터 가져 오기
- 13. openid로 로그인 한 후 LDAP 인증을 무시하는 방법은 무엇입니까?
- 14. backbone.js - 사용자가 로그인 한 경우 처리
- 15. 사용자가 로그인 한 후 페이지로 리디렉션하려고했습니다.
- 16. 사용자가 로그인 한 후 기본 경로 변경
- 17. 사용자가 연결 한 후 Facebook 팝업 로그인 창을 닫는 방법?
- 18. 로그인 한 사용자가 방문한 페이지를 방문하여 블록을 구동하는 방법
- 19. 레일 및 Authlogic. 현재 로그인 한 사용자보기
- 20. 현재 로그인 한 ACEGI 태그 사용자 객체
- 21. 사용자가 이미 로그인 한 경우 기준으로 로그인/로그 아웃 전환
- 22. Android : 로그인 한 후 사용자가 로그인 페이지로 돌아 가지 않도록하기
- 23. 현재 로그인 한 사용자 세부 정보를 얻는 방법 zend framework
- 24. 현재 로그인 한 Windows 사용자에게 NAnt를 부여하는 방법
- 25. 사용자가 페이스 북에 로그인 한 페이스 북에서 C#
- 26. 이 사용자가 익명인지 또는 실제로 시스템에있는 사용자인지 어떻게 확인합니까?
- 27. EKEvent에서 EKAlarm을 식별하는 방법
- 28. 사용자가 로그인하지 않은 상태에서 HTML 양식을 제출하지 못하게하는 방법, 사용자가 로그인 한 경우 제출을 허용 하시겠습니까?
- 29. 사이트 사용자가 ASP.NET에서 고유 한 사용자인지 아니면 재진 사용자인지를 확인하는 방법은 무엇입니까?
- 30. collective.googleanalytics '현재 로그인 한 사용자가 웹 로그 분석 계정을 찾을 수 없습니다.'
답장을 보내 주셔서 감사합니다. 암호 파일을 기반으로 결론을 내릴 생각은 없습니다.모든 사람이 아닌 이유가 쉐도우 암호 파일에 액세스 할 수 있습니다. getent passwd 사용자의 출력을 기반으로 결론을 내릴 수 있는지 알고 있습니까? 출력 형식이 될 수 있습니다. 로컬 사용자 출력 형식 일 수 있으며 LDAP 사용자 형식이 다를 수 있습니다. –
당신은 그림자 파일이 필요하지 않습니다. getpwent는 LDAP로부터 가공 된 엔트리를 반환 할 수있다 ... – bmargulies