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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren