löschen von Verzeichnis verbieten

B

BiBe

Greenhorn
Hi,
ich verwalte einen FTP-Server, mit verschiedenen Benutzern, die jeweils ein Home-Verzeichnis haben. Z.B. /public/www/web1/.
Nun möchten manche der Benutzer auf einen Unterordner ihres Home-Verzeichnisses einen weiteren FTP-Account mit eingeschränkten Rechten haben. Diesem Unterordner gebe ich die Rechte 775, damit er von beiden Accounts beschrieben werden kann.

Nun möchte ich aber verbieten, dass dieser Ordner gelöscht wird, weil sich sonst der FTP-Server beim Starten beschwert, dass ihm ein Verzeichnis fehlt. Ist das mit den Linux-Dateirechten möglich? Schreibrechte auf den darüber liegenen Ordner kann ich ja auch nicht ändern, denn das ist das Home-Verzeichnis.

Bin für jeden Tipp dankbar,
viele Grüße
BiBe
 
Du könntest mit versch. Usergruppen das umgehen ... also

/public/www/web1 = gruppe1
/public/www/web1/web1 = gruppe2

Wäre wenigstens ein Ansatz ;)
 
Hi,
danke für die Antwort.

Der Benutzer web1 muss leider auch auf das Unterverzeichnis zugreifen können, um darin z.B. Dateien löschen zu können, denn das darf der Benutzer web1_uploadonly nicht. web1 muss also in den Ordner schreiben können, soll ihn aber nicht löschen dürfen. Wie kann ich das realisieren?

Viele Grüße
BiBe
 
Hi,

vielleicht koenntest du einfach vor dem Start des Servers selber ein Skript laufen lassen, das guckt ob die Ordner da sind, wenn nicht werden sie erstellt?

Andrea
 
schaue dir mal
Code:
man chattr
und
Code:
man lsattr
an...
gilt aber soweit ich weiß nur für ext2 und ext3
 
Hi!

@weor: Vielen Dank für den Hinweis. Auf den ersten Blick sieht das so aus, als würde das Attribut -i genau das machen, was ich gesucht hab (die Partition ist mit ext3 formatiert). Wenn ich das Uploadverzeichnis allerdings damit versehe, darf wieder nur der Inhalt darin nicht verändert werden, das Verzeichnis selbst kann aber gelöscht werden. Um das zu verhindern, müsste ich +i auf das darüber liegende Verzeichnis setzen, was leider nicht geht, weil das das Home-Verzeichnis ist.

Die Option -u (undeletable) klingt noch vielversprechend, aber das scheint ja lediglich die Möglichkeit zur Wiederherstellung gelöschter Daten zur Verfügung zu stellen. Habe ich etwas übersehen?

Hat noch jemand eine Idee?

Viele Grüße
BiBe
 
dann lege als root ne versteckte datei in dem verzeichnis an...
damit wird zumindest rmdir keinen erfolg haben das verzeichnis zu löschen...
(zumindest nicht als "normaler user")

aber für dein problem gibt es bestimmt noch ne elegantere lösung.
 
Hi!

dann lege als root ne versteckte datei in dem verzeichnis an...
damit wird zumindest rmdir keinen erfolg haben das verzeichnis zu löschen...

Sowas hab' ich auch schon versucht und das Ergebnis hat mich überrascht:

Verzeichnis test:
Code:
drwxr-xr-x  2 bibe users 4.0K 2006-08-02 13:26 test

darin Datei bla:
Code:
-rwx------  1 root root 11 2006-08-02 13:27 bla

Dann als user "bibe":
Code:
bibe@x:~$ rm -r test
rm: remove write-protected regular file `test/bla'? y

=> Verzeichnis test inkl. bla gelöscht.

Obwohl bibe keine Rechte auf die Datei bla hat, kann er bla löschen, weil er Schreibrechte auf das Verzeichnis hat, in dem bla steht. Das finde ich merkwürdig, ist aber offensichtlich so. Ich kann damit also leider mein Problem nicht lösen. :think:

Hat noch jemand eine Idee?

Vielen Dank, viele Grüße
BiBe
 
Reicht es nicht, das Verzeichnis root oder einem anderen user zuzuschreiben und dann das Sticky-bit zu setzen?
Code:
chmod 1777 verzeichnis
/tmp kann man als user ja auch nicht loeschen, oder?
 
Hi,

hier kurz ein Zitat aus der Wikipedia:

Unter Linux: Das Sticky-Bit bewirkt bei Verzeichnissen, auf die alle lesend und schreibend zugreifen dürfen (Rechtewert 777), dass jeder Benutzer nur seine eigenen Dateien verändern darf. Bei anderen Unix-Betriebssystemen kann das Sticky-Bit auch andere Wirkungen haben. Das Kommando 'ls -l' zeigt bei Verzeichnissen mit Sticky-Bit den Buchstaben t an.

Das Problem ist, dass selbst wenn ich dem Upload-Verzeichnis das sticky-Bit setze und es root vermache, darf ein User das Verzeichnis dennoch löschen, weil er Schreibtrechte auf den übergeordneten Ordner, das Homeverzeichnis, hat/haben muss:

Code:
drwxrwxrwt  2 root root  4.0K 2006-08-02 14:30 test

Code:
bibe@x:~$ rm -r test/

=> Verzeichnis test weg.

Ich muss doch irgendwie definieren können, dass ein bestimmtes Verzeichnis nicht gelöscht werden darf? :think:

NACHTRAG:
Das Homeverzeichnis von meinem FTP-User ist /public/web1, er will ein Unterverzeichnis /public/web1/upload mit eigenem FTP-Account haben. Ich hab' nun als Besitzer von /public/web1 root angegeben, die Rechte auf 1777 (sticky bit gesetzt). Der Upload Ordner gehört root und hat die Rechte 777.
Nun kann der User zwar beliebige Dateien in /public/web1 und im Unterverzeichnis upload erstellen, aber nur noch seine eigenen löschen und umbennen. Da upload root gehört, kann er dieses also nicht mehr löschen. Genau das war doch mein Ziel.
Was mich noch ein klein wenig stört, ist die Tatsache, dass nun jeder (777) in upload und auch in das Homeverzeichnis schreiben darf. Da aber kein user shell-Zugriff hat und das Homeverzeichnis ein Webverzeichnis eines Apache mit open_basedir sowie entsprechend deaktivierten shell-Funktionen ist, sollte das ja so tragbar sein.
Wenn der FTP-User nun allerdings eine Datei angelegt hat, die z.B. durch den Webserver gelöscht werden soll, dann geht das vermutlich in dem Verzeichnis mit gesetztem sticky-bit wieder nicht. Da bleibt die Frage, ob PHP-Skripte der Webuser Dateien löschen müssen... Oder sollte ich PHP doch nicht mehr als Modul, sondern als cgi einbinden? Das sollte ja das durch das sticky-bit entstandende Problem wiederum lösen. Hm. :)

Nochmals vielen Dank für eure Hilfe!
BiBe
 
Zuletzt bearbeitet:

Ähnliche Themen

Samba - Konfiguration

Ordner für einen User freigeben

chown/chmod crasht Dateisystem!?

Falsche Rechte gesetzt beim Anlegen von Ordnern via Samba-Client

Backup-Verzeichnisse freigeben

Zurück
Oben