[SOLVED] Pure Ftpd żeby tylko root mogł zmieniać

Instalacja i konfiguracja oprogramowania sieciowego.
alojzikftp
Sędziwy Jeż
Sędziwy Jeż
Posty: 66
Rejestracja: 09 mar 2011, 20:17
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: Brak
Architektura: x86

[SOLVED] Pure Ftpd żeby tylko root mogł zmieniać

Post autor: alojzikftp »

Witam wszystkich na forum.
Mam pytanie odnośnie programu pure ftpd. Posiadam w nim wirtualnych użytkowników według poradnika z howtoforge. Chciałbym osiągnąć coś takiego:
- user może plik wysłać na FTP, ale nie może zmienić nazwy czy go usunąć
- jeden user - root - może wszystko :)

Myślałem żeby zrobić to jakimś chmodem po wysłaniu, ale kompletnego rozwiązania nie znam. Poza tym prawdopodobne jest, że da się to zrobić na poziomie pure ftpd i nie trzeba tak kombinować. Proszę o odpowiedź.
Pozdrawiam
Ostatnio zmieniony 14 maja 2012, 18:16 przez alojzikftp, łącznie zmieniany 1 raz.
Awatar użytkownika
alex2
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 111
Rejestracja: 22 cze 2008, 13:41
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: Openbox
Architektura: x86

Odp: Pure Ftpd żeby tylko root mogł zmieniać

Post autor: alex2 »

Do ochrony katalogów współdzielonych w systemach uniksowych używa się specjalnie do tego celu przeznaczonego sticky bitu.
http://pl.wikipedia.org/wiki/Sticky_bit
Powoduje to, że każdy może dodać plik, ale skasować tylko swój.

chmod 1777 katalog

W wyniku ls -l taki katalog ma
drwxrwxrwt

Na pewno w Twoim systemie tak ustawiony jest katalog /tmp, oraz niektóre podkatalogi w /var.

Pozdrawiam
alojzikftp
Sędziwy Jeż
Sędziwy Jeż
Posty: 66
Rejestracja: 09 mar 2011, 20:17
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: Brak
Architektura: x86

Odp: Pure Ftpd żeby tylko root mogł zmieniać

Post autor: alojzikftp »

Dzięki za odpowiedź.
Chciałbym jednak, aby nie mogł użytkownik skasować swojego pliku, ani go zmienić.
On może tylko wrzucić, a root będzie usuwał.
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Odp: Pure Ftpd żeby tylko root mogł zmieniać

Post autor: jacekalex »

1 Opcja, nie testowałem:
W odniesieniu do roota - ze względów bezpieczeństwa nie radzę, ale można do tego wykorzystać osobnego użytkownika.
O ile sie nie mylę, jeśli folder otrzymuje SUID i GID użytkownika i grupy, to każdy zapisany w nim plik jest przejmowany przez właściciela i grupę.
Do tego można ustawić umask poprzez np ACL - i gotowe.

2 Opcja - ta działa na 150%:
Pure-uploadscript - zazwyczaj używany do skanu antywirusowego ładowanych plików.
To jest zwykły skrypt w shellu (bash), i możesz w nim ustawić dowolną akcje względem pliku, np skan antywirusowy, podpis kluczem gpg, zmiana chown i chmod, atrybut chattr, kopia do innego folderu.

Nie umiem zaprogramować w takim skrypcie, to odgadywał numery lotka na najbliższe losowanie, parzył kawę i podawał ciastka.
Ale z uploadowanym plikiem może zrobić WSZYSTKO.

To by było na tyle
:craz:
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
alojzikftp
Sędziwy Jeż
Sędziwy Jeż
Posty: 66
Rejestracja: 09 mar 2011, 20:17
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: Brak
Architektura: x86

Odp: Pure Ftpd żeby tylko root mogł zmieniać

Post autor: alojzikftp »

A czyli uruchamiałbym chmod na załadowanym pliku?
W takim razie jak pozyskać nazwę pliku załadowanego, czy wykonać to na * albo folderze ?
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Odp: Pure Ftpd żeby tylko root mogł zmieniać

Post autor: jacekalex »

