www.ProFTPD.de
13. März 2007, 18:56:14 *
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
News: SMF - Neu installiert!
 
   Übersicht   Hilfe Suche Login Registrieren  
Seiten: [1]   Nach unten
  Drucken  
Autor Thema: Löschen - aber immer doch!?!  (Gelesen 230 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
VolGas
Gast
« am: 19. November 2005, 23:00:49 »

Hallo, alle mit einander!

Wir verwenden für unsere Kunden auf unserem kleinen Webserver schon länger erfolgreich ProFTPD (aktuell 1.2.10) mit mod_sql_mysql auf einem Debian-System.

Es funktioniert soweit auch alles problemlos, nur eines nicht: egal welche Zugriffsrechte ein Verzeichnis oder eine Datei hat: es kann immer(!) gelöscht werden!

Hier ein Extrembeispiel:
Code:
drwxr-x---   2 1002     555          4096 Oct 15  2004 .access
----------   1 0        0             256 Nov 19 21:12 test
drwxrwx---   7 1002     555          4096 Oct 24 10:19 web
drwxr-x---   2 1002     555          4096 Nov 26  2004 web_1

Die Datei "test" hat keine Zugriffsrechte, gehört dem root-User und kann weder heruntergeladen, noch sonst irgend etwas damit gemacht werden. Man erhält bei allem ein: "Permission denied" - wie es sich gehört.
Aber Löschen - kein Problem!

Hier unsere wichtigsten Settings:
Code:
[...]
<Global>
    User            nobody
    Group           nogroup

    AuthOrder       mod_sql.c

    ### Userident und -setting via mySQL
    SQLConnectInfo      servicedb@localhost proftpd pass PERSESSION
    SQLUserInfo         ftp userid passwd uid NULL homedir NULL
    SQLAuthTypes        Plaintext
    SQLAuthenticate     users*
    SQLMinUserUID       1000
    SQLMinUserGID       555
    SQLDefaultGID       555

    DefaultRoot         ~
    Umask               017 007

    ListOptions         "-An +R" strict maxfiles 250
    UseGlobbing         off
    ShowSymlinks        on

    AllowOverwrite          on
    AllowRetrieveRestart    on
    AllowStoreRestart       on
</Global>

DefaultAddress  www1
ServerName      www1.irgendwo.de
ServerAdmin     hostmaster@irgendwo.de

<VirtualHost www2>
...
<\VirtualHost>


Den Einsatz von "HideNoAccess on" würde zwar das Problem beseitigen, allerdings müssen wir darauf verzichten, da wir mit unterschiedlichen Benutzer- und Gruppenrechten arbeiten müssen. Das klappt mittels "umask" auch ganz hervorragend.

Ich finde einfach den Fehler nicht und wäre um Hilfe sehr dankbar!

mfg.
  VolGas
Gespeichert
VolGas
Moderator
ProFTPD
*****
Online Online

Beiträge: 771



Profil anzeigen
« Antwort #1 am: 21. November 2005, 15:03:59 »

Wir benutzen zwar Debain Stable, nutzen aber nicht dessen Server-Software, sondern haben diese selbst compiliert. Damit haben wir aktuellere Software und selbst mehr Kontrolle.

So wurde unser proFTPD compiliert:
Code:
./configure \
--with-modules="mod_ifsession:mod_readme:mod_sql:mod_sql_mysql:mod_tls" \
--disable-auth-file --disable-auth-pam \
--disable-sendfile --enable-buffer-size=8092 \
--with-includes=/usr/local/mysql/include/mysql \
--with-libraries=/usr/local/mysql/lib/mysql \
\
--prefix=/usr/local/proftpd-1.2.10 \
--sysconfdir=/etc --localstatedir=/var/run --mandir=/usr/local/man \
\
CFLAGS="-O3 -fexpensive-optimizations" \
CXX=gcc CXXFLAGS="-O3 -felide-constructors -fexpensive-optimizations -fno-exceptions -fno-rtti"

Damit haben wir bislang nur gute Erfahrungen gemacht.

mfg.
  VolGas
Gespeichert
stonki
Administrator
ProFTPD
*****
Offline Offline

Beiträge: 1853


15318939
Profil anzeigen WWW E-Mail
« Antwort #2 am: 21. November 2005, 17:40:22 »

klingt wie:

http://www.proftpd.de/forum/viewtopic.php?t=307&highlight=rechte+root
Gespeichert

www.stonki.de:    the more I see, the more I know.......
www.proftpd.de:   Deutsche ProFTPD Dokumentation
www.krename.net:  Der Batch Renamer für KDE
www.kbarcode.net: Die Barcode Solution für KDE
VolGas
Moderator
ProFTPD
*****
Online Online

Beiträge: 771



Profil anzeigen
« Antwort #3 am: 22. November 2005, 01:29:44 »

Hallo Stonki,

vielen Dank für Deine Antwort.
Das von Dir erwähnte Posting hatte ich bei meiner Suche gar nicht gefunden oder übersehen, sorry.

Aber was da geschrieben steht, ist mir durchaus bekannt und bewußt.
Ich habe leider noch vergessen zu erwähnen, daß bei jedem Homeverzeichnis auch das sog. "sticky bit" gesetzt ist. Das verhindert gerade eben im normalen Unix-Alltag, daß Dateien gelöscht werden können, die einem "nichts angehen" - auch wenn einem das Verzeichnis gehört.

Ich vermute schon eine ganze Weile, daß ProFTPD mit dem sticky bit nix anzufangen weiß. Trozdem wundert es mich, denn gleich nach dem Einloggen des Users gibt der gestartete ProFTPD-Prozess seine Root-Rechte auf und läuft unter der User- und Gruppen-ID des angemeldeten Users.

Da der Prozess dann keine Root-Rechte mehr hat (haben dürfte!), dürfte es auch nicht mehr möglich sein, fremde Dateien/Verzeichnisse zu löschen. In der Shell ist das zumindest nicht möglich.
Was läuft da schief?

Nochmals vielen Dank für die rasche Antwort!
Vielleicht weißt Du (oder jemand anderes) was da los ist und vielleicht sogar, wie man das in normale Bahnen lenken kann - vielen Dank!

mfg.
  VolGas
Gespeichert
stonki
Administrator
ProFTPD
*****
Offline Offline

Beiträge: 1853


15318939
Profil anzeigen WWW E-Mail
« Antwort #4 am: 22. November 2005, 09:07:34 »

also zu 100%. Das liegt nicht an ProFTPD, sondern an den Linux rechten. Was passiert denn wenn Du Dich als User auf der console einloggst ? Kannst Du dann das File löschen ?
Gespeichert

www.stonki.de:    the more I see, the more I know.......
www.proftpd.de:   Deutsche ProFTPD Dokumentation
www.krename.net:  Der Batch Renamer für KDE
www.kbarcode.net: Die Barcode Solution für KDE
VolGas
Moderator
ProFTPD
*****
Online Online

Beiträge: 771



Profil anzeigen
« Antwort #5 am: 23. November 2005, 06:25:34 »

Hallo Stonki,

1.) vielen Dank für Deine Antwort und Deine Geduld
2.) Du hast Recht!

