
나는 deb 기반 시스템에 익숙하지 않으므로 솔루션이 간단하다면 사과드립니다.
사용자를 홈 디렉토리에 가두도록 vsftpd를 설정하려고 합니다. 나는 500 OOPS를 얻습니다: vsftpd: chroot() 내부에서 쓰기 가능한 루트로 실행을 거부합니다.
저는 이 문제를 조사한 후 다음과 같이 thefrontiergroup에서 제공하는 백포트를 사용하는 것이 일반적인 해결책이라는 것을 알았습니다.
sudo add-apt-repository ppa:thefrontiergroup/vsftpd
이렇게 하면 Python 오류가 발생합니다.
You are about to add the following PPA to your system:
vsftpd 2.3.5 with the allow_writeable_chroot feature backported from vsftpd 3.
More info: https://launchpad.net/~thefrontiergroup/+archive/vsftpd
Press [ENTER] to continue or ctrl-c to cancel adding it
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/usr/lib/python2.7/dist-packages/softwareproperties/ppa.py", line 99, in run
self.add_ppa_signing_key(self.ppa_path)
File "/usr/lib/python2.7/dist-packages/softwareproperties/ppa.py", line 132, in add_ppa_signing_key
tmp_keyring_dir = tempfile.mkdtemp()
File "/usr/lib/python2.7/tempfile.py", line 322, in mkdtemp
name = names.next()
File "/usr/lib/python2.7/tempfile.py", line 141, in next
letters = [choose(c) for dummy in "123456"]
File "/usr/lib/python2.7/random.py", line 274, in choice
return seq[int(self.random() * len(seq))] # raises IndexError if seq is empty
ValueError: cannot convert float NaN to integer
다른 해결책을 찾으려고 시도하면서 이 기사에서와 같이 홈 디렉터리의 권한을 변경하라는 권장 사항을 찾았습니다.vsftpd - 사용자를 홈 디렉터리로 제한그러나 이를 따르면 UserDir Apache 구성에 설명된 것처럼 Apache를 통해 각 사용자의 하위 디렉터리에 액세스할 수 있기를 원하기 때문에 많은 수동 권한 재설정으로 이어질 것입니다.http://httpd.apache.org/docs/2.2/howto/public_html.html
결국 나는 foo 사용자를 추가하고 마술처럼 foo가 파일 시스템의 다른 부분을 볼 수 없이 /home/foo에서 완전한 R/W 권한을 가질 수 있는 능력을 갖기를 원합니다.http://xxxx/~foo/누구든지 액세스할 수 있으며 쉘을 nologin에서 bash로 변경하면 쉘에 액세스할 수 있습니다.
우분투 12.04 LTS, vsftpd 2.3.5
어떤 조언이라도 해주세요... 머리를 긁적거리는 중이에요!
답변1
님의 상황이 꼭 같지는 않으니까 추측만 할 뿐이지만..
apt-get install python-software-properties
(혹은 아마도 apt-get update python-software-properties
)?
이는 제가 설정한 12.04 시스템의 필수 단계였지만 Python 오류가 아닌 "add-apt-repository: 명령을 찾을 수 없음" 오류도 발생했습니다. Python-software-properties를 설치한 후 해당 명령이 성공적으로 실행되었기 때문에 Python이 문제라고 생각하게 만드는 오류입니다.
내가 생각해 낼 수 있는 유일한 대안은 외부 저장소를 추가하는 것보다 내 설정을 시도/수정하기에는 너무 늦었습니다. 모든 사람의 홈을 /home/으로 만든 다음 다른 모든 디렉터리에 대한 권한을 수정하여 다음과 같이 하는 것입니다. /home/을 읽을 때 볼 수 있는 유일한 디렉토리는 "foo"입니다. 그들은 여전히 그 디렉토리로 이동해야 하거나 로그인 후 CWD를 변경하는 스크립트를 작성해야 하지만 초기 화면이 표시될 때 "foo"만 있고 쓸 수 없습니다. GUI를 사용하는 경우 "cd foo"를 수행하거나 foo 폴더를 클릭하는 것은 영향이 상당히 적습니다. 그리고 분명히 이것은 제가 상상했던 것만큼 간단하지 않습니다. 디렉토리를 볼 수 있는지 여부를 결정하는 권한 설정을 상상할 때 NTFS 권한이 있는 IIS를 생각하고 있었습니다. vsftpd.conf에 " hide_files", 신중하게 선택한 용어를 사용하여 이 작업을 수행할 수 있습니다(정규식을 지정할 수 있지만 현재 사용자의 로그인을 기반으로 변수를 확장하여 각 사용자마다 다르게 만들 수 있는지는 모르겠습니다) 사용자...)