PAM : pam_mkhomedir 전에 명령을 실행 하시겠습니까?


8

사용자가 시스템에 로그인하고 홈 디렉토리가없는 경우 pam_mkhomedir 을 사용하여 사용자의 홈 디렉토리를 작성 하려고 합니다. 이것은 일반적인 관행입니다. pam_mkhomedir에 대한 간단한 설명은 다음과 같습니다.

pam_mkhomedir PAM 모듈은 세션이 시작될 때 사용자 홈 디렉토리가 없으면 작성합니다. 이를 통해 사용자는 분산 파일 시스템을 사용하거나 많은 수의 디렉토리를 미리 작성하지 않고도 중앙 데이터베이스 (예 : NIS, kerberos 또는 LDAP)에있을 수 있습니다. 기본 디렉토리 (일반적으로 / etc / skel /)는 기본 파일을 복사하고 생성을위한 umask를 설정하는 데 사용됩니다.

그러나 이것은 ZFS를 실행하는 FreeBSD 8.2 시스템입니다. 사용자 당 하나의 ZFS 파일 시스템이 필요하므로 ZFS 명령을 먼저 실행해야합니다 . pam_mkhomedir할 수 mkdir있지만, 우리는 같은 것을해야합니다 zfs create /zpool/home/$USER.

PAM을 사용하여 사용자의 첫 번째 로그인 세션 동안 명령을 실행할 수 있는지 아는 사람이 있습니까?


나는 solarisinternals.com 링크를 archive.org의 아카이브 버전으로 교체했습니다. 지적 해 주신 @Norman Gray에게 감사드립니다.
Stefan Lasiewski

답변:


9

PAM 모듈이라고 pam_exec합니다. ZFS 볼륨을 확인 및 / 또는 생성하는 스크립트를 작성하는 경우 대화식 로그인, 기본 쉘 및 스켈레톤 디렉토리 등을 가정하지 않고 기존 PAM 규칙에 체인을 연결하여 멋지게 유지할 수 있습니다. 예를 들어,

session required pam_unix.so
session required pam_exec.so check_zfs.sh $PAM_USER

또는 특정 설정에 적합한 모든 것.

(Tom Shaw가 의견에서 지적했듯이 session required pam_mkhomedir.so중복 될 수 있습니다.)


pam_mkhomedir.so 줄에 오타가있는 것을 제외하면 좋습니다. pam.conf의 오타는 좋지 않습니다! -check_zfs.sh 스크립트가 모든 더러운 작업을 수행하는 경우 어쨌든 줄이 필요하다고 생각하지 않습니다.
Tom Shaw

@Tom PAM 모듈이 당신을 위해 할 때 왜 바퀴를 다시 발명합니까?
Andrew

2
문제의 핵심은 "mkdir"이 아닌 "zfs create"를 사용하여 홈 디렉토리를 만들고자한다는 것입니다. pam_exec를 사용하여 수행됩니다. 이 시점에 디렉토리가 존재하므로 후속 pam_mkhomedir은 아무것도하지 않습니다!
Tom Shaw

@TomShaw 실제로.
앤드류

3

질문에 따르면 귀하의 질문에는 잘못된 가정이 포함되어 있습니다. PAM조차도 사용자의 첫 로그인인지 전혀 모릅니다. 사용자에게 홈 디렉토리가 있는지 여부 만 알 수 있습니다.

따라서 그 경고를 염두에두고 PAM은 그것을하지 않지만 /etc/bashrc명령 앞에 사용자의 홈 디렉토리에서 도트 파일을 확인한 다음 삭제하여 쉽게 무언가를 실행할 수 있습니다 . 루트 개인이 필요하십니까? 적절하게 잠겨 sudo있거나 setuid 바이너리가 가장 적합 할 것입니다. 두 옵션 모두 도트 파일을 사용자가 수정하거나 삭제할 수없는 위치에 배치 할 수있는 옵션을 제공합니다 (그러한 종류의 항목에 관심이있는 경우).


혼란 스러워요. pam_mkhomedir이 홈 디렉토리를 작성하고 / etc / skel 등의 내용을 복사하지 않습니까? C 코드 (FreeBSD에서)를 보았고, 스켈레톤 파일을 새로 만든 homedir에 복사하는 위치를 알 수 있다고 생각했습니다.
Stefan Lasiewski

사용자에게 홈 디렉토리가 없다고해서 이전에 해당 시스템에 로그인하지 않았다는 의미는 아닙니다. 예를 들어 홈 디렉토리가 삭제되었을 수 있습니다. 그러나 이것은 대부분 시맨틱하고 쪼개지는 머리카락입니다.
Red Tux

@red : 이해했습니다. 내 질문을 업데이트했습니다.
Stefan Lasiewski

1

두 가지 선택이 있습니다.

1) 디렉토리를 작성하기 전에 pam_mkhomedir의 소스를 수정하여 zfs 파일 시스템을 먼저 작성하십시오. 2) pam_mkhomedir을 정상적으로 실행 한 다음 스크립트를 추가하여 사용자가 로그 아웃 한 자체 zfs 파일 시스템에 폴더가 없는지 확인하십시오. 이러한 경우를 발견하면 / home 디렉토리를 이동하고 파일 시스템을 작성한 다음 파일을 디렉토리로 다시 이동하십시오.

초기 하루 동안 사용자를 메인 / 홈에 두는 것이 너무 많은 문제를 일으키지 않을 것으로 생각되므로 후자의 옵션 인 더 간단한 옵션으로 갈 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.