Zu meiner Schande muß ich gestehen, daß ich die Funktionsweise des "Sticky Bits" nicht ganz "ausgelotet" hatte und im Vorfeld meines Postings es auch nicht noch einmal im o.g. Kontext ausprobiert hatte.

Ich habe mich nun noch einmal "duchgelesen":
Zitat
Das Sticky Bit bei einem für alle zum Schreiben geöffneten Directory verhindert, daß sich Benutzer gegenseitig die in einem offenen Verzeichnis abgelegten Dateien weglöschen. Typische Anwendungen dieser Ausnahmeregelung sind die Verzeichnisse /tmp und /var/tmp. Ein solches Verzeichnis muß für alle zum Schreiben geöffnet sein.

Ist das Sticky Bit auf einem solchermaßen schreiboffenen Verzeichnis gesetzt, so darf man in diesem Verzeichnis nur löschen oder umbenennen, wenn eine der folgenden Bedingungen erfüllt ist:

* Die effective uid des löschenden oder umbenennenden Prozesses ist die des Eigentümers der Datei
* Die effective uid des löschenden oder umbenennenden Prozesses ist die des Eigentümers des Verzeichnisses
* Die Schreibberechtigung der zu löschenden oder umbenennenden Datei ist so freizügig gesetzt, daß man die Datei selbst beschreiben darf
* man ist "Superuser" root

Ich ging fälschlicherweise davon aus, daß das Sticky Bit prinzipiell verhindert, daß fremde Dateien gelöscht werden können, wenn man keine Schreibrechte an diesen hat. ProFTPD macht allso alles richtig...

Ich muß mir eben etwas anderes einfallen lassen, vielleicht in dieser Art:
Code:
<Directory ~>
    HideFiles "^__system"
</Directory>

Damit könnte ich dann wichtige Files (oder gar ein ganzes Verzeichnis) vor dem User recht gut verstecken - es sei denn, er weiß, wo er zu suchen hat oder er liest per Script das Verzeichnis aus.

Es ist mir peinlich und tut mir leid, Dich mit meiner Frage "belästigt" zu haben, aber vielleicht kommt irgendwann wieder so ein "Schlaumeier" wie ich - dann kannst Du ihn gerne auf diesen Artikel verweisen...

Vielen herzlichen Dank auch dafür, daß es dieses offene Forum gibt und auch so hervorragend von Dir unterhalten wird!

mfg.
  VolGas
Gespeichert
Seiten: [1]   Nach oben
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS
Seite erstellt in 0.054 Sekunden mit 16 Zugriffen.