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


17

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

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

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


사용자가 전체 셸 액세스 권한을 갖거나 sftp 및 rsync와 같은 파일 복사 프로토콜 만 갖기를 원하십니까?
Gilles 'SO- 악마 그만'

후자의 경우 scponly쉘로 조사 chroot하여 해당 디렉토리 및 다른 곳으로의 액세스를 제한하기 위해 모드 에서 작동 할 수 있습니다.
Shadur

1
@Gilles-sftp를 통해 액세스하고 싶습니다. 그러나 다른 폴더에 액세스하고 싶지 않습니다.
Cell-o

1
@ Cell-o : 셸이 아닌 파일 전송 프로토콜이 몇 개만 필요한 경우 chroot plus scponly 또는 rssh (Google scponly chroot또는 rssh chroothowtos로 연결)를 사용하십시오.
Gilles 'SO- 악마 그만해'

ACL을 사용하는 것은 어떻습니까?
fpmurphy

답변:


19

müşteriler가 실제로 쉘을주지 않고 폴더에 파일 전송 액세스를 갖길 원하는 것처럼 들립니다. binfalse가 지적했듯이 쉘이 실행하기 위해 시스템에 흩어져있는 모든 종류의 항목에 액세스해야하기 때문에 제한된 액세스 권한을 가진 사람들에게 쉘을 제공하는 것이 까다로워지기 때문에 이것은 좋은 것 입니다.

SFTP에 특정 폴더에 대한 액세스 권한을 부여하려면 다음과 같이하십시오.

  1. 시스템에 새 그룹을 추가하십시오 (예 : 'sftponly').
  2. 이 그룹에 대한 제한된 권한이 있어야하는 시스템의 사용자를 추가하십시오. / bin / true와 같은 제한된 쉘을 제공 할 수도 있지만 필수는 아닙니다.
  3. /etc/ssh/sshd_config이 줄로 ssh 구성 파일을 변경하십시오 (보통 ).
    서브 시스템 sftp internal-sftp

    일치 그룹 sftponly
        ChrootDirectory % h
        AllowTCPForwarding 아니오
        전달 아니오
        ForceCommand 내부 FTP

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

코레이 겔신.


Öncelikle teşekkürler. ;) 언급했듯이 SFTP를 설정했지만 iptables에 관한 문제가 있습니다. -> RH- 방화벽 -1- 입력 -m 상태-상태 NEW -m tcp -p tcp --dport 21 -j ACCEPT
Cell-o

1
Birşey değil. FTP는 포트 21을 사용하지만 SFTP는 SSH 채널을 통해 실행 되는 ftp 와 같은 프로토콜이므로 기본적으로 22 인 SSH 포트를 사용합니다.
Caleb

또한 기존의 모든 서브 시스템 명령을 찾아서 주석 처리해야합니다 (예 : 서브 시스템 sftp / usr / lib / openssh / sftp-server)
CnrL

내 문제를 해결하고 편리한 터키어 문구를 배웠습니다! 보너스!
eimajenthat

2

제 생각에 이것은 불가능하지는 않지만 매우 어렵습니다. 사용자가 SSH를 통해 연결할 때는 최소한 셸이 필요합니다 bash. 실행하려면 /bin/bash액세스 권한이 필요합니다 /bin. bash자체는 /etc(예 :)에서 일부 내용을 읽어야 /etc/bash.bashrc하므로 사용자도에 액세스해야 /etc합니다. 사용자가이 디렉토리에서 놀고 싶지 않다고 가정하면 파일을 읽고 싶을 수도 있지만 예를 들어 실행하려면에 vim액세스해야 /usr/bin합니다.
이것은 약간의 데모입니다. 더 많은 종속성이 있습니다. 예를 들어 사용자가에 액세스 할 수 없으면 어떻게 될지 모르겠습니다 /tmp.

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


rbash정확히이 작업을 수행하도록 설계되었습니다.
bahamat

이것을 제한된 쉘 이라고합니다 . 그러나 Cell-o는 파일 전송 만 허용하기 때문에 올바른 도구가 아닙니다.
Gilles 'SO- 악마 그만'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.