내 응용 프로그램에는 폴더 /LD
와 사용자가 있습니다 test_user
. 이 사용자가 해당 /LD
폴더 에만 액세스할 수 있도록 하고 싶습니다 .
그러나 Filezilla FTP 클라이언트를 통해 연결하면 /LD
기본적으로 로드되지만 사용자는 다른 폴더로 이동할 수도 있습니다.
저는 Linux 4.9 임베디드 시스템을 사용하고 있습니다. chroot
, adduser
, addgroup
및 명령이 있습니다 chmod
. 이 usermod
명령 이 없습니다
내가 원하는 것이 가능한가?
답변1
먼저 /LD
홈디렉토리를 로 설정해야 합니다 test_user
. usermod
명령 권한이 없다고 말하고 해당 권한을 사용할 vipw
수 없는 경우 사용자가 현재 로그인되어 있지 않은지 확인하고 /etc/passwd
직접 편집하십시오.
그런 다음 확인하십시오.vsftpd.conf 매뉴얼 페이지chroot_local_user
chroot_list_enable
옵션에 대한 설명을 읽어보세요 chroot_list_file
.
모든(또는 대부분) 사용자가 FTP 연결을 홈 디렉토리로 제한하도록 하려면 이를 chroot_local_user
YES로 설정하고 /etc/vsftpd.chroot_list
파일(또는 이 옵션으로 지정된 파일 chroot_list_file
)을 사용하여 예외를 지정할 수 있습니다.
제한 사항 만 test_user
필요한 경우 "아니요"로 두고 "예"로 chroot_local_user
설정한 후 파일(또는 이 옵션으로 지정된 파일 ) 에 추가합니다. 파일이 아직 존재하지 않으면 생성할 수 있습니다.chroot_list_enable
test_user
/etc/vsftpd.chroot_list
chroot_list_file
이러한 작업의 결과로 test_user
FTP 연결에 로그인할 때 /LD
디렉터리가 루트 디렉터리( /
)로 표시됩니다. 따라서 /LD
FTP 연결을 위한 파일 시스템의 나머지 부분이 존재하지 않기 때문에 디렉토리 트리 외부를 탐색 할 수 없습니다 . 사용자가 계속 액세스할 수 있는 하위 디렉터리는 /LD
바람직하지 않은 경우 파일 시스템 권한을 사용하여 차단합니다.
먼저 /LD 하위 디렉터리에 액세스해야 하는 사용자 및/또는 그룹을 식별합니다. 이상적으로는 /LD 하위 디렉터리의 모든 사용자는 하나의 그룹(이라고 부르겠습니다 LDsub
) 에 속해야 하며 test_user
해당 그룹에 속해서는 안 됩니다. 다른 그룹에만 있어야 합니다 test_user
(예로 사용하겠습니다 LDftp
). 이 그룹의 구성원은 디렉터리 자체에 대한 쓰기 권한이 필요한지 여부에 따라 이 그룹의 구성원 LDsub
일 수도 있고 아닐 수도 있습니다 .LDftp
/LD
또는 명령이 없는 경우 을 usermod
편집하거나 편집만으로 groupmod
그룹 멤버십을 편집 할 수 있습니다.vigr
/etc/group
이제 다음 명령을 사용하여 chown
디렉터리의 소유권을 설정 /LD
하고 chmod
권한을 설정할 수 있습니다.
chown root:LDftp /LD
chmod 775 /LD #this will be drwxrwxr-x
이제 test_user
그룹 멤버십을 통해 디렉토리에 대한 쓰기 권한을 갖게 되지만 /LD
디렉토리의 소유자는 아니므로 권한을 변경할 수 없습니다. "everyone rx" 권한을 사용하면 그룹 구성원이 LDsub
자신의 권한이 허용하는 디렉터리를 통해 하위 디렉터리에 액세스할 수 있습니다.
/LD의 하위 디렉토리는 그렇지 않은 한 원하는 경우 누구나 소유할 수 있습니다 . test_user
이러한 하위 디렉토리에 대한 그룹 LDsub
및 권한은 다음과 같이 설정되어야 합니다.
chgrp LDsub /LD/subdirectory # or chown <not_test_user>:LDsub /LD/subdirectory
chmod 770 /LD/subdirectory # this will be drwxrwx---
test_user
에 대한 쓰기 액세스 권한이 있다는 것은 /LD
하위 디렉터리의 이름을 바꾸고, 새 디렉터리를 만들고, 하위 디렉터리를 삭제할 수 있음을 의미합니다.비어 있는하위 디렉토리.
요구 사항이 이보다 더 복잡한 경우 파일 시스템에서 ACL 지원이 활성화되어 있는지 확인하고 ACL/LD를 사용하여 하위 디렉터리에 액세스할 수 있는 사용자 및/또는 그룹을 지정하는 것이 더 쉬울 수 있습니다. getfacl
및 명령의 매뉴얼 페이지를 참조하십시오 setfacl
. 및/또는이 페이지더 알아보기.
또는 하위 디렉터리를 /LD
다른 위치로 이동하고 기호 링크를 사용하여 디렉터리 경로가 이전처럼 작동하도록 만드는 것을 고려할 수 있습니다.
mv /LD/subdirectory /elsewhere/subdirectory
ln -s /elsewhere/subdirectory /LD/subdirectory
FTP 세션 외부의 모든 사용자에 대해 test_user
이러한 기호 링크는 평소대로 작동합니다. 그러나 test_user
FTP 세션은 chroot되기 때문에 /LD
이러한 심볼릭 링크는 사용할 수 없는 끊어진 링크로 나타납니다. test_user
쓰기 권한이 있는 경우 /LD
'깨진' 링크를 삭제할 수 있습니다.