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?
permissions
file-management
user-accounts
sftp
użytkownik24844
źródło
źródło
Odpowiedzi:
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
exec
przezsshd
dziecko po uwierzytelnieniu i wywołaniu setuid.Możesz znaleźć standardową definicję podsystemu
sftp
w swojej konfiguracji SSH: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/openssh
folderze jak np.sftp-fperm-server
(Nie jest to wymagane, aby zachować rzeczy w jednym miejscu):Następnie dodaj wiersz na końcu
/etc/ssh/sshd_config
:Następnie uruchom ponownie
sshd
(nie zabija sesji przy ponownym uruchomieniu) i uruchomsftp
z-s sftp-fperm
opcją. 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ć
newgrp
polecenia, będzie trochę trudniej.newgrp
zawsze 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ć jakumask
w poprzednim przykładzie. Ale możesz zastąpić ostatni wiersz skryptu:Właściwie wywołanie
newgrp
jakiegoś grupy należę do emituje żądanie hasła, więc nie byłem w stanie sprawdzić tego rozwiązania (mam na myśli tylkonewgrp
jedno), ale działa, kiedy przekazać/bin/id
na moim laptopie (bez SSH), więc jeśli dostałemnewgrp
pracę dla użytkownika nie powinny pojawić się żadne problemy.źródło
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.
źródło
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.
źródło
Zakładam, że jest to specyficzne dla serwera. Sprawdź konfigurację serwera pod kątem potencjalnych opcji konfiguracji.
źródło