2016년 1월 7일에 배포한 Xftp 빌드 0830(Xmanager 엔터프라이즈 빌드 0837) 버전에는 sftp 서버를 사용자가 지정할 수 있는 기능이 있습니다.
이 기능을 이용하여 다른 사용자의 권한으로 작업을 진행할 수 있습니다.
- sudo 명령을 사용하여 다른 사용자의 권한을 얻는 방법
- setuid 비트 설정을 통해서 다른 사용자의 권한을 얻는 방법
sudo 명령을 사용하여 다른 사용자의 권한을 얻는 방법 : sudoers를 이용하는 방법
1. sudoers설정
– /etc/sudoers에 등록. NOPASSWD, Defaults !requiretty 설정 필요
# vi /etc/sudoers
...
#Defaults requiretty => 주석 처리 또는
Defaults !requiretty
...
User_Alias ADMINISTRATOR = user1, user2, ...
ADMINISTRATOR ALL=(ALL) NOPASSWD:/경로/사용자_지정_sftp-server
...
사용자 지정 sftp-server에는 사용자가 실행하고자 하는 sftp-server를 전체 경로와 함께 지정합니다.
Open SSH의 경우는 기본적을 sftp 서브 프로그램(sub system)을 가지고 있습니다.
다음 명령으로 해당 경로와 파일을 알아 볼 수 있습니다.
# cat /etc/ssh/sshd_config |grep sftp
Subsystem sftp /usr/libexec/openssh/sftp-server
기본 sftp-server
CentOS의 경우 : /usr/libexec/openssh/sftp-server
Ubuntu의 경우 : /usr/lib/openssh/sftp-server
2. Xftp 설정
해당 세션 등록정보에서 sftp 프로토콜 선택 -> 설정 -> 사용자 정의 SFTP 서버 사용
setuid 비트 설정을 통해서 다른 사용자의 권한을 얻는 방법
1. 사용하고자 하는 sftp 서버를 정한 후 setuid 비트를 설정합니다.
# cp /usr/libexec/openssh/sftp-server /home/test
# cd /home/test
# chmod u+s sftp-server
# ls -l sftp-server
-rwsr-xr-x. 1 root root 63544 2016-01-06 16:53 sftp-server
2. Xftp 설정
참고 및 주의 사항
setuid는 파일 실행 시 해당 파일의 소유자의 권한으로 실행하도록 하는 파일 퍼미션 플래그입니다. 그러므로 해당 파일의 소유자가 root일 경우에는 setuid 비트를 설정하는데 주의를 해야 합니다.
sftp-server 등을 root 권한으로 사용해야 할 필요성이 있다면 특정 그룹만이 해당 서버를 구동하도록 하는 설정을 활용해 보세요.
# groupadd admin
# usermod -a -G admin test
# id test
uid=501(test) gid=501(test) groups=501(test),502(admin)
# ls -l /home/test/sftp-server
-rwsr-xr-x. 1 root root 63544 2016-01-06 16:53 sftp-server
# chgrp admin /home/test/sftp-server; chmod o-rx /home/test/sftp-server
# ls -l /home/test/sftp-server
-rwsr-x---. 1 root admin 63544 2016-01-06 16:53 sftp-server