특정 디렉토리에만 액세스 할 수있는 SSH 사용자를 작성할 수 있습니까?


45

루트 계정으로 SSH를 사용하여 연결할 수있는 모든 가상 사설 서버가 있으며 모든 Linux 명령을 실행하고 모든 디스크 영역에 분명히 액세스 할 수 있습니다.

SSH를 사용 하여이 서버에 액세스 할 수 있지만 특정 디렉토리에만 액세스 할 수있는 다른 사용자 계정을 만들고 싶습니다. /var/www/example.com/

예를 들어, /var/www/example.com/logs/error.log FTP를 사용하여이 파일에 액세스 할 때이 사용자가 로그의 마지막 줄을 보려면 500MB를 다운로드해야하는 데이 사용자에게 HUGE error.log 파일 (500MB) 이 있다고 가정하십시오. 다음과 같은 것을 실행할 수 있습니다.

tail error.log

따라서 SSH를 사용하여 서버에 액세스 할 수 있어야하지만 모든 서버 영역에 액세스 권한을 부여하고 싶지 않습니다.

어떻게해야합니까?

답변:


29

chroot 사용자.


최신 정보:

Vincent DanenTechRepublic 기사 는 다음과 같이 말합니다.

OpenSSH 4.9p1 릴리스에서는 더 이상 타사 해킹이나 복잡한 chroot 설정에 의존하여 사용자를 홈 디렉토리로 제한하거나 SFTP 서비스에 액세스 할 수 있습니다.

/ etc / ssh / sshd_config (일부 배포판에서는 / etc / sshd_config)를 편집하고 다음 옵션을 설정하십시오.

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

“일치”지시문이 파일의 끝에 있는지 확인하십시오. 이것은 OpenSSH에게 sftp 그룹의 모든 사용자가 자신의 홈 디렉토리 (ChrootDirectory 명령에서 % h가 나타내는)에 chroot되어야 함을 알려줍니다.

chroot하려는 사용자의 경우 다음을 사용하여 sftp 그룹에 추가하십시오.

# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe

위의 usermod 명령은 사용자 joe를 sftp 그룹에 추가하고 쉘을 / bin / false로 설정하여 절대로 쉘 액세스를 얻을 수 없게합니다. chown 및 chmod 명령은 디렉토리에 필요한 권한을 설정합니다. 이러한 권한이 설정되면 사용자는 파일을 업로드 및 다운로드 할 수 있지만 루트 디렉토리에 디렉토리 또는 파일을 작성할 수 없습니다

Chrooting 쉘 계정은 사용자의 홈 디렉토리에서 특정 장치 파일과 쉘을 사용할 수 있어야하기 때문에 조금 더 복잡합니다. 다음 명령은 Mandriva Linux에서 매우 기본적인 chroot 시스템을 설정합니다.

# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe

위와 같이 사용자 joe는 ssh를 입력 할 수 있으며 chroot로 제한됩니다. 불행히도, 이것은별로하지 않지만 설정 방법에 대한 아이디어를 제공합니다. 제공하려는 내용에 따라 추가 라이브러리 및 바이너리를 설치해야합니다.


우분투 커뮤니티 웹 사이트는 말한다

chroot 만들기

  1. dchroot 및 debootstrap 패키지를 설치하십시오.

  2. 관리자 (예 : sudo 사용)로서 chroot에 대한 새 디렉토리를 작성하십시오. 이 절차에서는 디렉토리 /var/chroot가 사용됩니다. 이렇게하려면 sudo mkdir /var/chroot 명령 줄에 입력하십시오.

  3. 관리자 /etc/schroot/schroot.conf는 텍스트 편집기에서 엽니 다 . 을 입력 한 cd /etc/schroot다음을 입력하십시오 gksu gedit schroot.conf. 파일을 편집 할 수 있습니다.

  4. 다음 줄을 추가 한 다음 schroot.conf파일을 저장하고 닫습니다. 대체 your_username사용자 이름과 함께.

    [lucid] description = 우분투 루시드 위치 = / var / chroot 우선 순위 = 3 사용자 = your_username 그룹 = sbuild root-groups = root

터미널을 열고 다음을 입력하십시오.

sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \ 
http://mirror.url.com/ubuntu/

chroot에 Ubuntu 10.04 (Lucid Lynx)의 기본 '설치'가 생성됩니다. 패키지를 다운로드하는 데 시간이 걸릴 수 있습니다. 참고 : lucid를 선택한 Ubuntu 버전으로 바꿀 수 있습니다. 참고 : mirror.url.com유효한 로컬 아카이브 미러의 URL로 위의 내용 을 변경해야 합니다. 기본 chroot가 생성되었습니다. sudo chroot /var/chroot chroot 내의 루트 쉘로 변경하려면 입력 하십시오.

chroot 설정

chroot를 설정하기 위해 수행 할 수있는 몇 가지 기본 단계가 있으며 DNS 확인 및에 대한 액세스와 같은 기능을 제공합니다 /proc.

참고 : chroot 외부의 쉘에이 명령을 입력하십시오.

/proc chroot에 파일 시스템 을 마운트하려면 다음을 입력하십시오 (프로세스 관리에 필요함).

sudo mount -o bind /proc /var/chroot/proc  

chroot 내에서 DNS 확인을 허용하려면 다음을 입력하십시오 (인터넷 액세스에 필요).

sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf 

chroot에 기본적으로 설치되는 패키지는 거의 없습니다 (sudo가 설치되어 있지 않더라도). 사용하여 apt-get install package_name패키지를 설치합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.