setuid in scripten - war: Re: [linux-l] Datum in Script verwenden

Frank Reker frank at reker.net
Do Apr 12 02:58:24 CEST 2007


Am Thu 12. Apr 2007 07:17 +1000 schrieb Peter Ross:

>On Wed, 11 Apr 2007, Frank Reker wrote:
>
>> das tut nicht not. lediglich das open wird vorgezogen. so dass beim
>> eigentlichen open-aufruf lediglich der filedescriptor der bereits
>> geoeffneten datei zurueckgegeben wird. dadurch erhaelt man die
>> gewuenschte atomaritaet.
>
>Dazu muesste jeder in Frage kommender Interpreter um diese Funktionalitaet 
>erweitert werden.

wieso dat denn? fuer den interpreter ist die sache transparent.
nochmal: 
- der kernel oeffnet die datei (muss er ja eh, um den script
  interpreter zu finden). 
- laesst die datei offen und cached den namen (pfad) des scripts. 
- ruft den interpreter auf und uebergibt den (gecachten) pfad.
- der interpreter (nachdem er was auch immer gemacht hat) 
  oeffnet das script - ruft also open (<pfad>, ...) auf.
- der kernel liesst den filedescriptor aus dem cache und
  liefert ihn an den interpreter zurueck. aus sicht des interpreters
  verhaelt sich der open also ganz normal (er liefert einen
  descriptor einer geoeffneten datei zurueck). 

>> ob eine datei veraenderbar ist oder nicht haengt von den zugriffsrechten
>> ab. genau wie bei jedem setuid-binary auch.
>
>Nein. Das Setuid-Binary kann nicht mehr veraendert werden, egal wie die 
>Zugriffrechte (BTW: auch die des Verzeichnisses sind zu beachten) sind. 

nein die verzeichnisse sind nicht zu beachten, da die datei bereits 
offen ist. 
ja, du hast recht, das binary kann nicht mehr veraendert werden. d.h. man
kann es zwar veraendern, aber das hat keine auswirkung auf die 
ausfuehrung. ich vergass das MAP_PRIVATE flag in mmap. 
man koennte selbiges auch fuer scripte machen (mmap mit MAP_PRIVATE)
und wenn der interpreter dann mmap't ist es bereits gemapt, wenn
er mit read liesst wird aus dem memory gelesen. ist aber recht aufwendig
zu implementieren und imho nicht wirklich noetig. denn der admin muss
nur dafuer sorgen, dass normale user keine schreibrechte auf der
datei haben, was aber normalerweise immer gegeben ist. ein loeschen,
umbenennen, verschieben, umlinken, ... hat auf die geoeffnete datei
keinen einfluss. lediglich ein write haette, und dafuer sind 
schreibrechte an der datei von noeten.



>Sicherheit funktioniert auch stufenweise, meist gibt es mehr als eine 
>Massnahme. Wenn man dann eine nach dem anderen aushebelt, steht man nackt 
>da (alle Unix-Systeme haben inzwischen sogar zusaetzliche Konzepte, um das 
>System vor dem "Ich bin root, ich darf das!" zu schuetzen).

das ist auch sinnvoll. aber dabei wird root (als unix-user) 
eingeschraenkt, nicht der admin als person. dieser kann immer noch
frei entscheiden wie er sein system aufsetzen will, und welche
sicherheitsmassnahmen er fuer oportun haelt und welche nicht.


>Hier uebrigens noch etwas Sicherheitsrelevantes aus der FreeBSD-Manpage, 
>speziell zum Oeffnen von Files:

ja, aber was hat das hiermit zu tun?



-- 
Don't worry be happy ...
Ciao Frank
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: nicht verfügbar
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20070412/cdbe97c7/attachment.sig>


Mehr Informationen über die Mailingliste linux-l