내 홈 폴더에는 2명의 사용자가 있습니다. 관리자 1명과 게스트 1명.
기본적으로 게스트 사용자가 SSH 세션을 통해 로그인할 때 홈 폴더가 아닌 다른 디렉터리로 디렉터리를 변경할 수 없도록 하고 싶습니다.
사용자는 다음과 같습니다.
root@Ubuntu-2004-focal-64-minimal / # id olw
uid=1000(olw) gid=1002(olw) groups=1002(olw),1000(admins)
root@Ubuntu-2004-focal-64-minimal / # id guest
uid=1002(guest) gid=1001(guest) groups=1001(guest)
메인 디렉토리:
drwxr-xr-x 5 root root 4096 Jun 16 11:01 home/
제가 이해한 바에 따르면 이는 루트 그룹이 아닌 다른 사람들이 이 디렉토리를 읽거나 입력(실행)할 수 있다는 의미입니다.
해당 디렉터리 내에서 파일 시스템은 다음과 같습니다.
drwxr-xr-x 5 root root 4096 Jun 16 11:01 ./
drwxr-xr-x 18 root root 4096 Jun 14 16:13 ../
drwxrwx--- 2 root guest 4096 Jun 16 11:11 guest/
drwxr-x--- 4 olw admins 4096 Jun 15 16:12 olw/
이제 게스트가 홈 디렉터리에 있으면 /home이 다른 모든 사람에게 실행 가능하므로 홈 디렉터리로 다시 전환할 수 있습니다.
chmod o-rx home/
홈 폴더의 그룹도 관리자로 변경했습니다 . 그렇지 않으면 루트 또는 루트 그룹의 사용자를 제외하고 누구도 루트 폴더에서 작업을 수행할 수 없습니다.
drwxr-x--- 5 root admins 4096 Jun 16 11:01 ./
drwxr-xr-x 18 root root 4096 Jun 14 16:13 ../
drwxrwx--- 2 root guest 4096 Jun 16 11:11 guest/
drwxr-x--- 4 olw admins 4096 Jun 15 16:12 olw/
이제 이상한 점은 다음과 같습니다.
관리자로 전환하면 모든 것이 잘 작동합니다. 내 홈 폴더로 가서 나가서 모든 작업을 수행할 수 있지만 GUEST 계정을 사용하면
oot@Ubuntu-2004-focal-64-minimal /home # su guest
bash: /home/guest/.bashrc: Permission denied
기본 .bashrc 파일을 읽거나 명령을 실행할 수도 없습니다 ls
.
게스트 홈 폴더에 대한 권한을 모든 사람이 전체 액세스할 수 있도록 전환했는데 결과는 다음과 같습니다.
drwxr-x--- 5 root admins 4096 Jun 16 11:01 ./
drwxr-xr-x 18 root root 4096 Jun 14 16:13 ../
drwxrwxrwx 2 root guest 4096 Jun 16 11:11 guest/
drwxr-x--- 4 olw admins 4096 Jun 15 16:12 olw/
여전히 오류가 발생합니다. 내가 뭘 잘못했나요? 나는 게스트가 자신의 홈 디렉토리를 떠날 수 없도록 하고 싶지만 게스트가 자신의 홈 디렉토리를 보고 거기에서 명령을 실행할 수 있기를 바랍니다. 왜 olw 사용자에게 작동하나요?
사용자 내부의 파일 시스템은 다음과 같습니다
손님
drwxrwxrwx 2 root guest 4096 Jun 16 11:11 ./
drwxr-x--- 5 root admins 4096 Jun 16 11:01 ../
-rw------- 1 guest guest 42 Jun 16 11:22 .bash_history
-rwxrwxrwx 1 root guest 220 Jun 15 15:00 .bash_logout*
-rwxrwxrwx 1 root guest 3771 Jun 15 15:00 .bashrc*
-rwxrwxrwx 1 root guest 0 Jun 15 15:00 .cloud-locale-test.skip*
-rwxrwxrwx 1 root guest 807 Jun 15 15:00 .profile*
-rwxrwxrwx 1 root guest 20 Jun 15 15:14 WELCOME.txt*
오르프
drwxr-x--- 4 olw admins 4096 Jun 15 16:12 ./
drwxr-x--- 5 root admins 4096 Jun 16 11:01 ../
-rwxr-x--- 1 olw olw 960 Jun 16 11:35 .bash_history*
-rwxr-x--- 1 olw olw 220 Jun 15 14:38 .bash_logout*
-rwxr-x--- 1 olw olw 3771 Jun 15 14:38 .bashrc*
drwx------ 2 olw olw 4096 Jun 15 15:54 .cache/
-rwxr-x--- 1 olw olw 0 Jun 15 14:38 .cloud-locale-test.skip*
drwxrwx--x 3 olw olw 4096 Jun 15 15:10 .local/
-rwxr-x--- 1 olw olw 807 Jun 15 14:38 .profile*
답변1
모든 파일 액세스는 파일 권한에 따라 달라집니다.그리고 그것이 상주하는 디렉토리 계층 구조.
원하는 결과를 얻는 방법에는 여러 가지가 있지만 이것들은 모두 중요하며 서버 보안의 다른 부분을 손상시킬 수 있습니다. 예를 들어 게스트의 homedir을 /other/guest로 설정할 수 있지만 /home에서 게스트를 제외하려면 다른 모든 사용자를 포함하는 그룹을 만들고 /home의 그룹 소유권을 해당 그룹으로 설정하고 chmod를 설정해야 합니다. o - rwx /home. 하지만 아직 끝나지 않았습니다. 파일 시스템 권한 외에도 Ubuntu 시스템에는 apparmor라는 보안 하위 시스템이 있습니다. 이 하위 시스템은 파일뿐만 아니라 개체에 대한 보다 중앙화된 사용자 데이터베이스와 이를 연결하는 권한도 사용하며 업데이트가 필요합니다.
나는 Linux를 사용하는 방법을 알고 있다고 생각하지만, 내 생각에는 이는 뚜렷한 이점이 거의 없는 매우 복잡한 작업입니다.