Scannererkennung nach Start des PC!
Hallo Linuxfriends, kann mir bitte jemand auf die Sprünge helfen, wie ich ein Skript schreibe, welches prüft ob der Scanner gefunden wurde und wenn er nicht gefunden wurde mittels echo -e "scsi add-single-device 0 0 1 0" > /proc/scsi/scsi den Scanner erkennt. Das ganze soll auch als User funktionieren und in den Kdelnk zum Start von Xsane integriert werden. Bitte um Tips? (Kernel 2.2.14, ag+Scsi-Controller fest im kernel, manueller Aufruf von echo ... als root funktioniert) Thanks -- MfG Waldemar Brodkorb Linux rulez! --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Waldemar Brodkorb schrieb am 22.04.2000 um 15:45:44 +0200: Hallo Waldemar,
kann mir bitte jemand auf die Sprünge helfen, wie ich ein Skript schreibe, welches prüft ob der Scanner gefunden wurde und wenn er nicht gefunden wurde mittels echo -e "scsi add-single-device 0 0 1 0" > /proc/scsi/scsi den Scanner erkennt.
Das prüfen kann man sich auch sparen. Auch wenn Du "echo -..." mehrmals aufrufst passiert nichts schlimmes. Der Scanner wird nur einmal gefunden. #!/bin/bash case "$1" in start) echo "scsi add-single-device 0 0 2 0" > /proc/scsi/scsi echo -e "\nScanner ein.\n" ;; stop) echo "scsi remove-single-device 0 0 2 0" > /proc/scsi/scsi echo -e "\nScanner aus.\n" ;; *) echo -e "\nscanner {start|stop}\n" ;; esac Das ganze liegt mit dem Dateinamen scanner unter /usr/local/bin. /etc/su1.priv erweitern. define SCANNER michael ernie alias scanstart /usr/local/bin/scanner start alias scanstop /usr/local/bin/scanner stop allow SCANNER prefix scanstart allow SCANNER prefix scanstop Um mit xsane arbeiten zu können habe ich mir eine Gruppe scanner angelegt, michael u. ernie in diese Gruppe eingetragen ein "chgrp scanner /dev/sg0" und ein "chmod 0660 /dev/sg0" gemacht (sg0 ist mein Sanner). Bis denne, Michael -- BH: Beavis - Just shut up and like free your mind or something. (Butthead) --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On 22-Apr-00 Waldemar Brodkorb wrote:
Hallo Linuxfriends,
kann mir bitte jemand auf die Sprünge helfen, wie ich ein Skript schreibe, welches prüft ob der Scanner gefunden wurde und wenn er nicht gefunden wurde mittels echo -e "scsi add-single-device 0 0 1 0" > /proc/scsi/scsi den Scanner erkennt.
Das ganze soll auch als User funktionieren und in den Kdelnk zum Start von Xsane integriert werden.
Bitte um Tips?
(Kernel 2.2.14, ag+Scsi-Controller fest im kernel, manueller Aufruf von echo ... als root funktioniert)
Leider ist das nicht so einfach, ein script mit setuid-bit zu versehen. Aber du kannst dir selbst helfen, indem du ein kleines wrap-programm schriebst, etwa der Art: #include <unistd.h> int main (int argc, char **argv) { execv (argv[1], &argv[2]); } Das ganze compilierst du und setzt das setuid-bit (mode 4755) auf das binary, nachdem du es mit chown auf root:root gesetzt hast. Ein skript könnte dann in etwa so aussehen: #!/bin/bash if grep <Wieauchimmerdeinscannersichmeldet> /proc/scsi/scsi # scanner gefunden, ok # kannst irgendwas informatives ausgeben ... else a.out echo "..." >/proc/scsi/scsi fi Optional kannst du auch in der man-page zu sudo suchen, vielleicht findest du dort was wie man sich das kompilieren sparen kann Frohe Ostern Alex ---------------------------------- E-Mail: Alexander Puchmayr <alexander.puchmayr@jk.uni-linz.ac.at> Date: 22-Apr-00 Time: 19:46:17 This message was sent by XFMail ---------------------------------- --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Alexander Puchmayr schrieb in 1,7K (63 Zeilen):
Leider ist das nicht so einfach, ein script mit setuid-bit zu versehen.
Weil es naemlich unsicher ist (der Angreifer kann den Code im Speicher kurz vor der Ausfuehrung aendern, IIRC --> Rootshell!)
Aber du kannst dir selbst helfen, indem du ein kleines wrap-programm schriebst, etwa der Art:
#include <unistd.h> int main (int argc, char **argv) { execv (argv[1], &argv[2]); }
Warum nicht *gleich* root ohne Passwort? Das ist vorsaetzlich unfaehig! Das kann man schon nicht mehr grob fahrlaessig nennen! Wenn, dann sind in dem Wrapper vollstaendige Pfade zu hardcoden. Also /usr/local/sbin/programmname. Und der Wrapper muss alle Parameter pruefen, kuerzen, waschen, testen, reinigen und buegeln. Oder sie hardgecoded eingebaut haben und nix annehmen. Und es gibt sudo. Und su1. Und suidperl (muss auf suid gesetzt werden --> /etc/permissions.local), und "#! /usr/bin/perl -Tw" nicht vergessen.
Optional kannst du auch in der man-page zu sudo suchen, vielleicht
Sag ich doch! -Wolfgang --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
participants (4)
-
alexander.puchmayr@jk.uni-linz.ac.at
-
linux@netcologne.de
-
micha28@gmx.de
-
weissel@netcologne.de