AD Samba 파일 서버, PAM, 사용자가 처음 연결할 때 할당량 설정

AD Samba 파일 서버, PAM, 사용자가 처음 연결할 때 할당량 설정

사용자가 처음으로 삼바 상자(Rocky Linux 8에서 실행됨)에 연결할 때 일부 디렉터리에 할당량을 설정하려고 합니다. 따라서 Samba 공유를 사용하려면 먼저 사용자가 컴퓨터에 연결해야 합니다(콘솔이나 SSH는 중요하지 않음). 그 동안 pam_exec.so가 실행하는 스크립트가 있어 여러 폴더를 생성하고 권한을 설정하며 파일을 생성합니다. 해당 파일에서 "setquota" 명령을 사용하려고 했지만 성공하지 못했습니다. 루트 세션에서 실행될 때 독립 실행형 명령 "setquota"가 올바르게 작동하므로 fstab 파일에 플래그를 올바르게 설정했습니다.

그래서 나는 pam_setquota.so 모듈을 사용해 보았습니다. 어쨌든 동일한 작업을 수행하기 때문입니다. 아니요, 같은 결과입니다. 나는 둘 다 사용자가 ActiveDirectory 사용자 형식이라는 점을 정말로 좋아하지 않는 것 같습니다. 사용자 형식은 DOMAIN\User입니다(일반적으로 DOMAIN\\User여야 합니다). Samba는 사용자를 10000부터 시작하는 uid에 매핑합니다. 사용자 형식을 변경하려고 했지만(\\의 다른 형태) 아무것도 작동하지 않습니다. 루트 셸에서 명령을 실행하면 올바른 결과가 보고됩니다.

pam_exec 실행 스크립트의 조각

if [[ "${PAM_USER}" == *\\* ]];then
    folder="/data/${PAM_USER}"
    if [ ! -d "$folder" ]; then
        mkdir "$folder"
        chmod 555 "$folder"
         .
         .
         .  
        quota_user="${PAM_USER}//\\/\\\\}"
        setquota -u ${quota_user} 0 10485760 0 0 /data
         .
         .
         .
    fi

if

pam_setquota 라인 session optional pam_setquota.so fs=/data overwrite=1 startuid=10000 enduid=0 bsoftlimit=0 bhardlimit=10485760 isoftlimit=0 ihardlimit=0

내가 달려가서 setquota -u DOMAIN\\User 0 10485760 0 0 /data그게 repquota /data 나한테 보여주면 할당량 결과

그리고 처음으로 접속한 사용자이기 때문에 UID #10000 이 필요합니다.

내가 여기서 무엇을 놓치고 있는 걸까요? 매우 감사합니다.

답변1

setquota는 그 단계에서는 아무런 의미가 없으므로 이를 호출하려면 전체 경로(/usr/sbin/setquota)를 사용해야 합니다.

그리고 예상대로 삼바 이름도 마음에 들지 않습니다. 다음을 사용하여 수정할 수 있습니다.

quota_user =`id -u ${PAM_USER}`
/usr/sbin/setquota -u ${quota_user} 0 10485760 0 0 /data

관련 정보