[megoldva] vsftpd törlés blokkolása

Fórumok

vsftpd, FTPES, local user konfig.

Az a problémám, hogy pl. Gizike belép és csuklóból letörli a root:root tulajdonú könyvtárat, amire nincs írási joga... A saját maga által létrehozott könyvtárakat kellene tudnia törölni.

Pillanatnyilag az a megoldásom, hogy a nem törölhető könyvtárakba kap egy általa kezelhetetlen fájlt.

ACL lehet, de nem bírtam értelmes megoldást kisakkozni.


listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=0022
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=NO
idle_session_timeout=240
data_connection_timeout=120
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
ssl_enable=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
syslog_enable=YES
ssl_tlsv1=YES
deny_file={.*}
hide_file={.*}
cmds_allowed=SYST,FEAT,PBSZ,OPTS,PROT,TYPE,PASV,LIST,STOR,RETR,QUIT,PWD,CWD,MKD,RMD,DELE
nopriv_user=ftp

Elnézést, ez kimaradt:
"Szóval az általa törölhetetlen könyvtárba kellene tudnia írnia. Unlink_override.c módosításán KÍVÜLI megoldást keresnék, ha létezik."

Megoldás: a unix jogosultságok miatt egy hidden/deny fájl kerül a júzer által törölhetetlen könyvtárba. Ha vki tud szebb/jobb megoldást, az ne habozzon megírni.

Hozzászólások

Tudom, ez nem megoldás, de én a helyedben proftpd-t használnék, ez ugyanis a jogosultságok kezelése szempontjából sokkal fejlettebb mint a vsftpd.

Ha muszáj maradni a vsftpd-nél, akkor érdemes lehet ellenőrizni, hogy a kapcsolatokhoz létrejövő child processek milyen user nevében futnak (a konfig alapján elvileg "ftp") és hogy ez a user nincs-e benne a root csoportban, esetleg a chmod nincs-e úgy beállítva, hogy bárki tudja írni a "védett" könyvtárat.

Nem lehet, hogy már be van állítva valamilyen ACL, ami engedi az írást más usereknek is?

Proftpd-nél valahogy így nézne ki a dolog:

< Directory /vedett/konyvtar>
    < Limit DELE>
        DenyAll
    < /Limit>
< /Directory>

Így senki nem törölheti a könyvtárat FTP-n keresztül.

De olyat is beállíthatsz, hogy gizike nem törölheti, de az admin nevű user igen:

< Directory /vedett/konyvtar>
    < Limit DELE>
        DenyUser gizike
        AllowUser admin
    < /Limit>
< /Directory>

A használható opciók listáját itt találod meg:
http://www.proftpd.org/localsite/Userguide/linked/ref-directives.html

Ez is érdekes lehet:
http://www.proftpd.org/localsite/Userguide/linked/config_ref_Directory…

Az a problémám, hogy pl. Gizike belép és csuklóból letörli a root:root tulajdonú könyvtárat, amire nincs írási joga... A saját maga által létrehozott könyvtárakat kellene tudnia törölni.

Ez sajnos nem megy, a unix jogosultságok nem így működnek.

A user nem a saját maga által létrehozott könyvtárakat tudja törölni, hanem azokat, amiknek a parent könyvtárára van írásjoga (a könyvtárra magára semmilyen jog nem kell ehhez). Persze előtte kell az is, hogy a könyvtár üres legyen, vagy a benne levő dolgokat tudja törölni, vagy onnan elmozgatni máshova.

Ha valaki nem tulajdonos egy könyvtárban, és más módon sincs oda írásjoga, akkor a benne levő fájlokat és könyvtárakat akkor sem tudja törölni, ha azok az övéi.

Sticky bit beállítása a szülő könyvtárra (chmod +t kozos_konyvtar) nem jó?