최선을 다해 설명하겠습니다. 이전 서버에서 내 친구가 webslave라는 사용자를 설정했습니다.
사용자의 홈 디렉터리는 /var/www입니다. FISH 프로토콜(Krusader 사용)을 사용하여 파일을 전송하면 사용자가 webslave@host로 로그인됩니다.
예를 들어, 이 사용자가 변경을 수행하면 그룹은 항상 전체 www 데이터를 유지 관리합니다.
새 서버에서는 내 사용자 이름 name@host를 사용하고 파일은 일반적으로 나와 내 팀이 소유합니다.
위와 같이 www-data를 기본 그룹으로 갖고 /var/www 외부의 콘텐츠에 액세스할 수 없는 사용자를 추가하고 싶습니다.
내가 이 일을 제대로 하고 있는지 확인하고 싶을 뿐입니다.
명확히 말씀드리면 반갑습니다. 모든 도움에 감사드립니다. 미리 감사드립니다!
답변1
새로운 사용자가 필요하지 않습니다. 그룹이 항상 www-data인지 확인하세요. setgid 비트를 갖도록 실제 디렉토리를 chmod하면 해당 디렉토리 아래에 생성된 모든 새 파일은 www-data 그룹을 갖게 됩니다.
따라서 사용자와 함께 파일을 넣어야 하는지 확인하기 위해 올바른 그룹, 실행 및 chmod를 유지하여 디렉토리의 setGID를 설정합니다.
sudo chgrp www-data /var/www
sudo chmod +g /var/www
http://blog.superuser.com/2011/04/22/linux-permissions-demystified/
사용자의 경우 nkts에서 제안한 대로 사용자를 생성한 후 M 옵션은 홈 디렉터리를 생성하지 않는다는 의미이고, N 옵션은 사용자와 동일한 기본 그룹을 생성하지 않는다는 의미입니다.
sudo useradd -d /var/www/ -g www-data -M -N -s /sbin/nologin user
더 안전하고 안정적이며 매우 유연하기 때문에 FISH 대신 SFTP로 설정하겠습니다. 또한 그가 나머지 파일 시스템에 액세스할 수 없도록 하고 이를 내부 SFTP로 제한할 수 있도록 그를 그의 집으로 루트 이동시켜야 합니다. /etc/ssh/sshd_config에 추가
Match User user
ChrootDirectory /var/www
ForceCommand internal-sftp
참고: FISH는 SFTP 이전에 사용된 셸인 오래된 호기심에 가깝습니다.
여전히 Ubuntu에서 FISH를 사용하고 싶다면:
sudo apt-add-repository ppa:fish-shell/release-2
sudo apt-get update
sudo apt-get install fish
그런 다음 사용자의 쉘을 변경하십시오.
chsh -s /usr/bin/fish
또한 /etc/ssh/sshd_config에서 쉘을 다시 강제 실행해야 합니다.
Match User user
ForceCommand /usr/bin/fish
이 기사는 FISH에도 도움이 될 것입니다.
https://hackercodex.com/guide/install-fish-shell-mac-ubuntu/
homedir을 제한하는 것은 Fish에서 가능해야 하지만 /var/www의 소유자가 www-data라면 더 쉬울 것이기 때문에 설정이 더 복잡하고 적용하기가 어렵습니다.
이러한 제한을 설정하려면 최소한 /var/www 안에 /usr/bin/fish를 복사해야 하며(좋은 생각은 아님) /var/www 및 /usr/bin/fish는 루트에 속합니다(이 역시 make /var/www 디렉토리의 setGID를 변경하라는 제안은 효과가 없습니다.
앞서 언급했듯이 SFTP는 FISH보다 원격 파일 전용 액세스에 대한 보다 현대적이고 안전한 방법입니다.
답변2
다음 명령을 사용하여 새 사용자를 생성할 수 있습니다(RHEL 호환 배포판을 사용한다고 가정합니다).
# useradd -d /var/www/ -g www-data -M -N -s /sbin/nologin user
어떤 애플리케이션이 피쉬 프로토콜을 통한 액세스를 제공하는지 모르겠습니다.