특정 폴더에 대한 액세스 권한만 가진 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 액세스 권한을 부여하려면 다음을 수행하세요.
- "sftponly"와 같은 새 그룹을 시스템에 추가합니다.
- 이 그룹에 대해 제한된 권한을 가져야 하는 사용자를 시스템에 추가합니다. /bin/true와 같은 제한된 셸을 제공할 수도 있지만 필수는 아닙니다.
/etc/ssh/sshd_config
SSH 구성 파일을 변경하려면 다음 줄을 사용하세요(일반적으로).
하위 시스템 SFTP 내부 SFTP 경쟁 그룹 sftponly Chroot 디렉터리 %h TCP 전달을 허용하시겠습니까? X11 착신번호 ForceCommand 내부 SFTP
이렇게 하면 SSH 내부의 sftp 하위 시스템이 활성화되고 시스템 그룹의 구성원이 로그인할 때 해당 시스템만 사용하도록 강제됩니다. 또한 홈 디렉토리로 루트를 지정합니다. 이를 홈 디렉토리의 하위 폴더로 변경하여 ChrootDirectory %h/musteri_sftp
나머지 시스템 파일을 볼 수 없지만 홈 폴더의 특수 하위 폴더에 직접 로그인할 수 있도록 할 수 있습니다.
콜 젤라틴.
답변2
제 생각에는 이것은 매우 어렵고 심지어 불가능하다고 생각합니다. 사용자가 SSH를 통해 연결하는 경우 최소한 셸이 필요합니다 bash
. 실행하려면 /bin/bash
access 가 필요합니다 /bin
. 그 자체는 (예를 들어 )에서 무언가를 읽어야 bash
하므로 사용자 도 이 디렉토리에 머물기를 원할 뿐만 아니라 파일을 실행하기를 원할 수도 있습니다 . 약간의 데모입니다. 사용자에게 액세스 권한이 없는지 실제로 알 수 없는 등 몇 가지 종속성이 더 있습니다 ./etc
/etc/bash.bashrc
/etc
vim
/usr/bin
/tmp
당신의 의도를 생각해야합니다. 누군가가 웹 서비스의 일부에 대해 읽기/쓰기 액세스 권한만 갖기를 원하시나요? 그런 다음 FTP와 같은 것을 설정하여 특정 디렉터리를 해당 사용자에게 내보낼 수 있습니다. 따라서 SSH 액세스 없이 이 파일을 읽고 쓸 수 있습니다.
또 다른 좋은 솔루션은 저장소입니다. 예를 들어 GIT 저장소를 설정하고 사용자가 이를 복제하도록 허용합니다. 그는 로컬에서 변경 사항을 적용하고 패치를 보낼 수 있습니다. 패치 적용 여부를 결정하면 문제가 있는 패치를 쉽게 롤백할 수 있습니다.