SFTP 프로토콜에는 접속 후 사용자를 변경할 수 있는 기능이 없습니다.
하지만 사용자 정의 SFTP 서버 기능을 사용하면 변경된 사용자로 작업할 수 있습니다.
sudo 명령을 사용하는 것과 setuid 비트를 사용하는 방법이 있습니다.
...
시스템의 sudo에 사용자를 등록합니다.
sudo 명령을 사용할 사용자를 sudoers 파일에 등록합니다.:Code Block # vi /etc/sudoers ... # 레드햇 계열의 리눅스라면 다음을 주석처리하여야 합니다. #Defaults requiretty ... User_Alias ADMINISTRATOR = test ADMINISTRATOR ALL=(ALL) NOPASSWD:full_path_of_your_sftp_server # NOPASSWD는 필수적입니다. # sftp-server의 위치는 시스템마다 다를 수 있습니다.
- no requiretty => !requiretty. requiretty는 tty가 할당된 상태, 즉 로그인한 상태를 의미합니다. SFTP 서브시스템을 사용하기 위해서는 로그인한 상태가 아니므로 !requiretty여야 합니다. 할당하지 않는 것(!requiretty)이 기본값입니다.
- ADMINISTRATOR => sudo를 실행하기 위한 사용자 계정입니다. 위 설정에서는 test 계정을 의미합니다.
- ALL => sudo를 실행하기 위한 호스트입니다. ALL을 선택하여 모든 호스트 이름에서도 실행할 수 있도록 하였습니다.
- (ALL) => sudo 명령을 대신한 사용자 계정입니다. ALL을 선택하여 root를 포함한 어떤 계정이라도 대신하여 명령을 수행할 수 있도록 하였습니다. 특정 사용자만을 대상으로 할 경우 해당 사용자 이름을 입력합니다. ','(콤마) 로 여러 사용자를 지정할 수 있습니다.
- NOPASSWD: => sudo 명령을 실행할 때 암호를 입력하지 않도록 합니다. 이 때의 암호는 위 ADMINISTRATOR(test)의 암호입니다. 기본값은 암호를 묻는 PASSWD입니다.
- full_path_of_your_sftp_server => SFTP 서브시스템을 구동하는 명령의 전체 경로를 입력합니다. /etc/ssh/sshd_config 파일에서 경로를 확인할 수 있습니다.
- Xftp 프로그램에서 사용자 지정 sftp-server 옵션을 설정하여 세션 파일을 만듭니다.
해당 세션 등록 정보 -> 일반 탭 -> 프로토콜: SFTP -> 설정 -> 사용자 정의 SFTP 서버 사용
'-u' 옵션을 적용하면 원하는 사용자로 변경할 수 있습니다. - 세션 파일을 실행합니다.
- 접근이 제한된 파일이나 디렉토리에 접근이 가능한지 확인합니다.
...