RedHat 사용자의 디렉토리 액세스를 제한합니다.

RedHat 사용자의 디렉토리 액세스를 제한합니다.

저는 RedHat Gnu/Linux를 사용하고 있으며 10명의 사용자로 구성된 그룹이 있고 모든 사용자에게 액세스를 제한하고 싶습니다. 제가 그들을 존중하고 싶은 규칙은 다음과 같습니다.

  1. 각 사용자마다 user_i이라는 폴더가 있습니다 user_i. user_i해당 디렉터리와 그 안에 있는 모든 파일/디렉터리에 대한 쓰기 및 읽기 권한이 있어야 합니다 .
  2. user_i컴퓨터에 연결할 때 user_i기본 디렉터리에서 자신을 찾아야 합니다.
  3. 그(사용자 user_i)는 다른 디렉터리나 파일을 볼 수 없으며 이에 액세스할 권한도 없습니다. 이 user_i디렉토리는 그의 "루트" 디렉토리입니다.

그룹을 생성하고 모든 사용자를 생성하여 그룹에 할당하고 모든 폴더를 생성했습니다. 하지만 어떻게 진행해야 할지 모르겠습니다.

온라인과 이 웹사이트에서 확인했습니다. 대부분의 결과는 /etc/ssh/sshd_configSSH를 통해 연결하는 사용자를 위한 수정 사항에 대해 설명하는 반면, 내 경우에는 FTP 및 SFTP를 통한 연결도 필요했습니다. 다른 가이드에서는 특정 그룹의 모든 사용자에게 하나의 공유 폴더에 대한 액세스 권한을 부여하는 방법에 대해 설명합니다. 제 경우는 그렇지 않습니다.분리각 사용자별 폴더입니다.

편집하다:

귀하의 상호작용과 유용한 정보에 감사드리며, 혼란을 드려 죄송합니다. 먼저 사양을 명확히하겠습니다.

  1. 이러한 user_i폴더는 /transfers 디렉터리에 각 사용자를 위해 특별히 생성되고 사용자 이름으로 이름이 지정된 새 폴더입니다. 따라서 계층 구조는 다음과 유사합니다.

    /  
    --transfers/ 
    ----user_i/ 
    ------received_data/
    ------archive_data/
    

    각각은 하위 폴더 및 에 user_i데이터를 쓰고 읽습니다 . 그는 일반적인 Linux 디렉터리, 특히 다른 사용자 디렉터리(다른 9개 디렉터리)를 포함한 다른 디렉터리에 액세스할 수 없습니다.received_dataarchive_datauser_i

    서버에 연결하면 기본적으로 폴더에 액세스해야 하므로 및 user_i두 개의 하위 폴더만 볼 수 있습니다.received_dataarchive_data

  2. 모든 사람은 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/

관련 정보