Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

SFTP 프로토콜에는 접속 후 사용자를 변경할 수 있는 기능이 없습니다.
하지만 사용자 정의 SFTP 서버 기능을 사용하면 변경된 사용자로 작업할 수 있습니다. 

sudo 명령을 사용하는 것과 setuid 비트를 사용하는 방법이 있습니다.

...

  1. 시스템의 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 파일에서 경로를 확인할 수 있습니다.

  2. Xftp 프로그램에서 사용자 지정 sftp-server 옵션을 설정하여 세션 파일을 만듭니다. 
    해당 세션 등록 정보 -> 일반 탭 -> 프로토콜: SFTP -> 설정 -> 사용자 정의 SFTP 서버 사용



    '-u' 옵션을 적용하면 원하는 사용자로 변경할 수 있습니다.

  3. 세션 파일을 실행합니다.

  4. 접근이 제한된 파일이나 디렉토리에 접근이 가능한지 확인합니다.

...