Archiwum kategorii: Webmastering

Plik .ftpaccess czyli zarządzanie prawami użytkowników na hostingowym koncie FTP

Klasyczną sytuacją, gdy przyda się znajomość konstrukcji plików .ftpaccess jest udostępnianie konta ftp współpracownikowi albo klientowi, któremu chcemy w określonym katalogu dać prawa np. tylko do odczytu.

Na początek warto sprawdzić, czy .ftpaccess zadziała na naszym hostingu. Tworząc plik .ftpaccess o poniższej zawartości:

<Limit ALL>
DenyAll
</Limit>

Jak łatwo się domyślić zabrania on wszystkiego wszystkim. Natychmiast po wgraniu tego pliku klientem ftp – cała zawartość katalogu, w którym go wgraliśmy powinna w kliencie FTP zniknąć. Nie będzie można przesłać do niego nowego pliku ani utworzyć podkatalogu. Ponadto, gdy przejdziemy poziom wyżej w hierarchii katalogów – z listy plików i katalogów powinien zniknąć ten, w którym powyższy plik .ftpaccess został wgrany. Testuj w ten sposób działanie .ftpaccess tylko wtedy, gdy masz do tych zasobów dostęp alternatywny, np. przez shella lub menadżera plików z poziomu DirectAdmin.

Prawa można pogrupować wg. właściwości:

ALL – wszelkie prawa (rozumiane jako polecenia FTP) oprócz prawa do logowania (LOGIN)

LOGIN – jako argumentu używa się loginów klientów

READ – prawa do odczytu
RETR SIZE
RETR – RETRieve – pobieranie plików
SIZE – SIZE –

WRITE – prawa do zapisu
APPE DELE MKD RMD RNTO STOR STOU XMKD XRMD
APPE – APPEnd – dopisuje przesyłany strumień bitów (plik) do końca już istniejącego na serwerze pliku. Jeśli plik o danej nazwie nie istnieje, zostanie utworzony nowy.
DELE – DELEte – usuwanie plików
MKD – MaKe Directory – utworzenie katalogu
RMD – ReMove Directory – usunięcie katalogu
RNTO – ReName TO – zmiana nazwy
STOR – STORe – podanie serwerowi pod jaką nazwą ma zapisać przesłany strumień bitów (plik)
STOU – STOre Uunique – pozwolenie serwerowi, aby przesłany strumień bitów mógł nazwać trochę inaczej niż podano, aby uniknąć nadpisania istniejącego już pliku
XMKD – wariant MKD dla X-ów
XRMD – wariant RMD dla X-ów

DIRS – polecenia wędrówki po ścieżkach katalogowych
CDUP CWD LIST MDTM MLSD MLST NLST PWD RNFR STAT XCUP XCWD XPWD
CDUP – Change Directory UP – zmiana katalogu na o poziom wyższy
CWD – Change Working Directory – zmiana katalogu roboczego
LIST – LIST – listuje pliki i katalogi
MDTM – MoDification TiMe – żądanie podania czasu modyfikacji pliku na serwerze
MLSD – Machine LiSting, Directory – działa jak LIST, listuje pliki i katalogi lecz w ściśle określonym formacie zdefiniowanym przez RFC 3659 – dla łatwiejszego parsowania
MLST – Machine LiSTing – w przeciwieństwie do MLSD odsyła wynik listowania poprzez połączenie kontrolujące transfer, a nie poprzez połączenie transferowe
NLST – Name LiST –
PWD – Print Working Directory – żądanie podania nazwy katalogu roboczego
RNFR – ReName FRom –
STAT – STATus – żąda od serwera podania statusu połączenia
XCUP – wariant CDUP dla X-ów
XCWD – wariant CWD dla X-ów
XPWD – wariant PWD dla X-ów

Dostępne dyrektywy sterujące powyższymi poleceniami to:
Allow, Deny, AllowUser, DenyUser, AllowGroup, DenyGroup, AllowAll, DenyAll

Przykład 2. Wycinam wszystkie polecenia zapisu, czyli potencjalnie destrukcyjne – wszystkim użytkownikom oprócz „webmajster” i dowolnemu łączącemu się z adresu IP 82.160.142.94 oraz sieci 158.152.0.0/16. Dodatkowo ukrywam przed wszystkimi użytkownikami FTP istnienie pliku .ftpaccess – to akurat odradzam, aby uniknąć po pewnym czasie niezrozumiałego dla nas zachowania się serwera FTP.

<Limit APPE DELE MKD RMD RNTO STOR STOU XMKD XRMD>
DenyAll
AllowUser webmajster
Allow 158.152.0.0/16
Allow 82.160.142.94
</Limit>
<Directory />
HideFiles „(\.ftpaccess)”
</Directory>

Bibliografia:
http://www.proftpd.org/docs/howto/Directory.html
http://www.proftpd.org/docs/howto/FTP.html
http://burzainfo.wordpress.com/2013/04/10/proftpd-ftpaccess-rozne-informacje/