How-To Zmiana config'a ProFTPD (proftpd.conf)

Silas Mariusz

Silas Mariusz

rm -rf /
Help us, GOD!
Apr 5, 2008
10,132
31
2,204
153
39
www.devspark.pl
QNAP
TS-x77
Ethernet
1 GbE
A wiec, ostatnio otrzymalem dosc ciekawe maila w ktorym to pewien z uzytkownikow QNAP NAS chcial zmienic standardowy plik konfiguracyjny ProFTPD. Jednak nie udawalo mu sie, poniewaz za kazdym razem, kiedy restartowal usluge FTPD, config przywracal sie do oryginalnego z stoczni QNAP.

Czy jest na to rozwiazanie? Przed napisaniem co trzeba zrobic, chcialbym polecic wszystkim uzytkownikom kilka ciekawych informacji...

1) Oryginalny config proftpd ( /mnt/HDA_ROOT/.config/proftpd.conf )
Code:
ServerName		"ProFTPD"
ServerType		standalone
DefaultServer		on
RootLogin		on
Port			21
MaxInstances		30
User			guest
Group			guest
DefaultRoot		/share
Umask			000
ShowSymlinks		off
AllowOverwrite		on
TimesGMT			off
UseReverseDNS		off
WtmpLog			off
AllowStoreRestart	on
TransferLog		NONE
UseReverseDNS            off
IdentLookups             off
DisplayLogin 		welcome.msg
CharsetLocal			UTF-8
CharsetRemote			ISO8859-2
UseUTF8          off
TLSEngine              off
TLSRequired            off
TLSRSACertificateFile	/etc/ssl/certs/myhost.crt
TLSRSACertificateKeyFile /etc/ssl/private/myhost.key
TLSCACertificateFile   /etc/ssl/certs/myrootca.crt
TLSOptions		NoCertRequest
TLSVerifyClient	off
PassivePorts 55536 56559
MaxClientsPerUser 	10
EnableUserWanIp          off
<Directory "/share/HDY_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDB_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDF_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDH_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDO_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDK_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDT_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDS_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDG_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDP_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDN_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDR_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDW_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDM_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDX_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/external">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDZ_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDV_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDD_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDC_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDL_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDQ_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDU_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDI_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDE_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDJ_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/HDA_DATA">
	<Limit ALL>
		DenyAll
	</Limit>
</Directory>

<Directory "/share/Qmultimedia">
	<Limit READ DIRS>
		Order		Deny, Allow
		AllowGroup	"everyone"
		AllowUser	"admin"
		DenyUser	"guest"
	</Limit>
	<Limit ALL>
		Order		Deny, Allow
		AllowUser	"admin"
	</Limit>
</Directory>

<Directory "/share/Qdownload">
	<Limit READ DIRS>
		Order		Deny, Allow
		AllowGroup	"everyone"
		AllowUser	"admin"
		DenyUser	"guest"
	</Limit>
	<Limit ALL>
		Order		Deny, Allow
		AllowUser	"admin"
	</Limit>
</Directory>

<Directory "/share/Qrecordings">
	<Limit READ DIRS>
		Order		Deny, Allow
		AllowGroup	"everyone"
		AllowUser	"admin"
		DenyUser	"guest"
	</Limit>
	<Limit ALL>
		Order		Deny, Allow
		AllowUser	"admin"
	</Limit>
</Directory>

<Directory "/share/Qweb">
	<Limit READ DIRS>
		Order		Deny, Allow
		AllowGroup	"everyone"
		AllowUser	"admin"
		DenyUser	"guest"
	</Limit>
	<Limit ALL>
		Order		Deny, Allow
		AllowUser	"admin"
	</Limit>
</Directory>

<Directory "/share/Qusb">
	<Limit READ DIRS>
		Order		Deny, Allow
		AllowGroup	"everyone"
		AllowUser	"admin"
		DenyUser	"guest"
	</Limit>
	<Limit ALL>
		Order		Deny, Allow
		AllowUser	"admin"
	</Limit>
</Directory>

<Directory "/share/Public">
	<Limit READ DIRS>
		Order		Deny, Allow
		AllowUser	"admin"
		AllowGroup	"everyone"
		AllowUser	"guest"
	</Limit>
	<Limit ALL>
		Order		Deny, Allow
		AllowUser	"admin"
		AllowGroup	"everyone"
		AllowUser	"guest"
	</Limit>
</Directory>

<Directory "/share/Network Recycle Bin 1">
	<Limit READ DIRS>
		Order		Deny, Allow
		AllowGroup	"everyone"
		AllowUser	"admin"
		DenyUser	"guest"
	</Limit>
	<Limit ALL>
		Order		Deny, Allow
		AllowUser	"admin"
	</Limit>
</Directory>

