쓰기 권한이 있는 특정 디렉토리로 SSH 사용자를 제한하는 방법은 무엇입니까?

쓰기 권한이 있는 특정 디렉토리로 SSH 사용자를 제한하는 방법은 무엇입니까?

다음 구성을 사용하고 ssh 사용자를 특정 폴더로 성공적으로 제한했지만 그룹의 권한을 읽기+쓰기로 변경하면 사용자가 서버에 로그인할 수 없습니다.

/etc/passwd내가 변한 후에

/bin/bash사용자/bin/false

/etc/ssh/sshd_config내가 추가하기 전에

Subsystem sftp internal-sftp
    Match Group dnduser
    ChrootDirectory /home/dnduser
    ForceCommand internal-sftp
    AllowAgentForwarding no
    AllowTcpForwarding no
    X11Forwarding no

작업 /home/dnduser디렉터리 권한에는 쓰기 권한이 없습니다.

#chmod 755 /home/dnduser -R

#chown root:dnduser /home/dnduser -R

권한을 다음으로 변경하면

#chmod 775 /home/dnduser -R

사용자가 로그인할 수 없습니다

답변1

재귀적 chmod는 위험하며 디렉터리와 파일의 모드를 동일하게 변경하므로 피해야 합니다. 파일은 일반적으로 실행 비트가 필요하지 않으며 Ulrich가 지적했듯이 $HOME의 일부 파일은 그룹화하거나 읽을 수 없습니다. / 쓰기 가능.

수리 손상:

find /home/dnduser -type f -exec chmod 640 {} \;
find /home/dnduser -type d -exec chmod 750 {} \;

두 번째 man sshd_config문장이 가장 관련성이 높습니다.

 ChrootDirectory
         Specifies the pathname of a directory to chroot(2) to after authentication.  At session startup sshd(8) checks that all components of the
         pathname are root-owned directories which are not writable by any other user or group.  After the chroot, sshd(8) changes the working direc‐
         tory to the user's home directory.  Arguments to ChrootDirectory accept the tokens described in the TOKENS section.

디버깅을 돕기 위해 "ssh -vvv"를 사용하여 hyperverbose 모드에서 ssh를 실행하고 서버 측(RH 기반 시스템의 경우)에서 /var/log/secure 및 /var/log/messages에 대한 로그 출력을 볼 수 있습니다. 서버 로그 출력에서 ​​다음에 조사할 위치에 대한 포인터를 얻어야 하지만 매뉴얼 페이지에서는... 문제의 원인을 가리키는 것 같습니다....

답변2

매뉴얼 페이지에서sshd_config:

세션 시작 시 sshd(8)경로 이름의 모든 구성 요소가 다른 사용자나 그룹이 쓸 수 없는 루트 소유의 디렉터리인지 확인하기 위해 검사됩니다.

사용자가 특정 디렉터리에 액세스할 수 있도록 하려면 chroot하위 디렉터리에만 쓸 수 있습니다. 기간.

관련 정보