uprawnienia do plików i własność grupy za pomocą sftp


5

Czy istnieje sposób, aby wszystkie pliki utworzone przez określonego użytkownika w sftp miały określone uprawnienia grupy i plików? Użytkownik, o którym mowa, będzie oczywiście członkiem grupy, ale nie jest to jego podstawowa grupa. Innymi słowy, czy istnieje sposób, aby sftp automatycznie duplikował efekty umask i newgrp?


Wyszukaj również opcje, aby to zrobić za pomocą scp. Niestety istnieje pomieszanie między scp - sftp - ftps - ftp-ssl
pcapademic

Wydaje mi się, że jest to bardziej pytanie dotyczące ServerFault, ale może to być szara strefa.
squircle

Odpowiedzi:


5

Istnieje coś takiego jak podsystem w (Otwartym) SSH: jest to program, który zostaje zaśmiecony, gdy poprosisz o coś innego niż interaktywną powłokę. Technicznie jest to po prostu plik wykonywalny na zdalnym hoście, który jest wykonywany execprzez sshddziecko po uwierzytelnieniu i wywołaniu setuid.

Możesz znaleźć standardową definicję podsystemu sftpw swojej konfiguracji SSH:

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

Ponieważ jest to zwykły plik wykonywalny, a nie SUID lub specjalny w jakikolwiek inny sposób, możesz napisać skrypt powłoki, który zmieni wszelkie potrzebne atrybuty, a następnie po prostu uruchom oryginalną procedurę obsługi podsystemu.

Umieść następujący skrypt w /usr/lib/opensshfolderze jak np. sftp-fperm-server(Nie jest to wymagane, aby zachować rzeczy w jednym miejscu):

#!/bin/sh
umask 026
exec /usr/lib/openssh/sftp-server

Następnie dodaj wiersz na końcu /etc/ssh/sshd_config:

Subsystem sftp-fperm /usr/lib/openssh/sftp-fperm-server

Następnie uruchom ponownie sshd(nie zabija sesji przy ponownym uruchomieniu) i uruchom sftpz -s sftp-fpermopcją. Voila! pliki otrzymają nowy określony umask.

Jeśli nie chcesz określać tej opcji za każdym razem, po prostu zmień standardową definicję podsystemu. Nie wpłynie to na sesje interaktywne, więc nie ma szans na coś złamania.

Jeśli chcesz użyć newgrppolecenia, będzie trochę trudniej. newgrpzawsze uruchamia nową interaktywną powłokę, jednocześnie głupio nie pozwalając na przekazanie do niej żadnych parametrów, więc nie można jej używać jak umaskw poprzednim przykładzie. Ale możesz zastąpić ostatni wiersz skryptu:

SHELL=/usr/lib/openssh/sftp-server newgrp git

Właściwie wywołanie newgrpjakiegoś grupy należę do emituje żądanie hasła, więc nie byłem w stanie sprawdzić tego rozwiązania (mam na myśli tylko newgrpjedno), ale działa, kiedy przekazać /bin/idna moim laptopie (bez SSH), więc jeśli dostałem newgrppracę dla użytkownika nie powinny pojawić się żadne problemy.


2

Aby dodać do tego, co mówi whitequark, możesz zbudować rozwiązanie zgodnie z tymi zasadami, ale zamiast polecenia newgrp użyj polecenia „sg”, które jest rodzajem „su” dla grup. Wygląda to jak „man sg” przynajmniej na każdym systemie Linux.


1

chmod g+s directory
Udzieli prawa własności grupie użytkowników dla wszystkich katalogów i plików utworzonych w przyszłości.


0

Zakładam, że jest to specyficzne dla serwera. Sprawdź konfigurację serwera pod kątem potencjalnych opcji konfiguracji.


Jest to program sftp dostarczany z OpenSSH (pod linuksem). Po prostu nie jest dla mnie oczywiste, jak robić to, co chcę, całkowicie przejrzyste dla użytkownika sftp.
user24844,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.