| Linux/UNIX Linuxverfechter finden hier Weggefährten. |
Diskussion: /proc in BASH script bearbeiten im Forum Linux/UNIX, in der Kategorie Operating Systems; Anzeige Hi, ich möchte als unprivilegierter User in der Lage sein Bluetooth an / aus zu schalten. Dazu habe ich ...
![]() |
| | #1 (permalink) |
| Senior Member Registriert seit: 26.03.06 ![]() Likes: 16 | Anzeige Hi, ich möchte als unprivilegierter User in der Lage sein Bluetooth an / aus zu schalten. Dazu habe ich folgendes mini-script: /usr/bin/bluetoothctl Code: #!/bin/bash if [ "$1" = "on" ]; then echo "on" echo 1 > /sys/devices/platform/thinkpad_acpi/bluetooth_enable fi if [ "$1" = "off" ]; then echo "off" echo 0 > /sys/devices/platform/thinkpad_acpi/bluetooth_enable fi Code: mathias@apprentice:~$ ls -l /usr/bin/bluetoothctl -rwsr-xr-x 1 root root 222 2009-04-11 11:00 /usr/bin/bluetoothctl mathias@apprentice:~$ Code: mathias@apprentice:~$ id uid=1000(mathias) gid=1000(mathias) groups=20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev),111(netdev),116(powerdev),1000(mathias) mathias@apprentice:~$ bluetoothctl off off /usr/bin/bluetoothctl: line 10: /sys/devices/platform/thinkpad_acpi/bluetooth_enable: Permission denied mathias@apprentice:~$ cu serow |
| | |
| | #2 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Solange dein Skript nirgendwo root-Rechte annimmt, ist es logisch, dass du auch keine root-Rechte hast beim Ausführen der Befehle. Das SUID-Flag macht nur Sinn, wenn das damit versehene Programm auch setuid()-Aufrufe nutzt. Du wirst also um sudo nicht herum kommen, wenn es unbedingt ein Shell-Skript sein muss.
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Senior Member Themenstarter Registriert seit: 26.03.06 ![]() Likes: 16 | Es kann auch Perl sein. Wie mache ich das dann in Perl? Bin noch nicht lange mit Perl vertraut. Was sind setuid Aufrufe? cu serow |
| | |
| | #4 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | setuid()-Aufrufe sind Systemaufrufe zum Ändern der aktuellen UID. Damit ein Programm diesen Systemruf nutzen kann, muss es das setuid-Flag haben. Bei Perl kann man es mit dem sogenannten setuid-Perl machen. Ein Beispiel dazu hatte ich mal im Thread -> zu SUID <- gepostet.
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #5 (permalink) |
| Senior Member Themenstarter Registriert seit: 26.03.06 ![]() Likes: 16 | thx -läuft! |
| | |
| | #6 (permalink) | |
| Registriert seit: 12.04.09 ![]() Likes: 2 | Jetzt, wo das Problem erfolgreich gelöst wurde, kann ich mal nach herzenslust klugscheißen .Zitat:
Das erklärt aber noch nicht, warum Serow's Script nicht funktioniert. Eigentlich sollte es ja funktionieren, aber es wird ja nicht das Script ausgeführt, *sondern* der Interpreter (bash)! Und der ist _NICHT_ suid! (Wäre ja auch selten dämlich bash SUID-root zu haben...). Als Beispiel, um die Theorie ein bisschen greifbarer zu machen Code: $ id uid=1000 gid=1000 $ cat > id.sh <<EOF #!/bin/bash -p id EOF $ sudo chown root:root id.sh $ sudo chmod 4755 id.sh $ ./id.sh uid=1000 gid=1000 // Aha, SUID bei dem sript bringt nichts.. (wussten wir schon, aber egal...) // probieren wir was anderes: $ sudo chmod 4755 /bin/bash $ ./id.sh uid=1000 gid=1000 euid=0 // die effektive UID ist also 0, hmm, was könnten wir damit jetzt bloss alles machen.. // (dient nur zur Verdeutlichung , dass wir auch wirklich root-Privilegien haben) $ /bin/bash -p -c 'tail -1 /etc/shadow' tcpdump:!:14330:0:99999:7::: // wichtig! folgende zeile nicht vergessen... $ sudo chmod 755 /bin/bash grüße
__________________ Code: # define B f[a]
char f[2][26][82],i,j,a=0,c[]="_o",n;main(){B[3][3]=B[3][2]=B[3][1]=B[2][3]=B[1][2]=1;for
(;;){system("clear");for(i=1;i< 25;i++){for(j=1; j<81;j++){printf("%c",c[f[!a][i][j]]);n=B
[i-1][j-1]+B[i-1][j]+B[i-1][j+1]+B[i][j-1]+B[i][j+1]+B[i+1][j-1]+B[i+1][j]+B[i+1][j+1];f[!
a][i][j]=(!B[i][j]&&n==3) ||(B[i][j]&&n>1&&n<4);}puts("");}sleep(1);a=!a;}} | |
| | |
| | #7 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Und dann werfen wir mal einen Blick in die Quelltexte der Bash und was finden wir dort? Code: /* Is this shell running setuid? */
static int running_setuid;
...
running_setuid = uidget ();
...
if (running_setuid && privileged_mode == 0)
disable_priv_mode ();
...
setuid (current_user.uid);
setgid (current_user.gid);
... Edit: Im übrigen muss bei Serows Skript nicht der Interpreter mit root-Rechten laufen, sondern die echo-Befehle.
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
| | #8 (permalink) | ||
| Registriert seit: 12.04.09 ![]() Likes: 2 | Zitat:
Wie bereits erwähnt, droppt bash seine Privilegien, wenn nicht der "-p"-Switch übergeben wird. Das ist der einzige Grund, warum bash setuid(2) in seinem Code hat. Um seine Privilegein zu droppen. Nicht mehr und auch nicht weniger. grüße Edit: Zitat:
Code: /usr/bin/bluetoothctl: line 10: /sys/devices/platform/thinkpad_acpi/bluetooth_enable: Permission denied
__________________ Code: # define B f[a]
char f[2][26][82],i,j,a=0,c[]="_o",n;main(){B[3][3]=B[3][2]=B[3][1]=B[2][3]=B[1][2]=1;for
(;;){system("clear");for(i=1;i< 25;i++){for(j=1; j<81;j++){printf("%c",c[f[!a][i][j]]);n=B
[i-1][j-1]+B[i-1][j]+B[i-1][j+1]+B[i][j-1]+B[i][j+1]+B[i+1][j-1]+B[i+1][j]+B[i+1][j+1];f[!
a][i][j]=(!B[i][j]&&n==3) ||(B[i][j]&&n>1&&n<4);}puts("");}sleep(1);a=!a;}} | ||
| | |
| | #9 (permalink) |
| Moderator ![]() Registriert seit: 30.09.06 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 441 | Stimmt, hab das gerade mal mit einem Test-Programm ausprobierte. Da hast du wohl recht. Dieses Verhalten beim setuid-Flag war mir bisher so nie bewusst. Wieder ein Grund mehr, warum man Linux besser nur mit RBAC (oder garnicht) nutzen sollte.
__________________ Mein Blog - Mein Job - Diaspora Der Ring uns zu knechten besteht aus 12 Sternen auf blauem Grund. Neue Beiträge im Habo via Twitter - Das HaBo auf FB - Das HaBo bei G+ |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Hilfe bei Bash Script Anpassung | Serow | Linux/UNIX | 0 | 30.09.08 10:06 |
| [BASH] Im Script Benutzer wechseln | Eydeet | Code Kitchen | 4 | 08.04.08 17:37 |
| KeinZugriff auf /proc/acpi/wakeup | versus1 | Linux/UNIX | 4 | 15.06.07 15:54 |
| farbiger Akkustatus in Bash - Script | naked_chef | Linux/UNIX | 6 | 03.09.06 15:55 |
| Datei online bearbeiten oder ich brauche nen neues Script beantworten , zitieren , editieren | Sr01 | (Web-) Design und webbasierte Sprachen | 4 | 15.04.04 13:57 |