root owner für gebaute Dateien

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • root owner für gebaute Dateien

    Ich habe da mal wieder eine von meinen Fragen...

    Leider müssen einige meiner Output-Dateien als Owner "root" haben (ADC Mitglieder wissen vielleicht warum ;) ). Für das fertige Produkt mache ich das mit dem Installer, aber zum Debugging muss ich leider vor jedem bauen den Owner wieder zurücksetzen, und nach jedem bauen den Owner auf root setzen.

    Aber für solch stupide Aufgaben haben wir doch eigentlich Computer... es gibt also zwei Fragen:

    1) Wie verpasse ich meinen fertigen Dateien den root owner? Und ja, das muss wirklich sein. Aus der Apple Doku:
    All [these files] must be owned by root.

    Ich dachte da an eine shell script phase, aber es ist mit nicht gelungen, und bash ein Script durch setuid mit root rechten laufen zu lassen:

    Quellcode

    1. localhost:~/bin below$ cat whothehellareyou
    2. #!/bin/sh
    3. echo "Who the hell are you? I am:"
    4. id
    5. localhost:~/bin below$ ls -l
    6. total 8
    7. -rwSr-x--- 1 root below 42 Feb 3 03:03 whothehellareyou
    8. localhost:~/bin below$ ./whothehellareyou
    9. Who the hell are you? I am:
    10. uid=501(below) gid=501(below) groups=501(below), 80(admin)


    Mache ich hier irgendwas falsch, oder kann ich shellscripts gar nicht setuid'en?
    Mir ist auch vollkommen klar, das ein solches Script potentiell ein Sicherheitsrisiko ist. Darüber möchte ich aber erst diskutieren, wenn es läuft. ;)

    2) Wie ermögliche ich es Xcode, die Dateien nachher wieder zu überschreiben? Ich habe versucht dem Target g+w mit auf den Weg zu geben, aber die fertigen Permissions sind irgendwie immer -r-xr-xr-x.
    Selbst wenn ich "händisch" chmod -R g+w nachtrage will Xcode die Dateien (wenn der owner "root" ist) nicht ersetzen.

    Vielen Dank für Tips!

    Alex
    The only thing that really worried me was the ether.
  • RE: root owner für gebaute Dateien

    Hallo Alex,

    1) Funktioniert bei mir einwandfrei (10.3.7)

    Quellcode

    1. Baghira:~ chris$ ls -l whothehellareyou
    2. -rwSr-x--- 1 root chris 67 3 Feb 12:10 whothehellareyou
    3. Baghira:~ chris$ cat whothehellareyou
    4. #!/bin/sh
    5. echo "Who the hell are you? I am:"
    6. id
    7. chown root ~/test
    8. Baghira:~ chris$ touch test
    9. Baghira:~ chris$ ls -l test
    10. -rw-r--r-- 1 chris chris 0 3 Feb 12:12 test
    11. Baghira:~ chris$ ./whothehellareyou
    12. Who the hell are you? I am:
    13. uid=502(chris) euid=0(root) gid=502(chris) groups=502(chris)
    14. Baghira:~ chris$ ls -l test
    15. -rw-r--r-- 1 root chris 0 3 Feb 12:12 test
    16. Baghira:~ chris$
    Alles anzeigen


    2) vielleicht hilft ein symbolischer Link
    Für Kexte hab ich mir mal ein script gemacht, dass compiliert, kopiert und lädt.

    Chris
    Man macht einfach solange irgendwelche Dinge, bis man tot ist.
    Und dann bekommen die anderen Kuchen.
  • * haut sich auf den Hinterkopf *

    Danke für's ausprobieren! Ich habe das gerade auch mal auf 10.3.7 gemacht, und siehe da:

    Quellcode

    1. iMac % ./whothehellareyou ~
    2. Who the hell are you? I am:
    3. uid=503(below) euid=0(root) gid=20(staff) groups=20(staff), 0(wheel), 80(admin)


    Sieht nach einem Bugreport aus...

    Leider müssen diese Dateien auch im Moment im Bundle selbst sein. Theoretisch könnten sie auch in /System/Library liegen (und dann ginge wahrscheinlich auch ein Symlink), das ist aber ein "known bug" und funktioniert eben nicht.

    Danke, ich schaue mal was ich da machen kann...

    Gruss

    Alex
    The only thing that really worried me was the ether.
  • RE: root owner für gebaute Dateien

    Original von below
    2) Wie ermögliche ich es Xcode, die Dateien nachher wieder zu überschreiben? Ich habe versucht dem Target g+w mit auf den Weg zu geben, aber die fertigen Permissions sind irgendwie immer -r-xr-xr-x.
    Selbst wenn ich "händisch" chmod -R g+w nachtrage will Xcode die Dateien (wenn der owner "root" ist) nicht ersetzen.


    Dumme Idee: Wenn die SUID-Sache klappt, warum dann nicht eine zweite Shell-Script-Phase ganz am Anfang, die die Dateien wieder auf normal chownt? Oder statt den build-Ordner zu chownen eine Kopie anlegen, die Kopie auf root setzen und in XCode den Executable Path auf die Kopie umbiegen? Nur so 'ne Idee...
    Multigrad - 360°-Produktfotografie für den Mac