나는 digitalocean에 우분투 서버를 가지고 있고 누군가 내 서버의 도메인에 대한 폴더를주고 싶습니다. 내 문제는 그 사용자가 내 폴더 나 파일을 보거나 폴더를 옮기고 싶지 않다는 것입니다.
폴더에서이 사용자를 제한하고 다른 파일 / 디렉토리를 다른 곳으로 이동하거나 볼 수 없도록하려면 어떻게해야합니까?
나는 digitalocean에 우분투 서버를 가지고 있고 누군가 내 서버의 도메인에 대한 폴더를주고 싶습니다. 내 문제는 그 사용자가 내 폴더 나 파일을 보거나 폴더를 옮기고 싶지 않다는 것입니다.
폴더에서이 사용자를 제한하고 다른 파일 / 디렉토리를 다른 곳으로 이동하거나 볼 수 없도록하려면 어떻게해야합니까?
답변:
이런 식으로 내 문제를 해결했습니다.
$ sudo addgroup exchangefiles
$ sudo mkdir /var/www/GroupFolder/
$ sudo chmod g+rx /var/www/GroupFolder/
$ sudo mkdir -p /var/www/GroupFolder/files/
$ sudo chmod g+rwx /var/www/GroupFolder/files/
$ sudo chgrp -R exchangefiles /var/www/GroupFolder/
그 후 나는 /etc/ssh/sshd_config
파일 끝에 가서 추가했습니다.
Match Group exchangefiles
# Force the connection to use SFTP and chroot to the required directory.
ForceCommand internal-sftp
ChrootDirectory /var/www/GroupFolder/
# Disable tunneling, authentication agent, TCP and X11 forwarding.
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no
이제 그룹에 오바마 이름을 가진 새 사용자를 추가하겠습니다.
$ sudo adduser --ingroup exchangefiles obama
이제 모든 것이 완료되었으므로 ssh 서비스를 다시 시작해야합니다.
$ sudo service ssh restart
주의 : 이제 사용자는 file
디렉토리에서 아무것도 할 수 없습니다.
모든 파일이 폴더에 있어야 함을 의미합니다.
sudo su - obama
했지만 여전히 다른 사용자의 파일을 볼 수 있습니다. @badr
제한은 합리적인 문제이며 일관되게 정의해야합니다. 할 수있는 일은 사용자 의 제한된 쉘 을 기본 쉘로 정의하는 것 입니다.
예를 들어 /bin/rksh
에서 사용자의 사전 정의 된 쉘 대신 (제한된 kornshell)을 해당 사용자의 기본 쉘로 설정하십시오 /etc/profile
.
참고 : 이 이름의 실행 파일이 시스템에 존재하지 않는 경우 다음 하드 링크를 생성 ln /bin/ksh /bin/rksh
하고 ksh
이 제한되거나하지의 여부 이름으로 결정합니다.
제한 쉘 (예)을하고 막을 cd
명령 또는으로 명령을 특정 /
호출에 (명시 적 경로), 그리고 변화 허용하지 않는 PATH
, SHELL
또는 ENV
변수를 출력 리디렉션은 금지된다.
당신은 할 수 있습니다 여전히 제공하는 미리 정의 된 (스크립트 구현 제어하에!) 사용자가 제한되지 않은 환경에서 특정 스크립트를 (들)을 실행 할 수 있도록 사용자에게 쉘 스크립트를.
이 명령을 chroot
사용하면 사용자에 대한 제한된 루트를 만들 수 있습니다.이 질문 은 사용자 의 개념 chroot
과 사용법을 설명 합니다.
업데이트 : 디지털 오션에 설치된 chroot jail을 검색 하면 해당 환경에 대한 추가 문서가 제공됩니다. 여기 당신이 필요로하는 것과 관련이 있다고 생각되는 커플이 있습니다.
Ubuntu 12.04 VPS에서 테스트를 위해 Chroot 환경을 구성하는 방법
chroot jailed 사용자에게 제한된 SSH 액세스를 허용하는 방법
다음 은 FloHimself가 제안한 jailkit 과 관련된 것 입니다.