Linux에서 특정 폴더에만 액세스할 수 있는 사용자 생성

Linux에서 특정 폴더에만 액세스할 수 있는 사용자 생성

Linux에서 특정 폴더에만 액세스할 수 있는 사용자를 생성하려면 퍼티를 사용해야 합니다. useradd를 사용하여 사용자를 생성했지만 해당 사용자는 기본 계정의 모든 폴더에 액세스할 수 있습니다.

답변1

SSH chroot Jail을 설정해야 합니다.

바라보다이것지침.

~처럼@로미오Q. 링크된 페이지의 중요한 부분을 여기에 포함시켰습니다.

사용자를 위한 디렉터리를 만듭니다.

# mkdir -p /home/test

이 디렉터리에는 사용자 세션을 지원하는 데 필요한 파일과 디렉터리가 포함되어야 하며, 여기에는 최소한 쉘(일반적으로 sh)과 기본 /dev 노드(예: null, zero, stdin, stdout, stderr 및 tty 장치)가 필요합니다.

# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

목록에서 두 개의 숫자에 대해 알아보세요. 주요 숫자와 보조 숫자가 있습니다. mknod 명령을 사용하여 /dev를 생성합니다(아니요아래에 붙여넣기 명령을 복사하세요. 이는 단지 예일 뿐이므로 올바른 숫자를 사용하세요.)

# mkdir -p /home/test/dev/      
# cd /home/test/dev/
# mknod -m 666 null c 1 3
# mknod -m 666 tty c 5 0
# mknod -m 666 zero c 1 5
# mknod -m 666 random c 1 8`

권한 설정:

# chown root:root /home/test
# chmod 0755 /home/test
# ls -ld /home/test

bin 디렉터리를 만들고 여기에 /bin/bash 파일을 복사합니다.

# mkdir -p /home/test/bin
# cp /bin/bash /home/test/bin/

Bash 및 복사에 필요한 공유 라이브러리 결정그들을(하다아니요다음 명령을 복사하여 lib 디렉터리에 붙여넣습니다(이는 단지 예일 뿐입니다).

# ldd /bin/bash
# mkdir -p /home/test/lib64
# cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2}  /home/test/lib64/

useradd 명령을 사용하여 SSH 사용자를 생성하고 사용자에 대한 보안 비밀번호를 설정합니다.

# useradd tecmint
# passwd tecmint

chroot Jail 일반 구성 디렉터리 /home/test/etc를 만들고 업데이트된 계정 파일(/etc/passwd 및 /etc/group)을 이 디렉터리에 복사합니다.

# mkdir /home/test/etc
# cp -vf /etc/{passwd,group} /home/test/etc/

sshd_config 파일을 열고 파일에 다음 줄을 추가합니다.

# vi /etc/ssh/sshd_config
    #define username to apply chroot jail to
    Match User tecmint
    #specify chroot jail
    ChrootDirectory /home/test

파일을 저장하고 종료한 후 SSHD를 다시 시작합니다.

 # systemctl restart sshd

chroot Jail 설정이 예상대로 작동하는지 테스트합니다. 이제 사용자는 bash와 (pwd, History, echo 등) 내장 명령만 실행할 수 있습니다.

 # ssh [email protected]

SSH 사용자의 홈 디렉터리를 만듭니다.

# mkdir -p /home/test/home/tecmint
# chown -R tecmint:tecmint /home/test/home/tecmint
# chmod -R 0700 /home/test/home/tecmint

ls, date, mkdir 등과 같은 여러 사용자 명령을 bin 디렉터리에 설치합니다.

# cp /bin/ls /home/test/bin/
# cp /bin/date /home/test/bin/
# cp /bin/mkdir /home/test/bin/

위 명령에 대한 공유 라이브러리를 확인하고 루트가 지정된 Jail 라이브러리 디렉터리로 이동합니다.

# ldd /bin/ls
# cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/

이게 결말이야. 그러나 SFTP 연결만 허용해야 하는 경우 /etc/ssh/sshd_config 파일에 다음 줄을 추가하세요.

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

파일을 저장하고 종료합니다. 그런 다음 SSHD 서비스를 다시 시작합니다.

# systemctl restart sshd

관련 정보