2. Przydatne linki:
http://pl.docs.pld-linux.org/uslugi_proftpd.html
http://newbie.linux.pl/wydruk.php?wydru ... ow=artykul



A teraz ...
Aby zmiany zostaly zachowane nalezy wykonac ponizsze polecenie:
Code:
# /etc/init.d/ftp.sh reconfig
w przeciwnym razie, po restarcie urzadzenia zostanie przywrocony stary conf
 
P

polityk

Passing Basics
Beginner
Sep 11, 2008
13
1
3
Witam!

Na wstępie zaznacze, że w temacie Qnap'ów jestem nowy :]
Potrzebowałem zmodyfikować ustawienia serwera FTP na TS-409 i na moje szczęście znalazłem tam zainstalowany PROFTPD.
Oczywiście miałem problem z zachowywaniem configa i znalazłem to forum :]

W moim przypadku po edytowaniu konfiga, zapisaniu go, odpaleniu skryptu
Code:
/etc/init.d/ftp.sh reconfig
Qnap bardzo ładnie przyjmuje nowe ustawienia, ale po restarcie systemu nie zachowuje konfiga... :(
Nadpisuje spowrotem mi poprzedni konfig...
Nowy konfig zachowałem sobie między innymi w /root i ku mojemu zdziwieniu po restarcie tez go tam nie było....

Jeden z moich pomysłów to wrzucić gdzieś mój konfig i dodac skrypt który by go kopiował i rekonfigurowal FTP'a ale to chyba zabijanie muchy z bazooki...

Jakieś pomysły/podpowiedzi?

Pozdrawiam, Polityk
 
Silas Mariusz

Silas Mariusz

rm -rf /
Help us, GOD!
Apr 5, 2008
10,132
31
2,204
153
39
www.devspark.pl
QNAP
TS-x77
Ethernet
1 GbE
tak to jest rozwiazanie... ja teraz jestem po za qnap'em
napisz co sie wyswietli jak wykonasz:
# /etc/init.d/ftp.sh
bez polecenia
 
P

polityk

Passing Basics
Beginner
Sep 11, 2008
13
1
3
tyle mi daje ftp.sh
Code:
Usage: /etc/init.d/ftp.sh {start|stop|restart|reconfig}
----------------------------------------------------------------------------------------------------------------------

może jeszcze napisze o co mi w efekcie chodzi:

Potrzebuje jeden z katalogów dostępnych na FTP ograniczyć tak aby użytkownik nie mógł usuwać/modyfikować plików/katalogów które wrzuci.
Idealnym dla mnie rozwiązaniem jest <Limit> w konfiguracji PROFTPD i ograniczenie używania konkretnych komend FTP.
Chyba, że jest jakiś inny sposób... niesttey prawa linuksowe nie dadzą rady, bo write = delete...

----------------------------------------------------------------------------------------------------------------------
Moje rozwiązanie:
Spróbowałem dopisać do /dev/mtdblock5/autorun.sh skrypt:
Code:
#!/bin/sh
cp /share/MD0_DATA/Work/proftpd.conf.new /etc/config/proftpd.conf
/etc/init.d/ftp.sh reconfig
dodatkowo dopisałem ten sam skrypt w /mnt/HDA_ROOT/.config/crontab co 5 minut
i dopiero takie rozwiązanie działa jak dla mnie.
Oczywiście panel www staje się bezużyteczny jeśli chodzi o FTP, bo CRON nam nadpisuje konfig,
ale w mojej konfiguracji ważniejsze jest żeby to działało niż żeby panel www był w 100% dostępny.

----------------------------------------------------------------------------------------------------------------------

Moja Propozycja zmian w software Qnap'a:
Chodzi o to aby plik proftpd.conf generowany przez system nie nadpisywał "bezmyślnie" proftpd.conf.
W konfiguracji proftpd.conf można było oznaczyć części konfiguracji jako edytowane ręcznie - nie ruszane przez system.
Lub poprostu różnice między generowanym przez system plikiem a właściwym konfigiem byłyby zachowywane.
W takim rozwiązaniu obie konfiguracje by współistniały i po dodaniu ręcznym zmian system by chronił cały plik wraz z zmianami tak jak to robi teraz.
Można by też dodać opcje "reset" w panelu www która by nadpisywała konfig tym wygenerowanym tak aby można było łatwo przywrócić działającą konfiguracje.
 
  • Like
Reactions: Silas Mariusz
T

tech01

Nowy użytkownik
Noobie
Jan 23, 2013
1
0
1
Witam, odgrzeje dość stary temat, ale problem jest aktualny.

Czy jest możliwość wymuszenie zachowania pliku proftpd.conf po restarcie serwera ?? czy przez te kilka lat coś się zmieniło lub ktoś zna rozwiązanie ?
Niestety porady z postów powyżej nie dają żadnego efektu, czyli reset=stara konfiguracja.