SFTP 사용자에게 모든 권한을 부여하는 방법은 무엇입니까? 내 말은 모든 폴더에 액세스하고 필요에 따라 삭제하고 업로드한다는 것입니다. (저는 우분투 20.04를 사용하고 있습니다)
답변1
참고로 그런거 없습니다SFTP 사용자, 일부 사용자는 콘솔, SSH 또는 FTP를 통해 시스템에 액세스할 수 있습니다. 일단 인증되면 이러한 사용자는 쉘이나 ssh의 sftp 하위 시스템과 같은 특정 애플리케이션을 실행할 수 있지만, 이들이 실행하는 프로세스는 여전히 시스템 액세스 제어에 의해 제한됩니다.
액세스 제어 제한이 적용되지 않는 한 가지 유형의 사용자가 있습니다. 바로 범용 root
사용자입니다. 이는 일반적으로 관리 작업을 실행할 때 가장하려는 사용자입니다. 예를 들어 sudo
이 사용자를 사용할 수도 있지만 을 전달할 수도 있습니다 ssh
.
이 사용자는 전능하기 때문에 안전한 방식으로 인증을 수행하려면 주의가 필요합니다. SSH를 통해 접속할 때 보안 수준이 낮은 비밀번호 인증은 기본적으로 허용되지 않습니다. 대신 키 인증을 사용할 수 있습니다.
( )를 sftp
사용 하려면 공개 SSH 키를 파일에 새 줄로 추가해야 합니다 . 또한 다음을 통해 이 키를 사용하여 SSH 인증을 SFTP로만 제한할 수도 있습니다.root
sftp root@user:/path
~root/.ssh/authorized_keys
restrict,command="internal-sftp" your-public-key-here
(해당 공개 키를 사용하여 해당 시스템에서 수행할 수 있는 작업을 제한하는 것은 아닙니다. 시스템의 파일을 수정할 수 있으면 시스템이 무엇이든 수행하도록 할 수 있습니다.)
SFTP 하위 시스템을 사용할 때 루트처럼 아무런 제한 없이 인증하고 싶다면 Linux 기능을 계속 사용할 수 있습니다.
예를 들어 다음을 수행합니다.
sudo dpkg-divert --local --rename /usr/lib/openssh/sftp-server
원본을 sftp
로 전송합니다 /usr/lib/openssh/sftp-server.distrib
.
sudo install -m 0110 -g yourusername /usr/lib/openssh/sftp-server.{distrib,unrestricted}
복사본을 통과 전용으로 만듭니다 yourusername
.
sudo setcap 'cap_dac_override+ep cap_chown+ep cap_fowner+ep cap_fsetid+ep' /usr/lib/openssh/sftp-server.unrestricted
파일 시스템 액세스에 대한 제한을 제거하려면 이 실행 파일의 기능을 설정하십시오.
/usr/lib/openssh/sftp-server
그런 다음 스크립트로 생성합니다 . 예를 들면 다음과 같습니다.
#! /bin/bash -
if [ "$LOGNAME" = yourusername ]; then
cmd=$0.unrestricted
else
cmd=$0.distrib
fi
exec -a "$0" -- "$cmd" "$@"
(실행 가능하게 만드는 데 사용하는 것을 잊지 마십시오 sudo chmod a+x /usr/lib/openssh/sftp-server
).
그러면 sftp 서비스(보통 ssh를 통해)를 사용할 때 아무런 제한이 없습니다.
하지만 신원을 유지하는 데 주의하세요. 예를 들어, 새 파일을 업로드하면 기본적으로 해당 파일은 귀하의 소유가 됩니다. 일반 사용자에게 시스템 파일을 소유하게 하는 것은 나쁜 습관입니다.