특정 폴더에 대한 액세스 권한만 가진 SSH 사용자를 추가하는 방법은 무엇입니까?

특정 폴더에 대한 액세스 권한만 가진 SSH 사용자를 추가하는 방법은 무엇입니까?

특정 폴더에 대한 액세스 권한만 가진 SSH 사용자를 추가하는 방법은 무엇입니까?

useradd -d /var/www/xyz.com.tr/musteri  -s /bin/bash -g sshd musteri

라는 사용자를 만들었습니다 musteri. 홈 폴더와 그룹을 설정했습니다. 그래서 musteri사용자를 "/var/www/xyz.com.tr/musteri"에 통합하고 싶습니다 . 다른 폴더에 액세스하는 것을 원하지 않습니다.

답변1

müşteriler가 실제로 쉘을 제공하지 않고도 폴더에 대한 파일 전송 액세스 권한을 갖기를 원하는 것 같습니다. 이건 좋은 일이니까빈포스는 지적했다., 제한된 액세스 권한을 가진 셸을 사람들에게 제공하는 것은 까다롭습니다. 셸을 실행하려면 시스템 전체에 분산된 다양한 항목에 대한 액세스가 필요하기 때문입니다.

특정 폴더에 SFTP 액세스 권한을 부여하려면 다음을 수행하세요.

  1. "sftponly"와 같은 새 그룹을 시스템에 추가합니다.
  2. 이 그룹에 대해 제한된 권한을 가져야 하는 사용자를 시스템에 추가합니다. /bin/true와 같은 제한된 셸을 제공할 수도 있지만 필수는 아닙니다.
  3. /etc/ssh/sshd_configSSH 구성 파일을 변경하려면 다음 줄을 사용하세요(일반적으로).
    하위 시스템 SFTP 내부 SFTP

    경쟁 그룹 sftponly
        Chroot 디렉터리 %h
        TCP 전달을 허용하시겠습니까?
        X11 착신번호
        ForceCommand 내부 SFTP

이렇게 하면 SSH 내부의 sftp 하위 시스템이 활성화되고 시스템 그룹의 구성원이 로그인할 때 해당 시스템만 사용하도록 강제됩니다. 또한 홈 디렉토리로 루트를 지정합니다. 이를 홈 디렉토리의 하위 폴더로 변경하여 ChrootDirectory %h/musteri_sftp나머지 시스템 파일을 볼 수 없지만 홈 폴더의 특수 하위 폴더에 직접 로그인할 수 있도록 할 수 있습니다.

콜 젤라틴.

답변2

제 생각에는 이것은 매우 어렵고 심지어 불가능하다고 생각합니다. 사용자가 SSH를 통해 연결하는 경우 최소한 셸이 필요합니다 bash. 실행하려면 /bin/bashaccess 가 필요합니다 /bin. 그 자체는 (예를 들어 )에서 무언가를 읽어야 bash하므로 사용자 도 이 디렉토리에 머물기를 원할 뿐만 아니라 파일을 실행하기를 원할 수도 있습니다 . 약간의 데모입니다. 사용자에게 액세스 권한이 없는지 실제로 알 수 없는 등 몇 가지 종속성이 더 있습니다 ./etc/etc/bash.bashrc/etcvim/usr/bin
/tmp

당신의 의도를 생각해야합니다. 누군가가 웹 서비스의 일부에 대해 읽기/쓰기 액세스 권한만 갖기를 원하시나요? 그런 다음 FTP와 같은 것을 설정하여 특정 디렉터리를 해당 사용자에게 내보낼 수 있습니다. 따라서 SSH 액세스 없이 이 파일을 읽고 쓸 수 있습니다.
또 다른 좋은 솔루션은 저장소입니다. 예를 들어 GIT 저장소를 설정하고 사용자가 이를 복제하도록 허용합니다. 그는 로컬에서 변경 사항을 적용하고 패치를 보낼 수 있습니다. 패치 적용 여부를 결정하면 문제가 있는 패치를 쉽게 롤백할 수 있습니다.

관련 정보