/ var / www에 대한 쓰기 권한이있는 chrooted sftp 사용자


10

배포하려는이 설정에 대해 혼란스러워합니다. 나는 여러분 중 누군가가 저에게 손을 빌려 줄 수 있기를 바랍니다. 대단히 감사합니다.

배경 정보

서버는 Debian 6.0, ext3이며 Apache2 / SSL 및 Nginx가 전면에 리버스 프록시로 사용됩니다. Apache 루트 디렉토리 (/ var / www)에 sftp 액세스 권한을 제공하여 sftp 사용자가 RWX 권한으로 해당 경로에 루트인지 확인해야합니다.

/ var / www의 기본 권한을 수정하지 않고이 모든 것을 수행하십시오.

drwxr-xr-x  9 root root  4096 Nov  4 22:46 www

내부 / var / www

-rw-r----- 1 www-data www-data     177 Mar 11  2012 file1
drwxr-x--- 6 www-data www-data    4096 Sep 10  2012 dir1
drwxr-xr-x 7 www-data www-data    4096 Sep 28  2012 dir2
-rw------- 1 root     root          19 Apr  6  2012 file2
-rw------- 1 root     root     3548528 Sep 28  2012 file3
drwxr-x--- 6 www-data www-data    4096 Aug 22 00:11 dir3
drwxr-x--- 5 www-data www-data    4096 Jul 15  2012 dir4
drwxr-x--- 2 www-data www-data  536576 Nov 24  2012 dir5
drwxr-x--- 2 www-data www-data    4096 Nov  5 00:00 dir6
drwxr-x--- 2 www-data www-data    4096 Nov  4 13:24 dir7

내가 시도한 것

  1. 새 그룹 secureftp를 만들었습니다
  2. nologin 쉘을 사용 하여 secureftpwww-data 그룹에 가입 한 새 sftp 사용자를 작성했습니다 . Homedir은 /
  3. 다음과 같이 sshd_config를 편집했습니다.
Subsystem sftp internal-sftp 
AllowTcpForwarding no 
Match Group <secureftp> 
      ChrootDirectory /var/www 
      ForceCommand internal-sftp

sftp 사용자로 로그인하여 파일을 나열 할 수 있지만 쓰기 작업은 허용되지 않습니다. Sftp 사용자는 www-data 그룹에 있지만 / var / www의 권한은 그룹 비트에 대한 읽기 / 읽기 + x이므로 작동하지 않습니다.

또한 ACL로 시도했지만 sftp 사용자에 대한 ACL RWX 권한을 / var / www (디렉토리 및 파일을 재귀 적으로)에 적용하면 unix 권한도 변경됩니다.

여기서 무엇을 할 수 있습니까?

www-data 사용자가 sftp로 로그인 할 수 있도록하여 / var / www에서 www-data가 소유 한 파일 / 디렉토리를 수정할 수 있다고 생각했습니다. 그러나 어떤 이유로 든 보안 상 어리석은 행동이라고 생각합니다.


권한을 변경하지 않고 가능하다고 생각하지 않습니다.
Unnikrishnan

답변:


15

내가 한 것은 사용자를 홈 디렉토리에 chroot 한 다음 홈 디렉토리 mount --bind에 링크를 만드는 데 사용 됩니다.

그런 다음 maintans가 디렉토리의 새 파일에 대한 쓰기 권한을 setfacl확인 하는 데 사용 했습니다 www-data. 이 효과는로 반복됩니다 /var/www. 원하는 작업입니다.

g+s디렉토리 를 설정 하면 디렉토리 내에서 작성된 모든 새 파일 및 디렉토리가 상위에서 그룹 소유권을 상속합니다.

useradd someuser
mkdir -p /home/someuser/www
mount --bind /var/www /home/someuser/www
chmod g+s /home/someuser/www
chown -R someuser:www-data /home/someuser/www
setfacl -d -m g::rwx /home/someuser/www

그 트릭을해야합니다.

마운트를 영구적으로 유지

서버를 다시 부팅 할 때 마운트가 그대로 있어야합니다. 에 마운트를 추가하는 것만 큼 간단합니다 /etc/fstab. 모든 제공자가이 파일을 만지는 것은 아니지만 대부분은이 파일을 만집니다.

다음과 같은 줄을 추가하십시오.

/var/www        /home/someuser/www        none        bind        0        0

작동하는지 확인하기 위해 재부팅 할 수 있습니다.


1
사실 g + s / home / someuser / www를 chmod하고 someuser : www-data / home / someuser / www를 chown하면 동일한 권한과 owner : group도 / var / www로 전송합니다. 이것은 마운트 --bind 때문입니다. 고마워요!
bashintosh

2
맥주는 어디에서 지불 할 수 있습니까? 그것은 모두 좋은 것처럼 보이며 Apache는 sftp-user에 대해 / var / www의 소유자로서 불평하지 않는 것 같습니다. ACL 방식으로 갈 때 솔루션에 매우 가까웠지만 suid 부분을 남겨 두었습니다. 마술입니다. 감사합니다!
bashintosh 2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.