저는 RedHat Gnu/Linux를 사용하고 있으며 10명의 사용자로 구성된 그룹이 있고 모든 사용자에게 액세스를 제한하고 싶습니다. 제가 그들을 존중하고 싶은 규칙은 다음과 같습니다.
- 각 사용자마다
user_i
이라는 폴더가 있습니다user_i
.user_i
해당 디렉터리와 그 안에 있는 모든 파일/디렉터리에 대한 쓰기 및 읽기 권한이 있어야 합니다 . user_i
컴퓨터에 연결할 때user_i
기본 디렉터리에서 자신을 찾아야 합니다.- 그(사용자
user_i
)는 다른 디렉터리나 파일을 볼 수 없으며 이에 액세스할 권한도 없습니다. 이user_i
디렉토리는 그의 "루트" 디렉토리입니다.
그룹을 생성하고 모든 사용자를 생성하여 그룹에 할당하고 모든 폴더를 생성했습니다. 하지만 어떻게 진행해야 할지 모르겠습니다.
온라인과 이 웹사이트에서 확인했습니다. 대부분의 결과는 /etc/ssh/sshd_config
SSH를 통해 연결하는 사용자를 위한 수정 사항에 대해 설명하는 반면, 내 경우에는 FTP 및 SFTP를 통한 연결도 필요했습니다. 다른 가이드에서는 특정 그룹의 모든 사용자에게 하나의 공유 폴더에 대한 액세스 권한을 부여하는 방법에 대해 설명합니다. 제 경우는 그렇지 않습니다.분리각 사용자별 폴더입니다.
편집하다:
귀하의 상호작용과 유용한 정보에 감사드리며, 혼란을 드려 죄송합니다. 먼저 사양을 명확히하겠습니다.
이러한
user_i
폴더는 /transfers 디렉터리에 각 사용자를 위해 특별히 생성되고 사용자 이름으로 이름이 지정된 새 폴더입니다. 따라서 계층 구조는 다음과 유사합니다./ --transfers/ ----user_i/ ------received_data/ ------archive_data/
각각은 하위 폴더 및 에
user_i
데이터를 쓰고 읽습니다 . 그는 일반적인 Linux 디렉터리, 특히 다른 사용자 디렉터리(다른 9개 디렉터리)를 포함한 다른 디렉터리에 액세스할 수 없습니다.received_data
archive_data
user_i
서버에 연결하면 기본적으로 폴더에 액세스해야 하므로 및
user_i
두 개의 하위 폴더만 볼 수 있습니다.received_data
archive_data
모든 사람은
user_i
자신을 위해 만들어진 그룹에 속합니다.
답변1
당신이 가장 찾고 있는 ChrootDirectory
옵션 입니다 sshd_config
.
각 사용자 user_i에 대해 user_i라는 폴더가 있습니다. user_i에는 해당 디렉터리와 그 안에 있는 모든 파일/디렉터리에 대한 읽기 및 쓰기 권한이 있어야 합니다.
그것은 불가능합니다 chroot
. chroot
이는 보안 취약점(CVE-2009-2904)이므로 사용자는 자신이 속한 디렉터리에 대한 쓰기 액세스 권한을 가질 수 없습니다 . 각 사용자는 자신만의 쓰기 가능한 디렉터리를 가지고 있어야 합니다 chroot
. 파일 시스템 계층 구조는 다음과 같습니다.
directory -- owner:group permissions
/chroots/ -- root:root 700
user_i/ -- root:root 700
data/ -- user_i:chroot_users 700
다음과 같이 보일 수 있습니다 sshd_config
:
Match Group chroot_users
ChrootDirectory /chroots/%u/
이렇게 하면 사용자가 분리됩니다. 그러나 이러한 사용자는 별도의 디렉토리에 실행 가능한 프로그램이 없다는 점에 유의하십시오! SFTP 액세스 권한만 부여할 수 있습니다.
Subsystem sftp internal-sftp
또는 다음과 같이 원하는 프로그램을 각 chroot에 복사합니다 bash
.
cp --parents /bin/bash /chroots/user_i/
cp --parents `ldd /bin/bash | cut -d'>' -f2 | awk '{print $1}'` /chroots/user_i/