SFTP로 원하는 umask를 넣는 방법?


23

SFTP 서버 (openssh / sftp-server)가 있으며이 서비스를 사용하는 사용자를 위해 umask 002를 설정하고 싶습니다. 각 사용자에 대해 PAM (pam.d / common-session) 및 .profile 설정을 시도했지만 운이 없습니다.

SSH 로그인을 사용하면 모든 것이 정상이지만 SFTP (gFTP 포함)로 시도하면 022 umask가 설정됩니다.

나는 이미 sftp-server를 호출하기 전에 umask를 변경하는 sftp-server에 래퍼를 사용하려고했지만 운이 없습니다.

어떤 도움? 고마워요!

답변:


25

OpenSSH 5.4p1부터 "-u"옵션을 사용할 수 있습니다.

Subsystem sftp /usr/lib/openssh/sftp-server -u 022

매뉴얼 페이지에서 :

 -u umask
         Sets an explicit umask(2) to be applied to newly-created files
         and directories, instead of the user's default mask.

멋지다 !! 최대한 빨리 살펴보고 결과를보고
하겠습니다.

5
-u 옵션이없는 경우 다음과 같이 작동합니다.Subsystem sftp /bin/sh -c 'umask 0002; /usr/lib/openssh/sftp-server'
Steve Clay

1
좋은 해결책입니다. 시스템 umask에 관계없이 기본 권한을 설정하는 클라이언트 쉘 및 CyberDuck과 같은 응용 프로그램의 문제점을 해결합니다. 모든 클라이언트 앱이 사용자가 그룹 파일을 함께 사용할 수 있도록 올바른 권한을 설정하는 것이 유용하다는 것을 알았습니다. 이 설정으로 사용자가 원하는 경우 파일 권한을 사용자 정의하지 못하게 할 수도 있습니다.
gerlos

마지막으로 추가해야 할 사항 : sftp 기능 만 필요하고 사용자에게 쉘 액세스 권한을 제공 할 필요가없는 경우, 쉘에 대해 bash 대신 rssh 를 사용하고 /etc/rssh.conf 에서 기본 umask를 설정하는 것도 고려할 수 있습니다. . 이렇게하면 서버 보안이 강화 될 수 있습니다.
gerlos

7

나는 이것이 다른 누군가를 좌절시킬 수 있기를 바랍니다 ...

GUI SFTP 응용 프로그램을 사용하는 경우 업로드 권한 설정에 대한 기본 설정을 확인하십시오.

위의 모든 솔루션을 시도했지만 응용 프로그램이 방금 재정의 한 것으로 나타났습니다.


^^ 예, 오랫동안 Weboide의 솔루션과 비슷한 스크립트를 만들어 sftp 연결에서 umask를 설정했습니다. 최근에 왜 이것이 과거처럼 작동하지 않는지에 대해 머리를 긁고있었습니다. SFTP 클라이언트에 대한 업데이트로 인해 ssh에 연결 한 후 umask를 명시 적으로 설정 한 것 같습니다.
Jared Kipe

단지 GUI가 아닙니다. 클라이언트조차도 아닙니다. 내가 업로드 한 테스트 파일에 클라이언트 (OpenSSH sftp)가 원격으로 복사 한 0600이 있다는 것을 알기에는 너무 오래 걸렸습니다.
xebeche

고맙습니다! 아무것도 허락하지 않고 오랫동안 놀았습니다.
Tania Rascia

2

여러 해킹 및 수정 사항을 적용하려고 여러 시간을 보낸 후 적절한 해결책을 찾았습니다!

SFTP에 원하는 umask를 선택할 수있는 SSH 패치가 있습니다. 여기에서 다운로드 할 수 있습니다 : http://sftpfilecontrol.sourceforge.net/

나를 위해 (OpenSSH_5.2p1 + sftpfilecontrol-v1.3, OpenSSL 0.9.8g 2007 년 10 월 19 일) 완벽하게 작동합니다!


2
umask를 설정하는 '-u'옵션은 5.4p1 이후 OpenSSH에서 사용할 수 있습니다. 자세한 내용은 아래 답변을 참조하십시오.
Weboide

2

ssh 구성 파일에서이를 사용하여 파일 모드를 구체적으로 설정할 수도 있습니다 (클라이언트가 설정하려고 시도하는 chmod를 재정의 함). 여기에서 internal-sftp를 사용하고 있지만 sftp-server와 동일하다고 생각합니다.

ForceCommand internal-sftp -u 0022   

0

이 메시지 를 인용하려면 :

/etc/init.d/ssh에 "umask 007"라인을 추가하여이 작업을 정상적으로 수행 할 수 있습니다.

Bash는 .profile대화식 로그인 쉘을 위해 사용합니다 . 나는 sftp하나로 간주 되지 않습니다 . umask를 설정할 수 /etc/bash.bashrc있거나 ~/.bashrc위의 팁이 작동하지 않거나 더 세밀한 제어를 원할 수 있습니다.


2
답변 주셔서 감사하지만, 나는 이미 ssh umask 002 (0002도 시도했습니다)에서 작동하지 않고 작동하지 않습니다 : (외부 SFTP 클라이언트와 마찬가지로 bashrc는 고려되지 않습니다 .bash는 사용되지 않는다고 생각합니다. 내가 ssh를 직접 로그인하면 모든 것이 괜찮 내 문제는 SFTP 클라이언트 함께 감사합니다..!
mat_jack1

죄송합니다. Bash가 관여하는 이유를 모르겠습니다.
추후 공지가있을 때까지 일시 중지되었습니다.

0

특정 openssh 버전이나 사용자 지정 패치가 필요없는 간단한 솔루션을 찾으 려면 이 질문 을 참조하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.