setuid, Dateiattribute

Hinweis: In dem Thema setuid, Dateiattribute gibt es 4 Antworten. Der letzte Beitrag () befindet sich ganz unten auf dieser Seite.
  • Hallo,


    ich lerne bash, wieder, und wieder… Heute versuche ich mit 'setuid' zu spielen, aber es funktioniert mit einem Bash-Script nicht wie erwartet.


    Attribute meines mein Bash-Script enthaltenden Ordners:

    Code
    thierry@toto-PC:~/Documents/Informatik> ll -d ../Informatik/
    drwxr-xr-x 2 thierry users 4096  7 déc.  09:33 ../Informatik/

    Attribute des Bash-Scripts 'SETUID_prog':

    Code
    thierry@toto-PC:~/Documents/Informatik> ll SETUID_prog
    -rwsr--r-- 1 root root 189  7 déc.  10:15 SETUID_prog

    Das Script:

    Code
    thierry@toto-PC:~/Documents/Informatik> cat SETUID_prog
    #!/bin/bash
    
    
    # Verwendung von 'SETUID', Dateiattribute…
    echo "Geben Sie eine Zahl ein:"
    read zahl
    echo $zahl > zahl.txt
    echo "Die Zahl ist $zahl und ist in der Datei zahl.txt gespeichert"


    Das Drama:

    Code
    thierry@toto-PC:~/Documents/Informatik> ./SETUID_prog
    bash: ./SETUID_prog: Permission non accordée    (keine Erlaubnis…)




    Warum darf ich das Script nicht ausführen, obwohl die Dateiattribute vom Script '-rwsr--r-- 1 root root …' sind ?

    Gibt es eine Sicherheit, um meine gefährlichen Taten zu vermeiden ?


    Danke für Ihre Hilfe,

    Thierry. :)

    Für den Inhalt des Beitrages 286011 haftet ausdrücklich der jeweilige Autor: denebe

  • Attribute des Bash-Scripts 'SETUID_prog':

    Code
    thierry@toto-PC:~/Documents/Informatik> ll SETUID_prog
    -rwsr--r-- 1 root root 189  7 déc.  10:15 SETUID_prog


    Warum darf ich das Script nicht ausführen, obwohl die Dateiattribute vom Script '-rwsr--r-- 1 root root …' sind ?

    So wie ich diesen Befehl verstehe, würde der Benutzer zwar das Script mit root-Privilegien ausführen dürfen, aber er muss doch selbst auch berechtigt sein.

    Und das "x" für "other" fehlt noch.

    Solange der Benutzer aber gar keine Ausführungsrechte hat ...

  • Danke für deine Antwort.

    Ich denke, das Programm dürfte theoretisch dank dem Setuid-Bit, also dem kleinen 's' ausgeführt werden. Es geht hier um zusätzliche Attribute: setuid, setgid und den sticky bit.

    Wird das Attribut 'x' für andere gelegt, dürfen andere, darunter thierry, SETUID_prog ausführen. Das weiß ich schon.

    Für den Inhalt des Beitrages 286013 haftet ausdrücklich der jeweilige Autor: denebe

  • Der Grund dafür ist die Sicherheit. Der setuid-bit sowie setgid wirken sich nicht mehr auf ein Script aus.

    Zitat

    The setuid/gid-bit became ignored on many systems for security reasons.


    Wiki:

    The setuid and setgid flags only have effect on binary executable files. Setting these bits on scripts like bash, perl or python does not have any effect.

    Due to potential security issues,[4] many operating systems ignore the setuid attribute when applied to executable shell scripts.



    Hier ist zu lesen:

    https://unix.stackexchange.com…w-setuid-on-shell-scripts

    https://www.in-ulm.de/~mascheck/various/shebang/

    https://superuser.com/question…id-and-setgid-not-working

    Für den Inhalt des Beitrages 286014 haftet ausdrücklich der jeweilige Autor: denebe