http://www.howtoforge.com/how-to-integr ... bian-lenny
W poście numer 4 ten link jest pod wyraźnie widoczny pod słowami Pure-uploadscript.
Tam masz gotowy skrypt z przykładem podpięcia do pure.
Wystarczy do niego dopisać kilka linijek z kolejnymi akcjami.
Oznaczenie nazwy pliku takie samo, jak przy clamie.

A jak dalej nie wiesz, jak to zrobić, to tutaj są dalsze instrukcje.

To by było na tyle
:craz:
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
Awatar użytkownika
alex2
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 111
Rejestracja: 22 cze 2008, 13:41
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: Openbox
Architektura: x86

Odp: Pure Ftpd żeby tylko root mogł zmieniać

Post autor: alex2 »

Najłatwiej chyba tak:
Tworzysz plik /etc/pure-ftpd/conf/Umask
Będą tam maski dla nowych plików.

Jeśli chcesz r-xr-xr-x, wpisujesz do niego:
222 222
pierwsza grupa dla plików, druga dla katalogów.
Jeśli chcesz wyłączyć również execute, czyli r--r--r--, to zawartość pliku powinna być taka:
333 333

Potem restart sysu i powinno hulać :)
alojzikftp
Sędziwy Jeż
Sędziwy Jeż
Posty: 66
Rejestracja: 09 mar 2011, 20:17
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: Brak
Architektura: x86

Odp: Pure Ftpd żeby tylko root mogł zmieniać

Post autor: alojzikftp »

No to obie opcje są niezłe. Bardzo panom dziękuję. Sprawdziłem i działają. :)
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Odp: Pure Ftpd żeby tylko root mogł zmieniać

Post autor: jacekalex »

alojzikftp pisze:No to obie opcje są niezłe. Bardzo panom dziękuję. Sprawdziłem i działają. :)
To napisz, która opcja u Ciebie zdała egzamin.
I przy okazji do rozwiązanych tematów zazwyczaj (forumowy obyczaj) dodaje się [SOLVED] w temacie 1 postu, żeby ludzie z całego świata mogli łatwiej znaleźć rozwiązanie.

To by było na tyle
:craz:
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
alojzikftp
Sędziwy Jeż
Sędziwy Jeż
Posty: 66
Rejestracja: 09 mar 2011, 20:17
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: Brak
Architektura: x86

Odp: Pure Ftpd żeby tylko root mogł zmieniać

Post autor: alojzikftp »

Ostatecznie użyłem UploadScript. Po załadowaniu pliku zgodnie z poradnikiem właścicielem staje się 'ftproot' :), po czym plik jest chmodowany 744.

EDIT:
Mam jeszcze jedno małe pytanie, gdyż metoda z Umask nie bardzo mi działa.
do Umask wpisuję "077 022". Czyli powiniem z tego wyjść chmod 700 dla plików, nieprawdaż?
Czyli jeśli właścicielem pliku jest root po poleceniu: chown root:root uploadowany_plik, to ftpuser, który władował plik teoretycznie nie powinien tego pliku widzieć, edytować czy usuwać, a jednak u mnie może. Total Commander pokazuje chmody obliczane właściwie, ale nie przeszkadza mu to i może z plikiem wszystko zrobić. Czemu tak jest, no i czy można mój problem rozwiązać tą metodą?
Pozdrawiam
Awatar użytkownika
jacekalex
Gibki Gibbon
Gibki Gibbon
Posty: 4707
Rejestracja: 17 cze 2007, 02:54
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: MATE
Architektura: x86_64

Odp: Pure Ftpd żeby tylko root mogł zmieniać

Post autor: jacekalex »

O ile pamiętam, to w pure jest opcja zablokowania chmodów przy połączeniu, ale nie pamiętam, który parametr za to odpowiada.

Jednak, jeśli masz już UploadScript, to po co Ci osobno Umask?
dajesz akcje
chmod 600 "$plik"
do skryptu, gdzie $plik -to zmienna opisująca nazwę pliku, do tego jak pisałeś: przejmuje go na własność ftproot, i to wszystko w tej sprawie.

To by było na tyle
:craz:
Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Komputer jest jak klimatyzacja - gdy otworzysz okna, robi się bezużyteczny...
Linux User #499936
Inny OS: Gentoo Linux :)
ODPOWIEDZ

Wróć do „Sieci, serwery, Internet”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 14 gości