Linux Dateirechte script ausführen

Gast #4484049
Lesenswert?
• ▲
▼
Hallo, ich habe auf dem pi ein bashscript erstell und es auch ausführbar 
gemacht.

Ich möchte das die Gruppe und der rest der Welt das Scrpit ausführen 
können, jedoch nicht einsehen dürfen.

darum habe ich folgende Rechte vergeben

-rwx--x--x  1 pi mygroup 44 Feb 26 08:24 test.sh

Warum kann der user www-data das script jetzt nicht ausführen ???
#4484213
Lesenswert?
• ▲
▼
Philipp_K59 schrieb:
> Du könntest ein Einzeiler Script das das geheime Script startet
> schreiben und komplett zugriff geben.. da kann man dann höchstens den
> Dateinamen rausfinden.

Fast. Das aufrufende Script müsste den selben User wie das aufgerufene 
Script haben + das SUID Bit muss gesetzt sein. 
https://en.wikipedia.org/wiki/Setuid

Allerdings funktioniert das SUID Bit für Scripts nicht mehr auf 
aktuellen *NIX Systemen (Sicherheitsrisiko). Man müßte also ein Binary 
dafür kompilieren.

Beispiel:
1
prompt> cat > hello.sh <<EOF
2
#!/bin/bash
3
echo "hello world!"
4
EOF
5
prompt> chmod +x hello.sh
6
prompt> ./hello.sh
7
hello world!
8
prompt> sudo chown root hello.sh
9
prompt> sudo chmod 711 hello.sh 
10
prompt> ./hello.sh 
11
/bin/bash: ./hello.sh: Permission denied
Root dient hier lediglich als (gefährliches) Beispiel.

Anyway, C source to invoke hello.sh:
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <unistd.h>
4
int main()
5
{
6
  int error = setuid(geteuid()) ;
7
  if (error) {
8
    perror("setuid() failed") ;
9
    exit(1) ;
10
  }
11
  error = execl("./hello.sh","./hello.sh",NULL) ;
12
  if (error) {
13
    perror("exec() failed") ;
14
    exit(1) ;
15
  }
16
  return 0 ;
17
}

Compilieren und Rechte setzen:
1
prompt> gcc -Wall invoke.c -o invoke
2
prompt> ./invoke
3
/bin/bash: ./hello.sh: Permission denied
4
prompt> sudo chown root invoke
5
prompt> ./invoke
6
/bin/bash: ./hello.sh: Permission denied
7
prompt> sudo chmod 4755 invoke
8
prompt> ./invoke
9
hello world!

Die Maske ist 6755 für Set-User+Group-ID (siehe chmod).

Note: SUID Programme stellen immer ein potentielles Sicherheitsrisiko 
dar.

Edit: prompt names
#4484532
Lesenswert?
• ▲
▼
Jay schrieb:
> Dafür kompiliere ich mir doch kein Binary. Dafür konfiguriere ich mir
> sudo.

Interessant. Das wäre dann natürlich besser.

Kannst du mal ein Beispiel zeigen wie ein Benutzer die Freigabe für eine 
Datei konfiguriert? Habe ich auf Anhieb nicht gefunden.

Achja, ohne Root Rechte. Root hatte ich ja nur genommen, weil das im 
Beispiel leicht nachvollziehbar ist.
#4484554
Lesenswert?
• ▲
▼
Mikro 7. schrieb:
> Jay schrieb:
>> Dafür kompiliere ich mir doch kein Binary. Dafür konfiguriere ich mir
>> sudo.
>
> Interessant. Das wäre dann natürlich besser.
>
> Kannst du mal ein Beispiel zeigen wie ein Benutzer die Freigabe für eine
> Datei konfiguriert? Habe ich auf Anhieb nicht gefunden.
>
> Achja, ohne Root Rechte. Root hatte ich ja nur genommen, weil das im
> Beispiel leicht nachvollziehbar ist.

Dann verstehe ich nicht was du zu schützen versuchst...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.