저는 오래된 Solaris 5.10 서버를 가지고 있습니다. Tomcat 제품을 Centos 7로 마이그레이션하고 있습니다. 마이그레이션해야 하는 Solaris 서버에는 두 개의 계정이 있습니다. 두 계정의 쉘은 "/usr/local/bin/ftponly"로 식별됩니다. 이는 단순한 SH 스크립트처럼 보이지만 서버와 함께 제공된 것인지, 아니면 이전 관리자(또는 공급업체 기술자)가 작성한 것인지는 알 수 없습니다. 이 스크립트와 "/bin/sh"는 "/etc/shells"에 있는 유일한 항목입니다.
새 Centos 7 서버에서는 두 사용자의 셸로 "/usr/sbin/nologin"을 선택했습니다. 이전 서버의 "/usr/local/bin/ftponly"는 사람이 읽을 수 있는 스크립트였지만 "/usr/sbin/nologin"은 바이너리 파일인 것 같았습니다. 새 서버에서 이 두 사용자 계정을 사용하는 FTP 트랜잭션이 실행 중이지만 SSH가 거부되었습니다.
시작해도 될까요? 아니면 사용 가능한 쉘에 대해 더 큰 고려 사항이 있습니까? 내 기본 Linux 운영 체제는 Ubuntu이므로 Centos에 내장된 보안 기능 중 일부로 인해 때때로 머리가 긁힐 수 있습니다.
답변1
이는 운영 체제에 따라 다르지 않습니다. FTP 서버 소프트웨어에 따라 다릅니다.
무엇이 중요한가실제 사람Unix에서 사용자 계정을 프로그래밍 방식으로 결정하는 것은 간단하지 않습니다. 개인이 아닌 사용자 계정은 모두 시스템 계정 데이터베이스에 실제 실행 파일(예: uucico
)과 유효한 기존 홈 디렉터리(예: ) 를 가리키는 null이 아닌 셸 필드를 가질 수 있습니다 /var/spool/news
.
익명이 아닌 두 대 이상의 FTP 서버에서 채택한 규칙은 시스템 계정 데이터베이스 레코드의 셸 필드가 null이 아니고 시스템 "사용자 셸" 테이블에서 찾을 수 있는 값을 갖는 경우입니다( /etc/shells
둘 중 하나에 대해) . 이 테이블( getusershell()
라이브러리 기능을 기반으로 하는 또 다른 테이블인 경우).
/usr/local/bin/ftponly
사용자 계정이 메시지를 발행하고 사용자가 작업을 수행하려고 할 때 로그아웃하는 매우 간단한 프로그램을 수행하도록 하기 위해 쉘이 이를 활용하고 있다는 것은 이름만으로도 분명합니다 .단말기로그인하지만 이것은 작동합니다파일 전송 프로토콜로그인.
nologin
사용자 쉘 테이블에 있으면 동일한 작업을 수행합니다. 그러나 이는 사용 중인 FTP 서버 소프트웨어에만 해당됩니다. 다른 FTP 서버 소프트웨어동일한 운영 체제에서완전히 다른 규칙이 있을 것입니다.
Bruce Guenter의 twoftpd예를 들어 두 가지 구성 설정을 기반으로 셸 필드의 값을 테스트합니다. 일치하는 항목이 있으면 클라이언트는 프로그램의 읽기 전용 FTP 서비스를 받게 됩니다 twoftpd-anon
. 다른 항목과 일치하면 클라이언트는 twoftpd-drop
해당 프로그램을 통해 파일 업로드 전용 FTP 서비스를 받게 됩니다.
사용 중인 소프트웨어에도 이 문제에 영향을 미치는 복잡한 구성 옵션이 있을 수 있습니다. 예를 들어 vsftpd에서는 check_shell
옵션, local_enable
옵션, pam_service_name
옵션 및 서비스의 PAM 구성(모듈의 존재 및 구성 포함 pam_shells
)이 모두 관련됩니다.