beep-1.2.1: 'ioctl: Operation not permitted'
Hallo, beep-1.2.1 (erhalten von freshmeet.net) ist nicht als user (non-root) ausführbar: Could not open /dev/console for writing. open: Permission denied Wenn ich dann /dev/console für user freigebe kommt: ioctl: Operation not permitted Wer kann mir Tipps geben, wo ich suchen könnte? thx Ekkard Zur Info: beep ermöglicht die Ausgabe von Tönen/ Melodien / (Sprache?) über den speaker, braucht also keine Soundkarte. Die Qualität ist nicht hoch, für Signalisierung (Warnungen, Hinweise, ..) aber völlig ausreichend.
Hi Ekkard,
From the keyboard of Ekkard,
Hallo,
beep-1.2.1 (erhalten von freshmeet.net) ist nicht als user (non-root) ausführbar:
Could not open /dev/console for writing. open: Permission denied
Wenn ich dann /dev/console für user freigebe kommt:
ioctl: Operation not permitted
ioctl ist ein Systemaufruf, der nur privilegierten Usern zur Verfügung steht, weil damit Hardwareparameter verändert werden.
Wer kann mir Tipps geben, wo ich suchen könnte?
Zeig mal die Ausgabe von strace, da wird mehr hilfreiche Debugging Info ausgegeben, die Zur Analyse nützlich ist. gruß Waldemar -- Are your questions smart enough? http://www.tuxedo.org/~esr/faqs/smart-questions.html If not: perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
Hallo, Am Mittwoch, 27. Februar 2002 09:23 schrieb Waldemar Brodkorb:
From the keyboard of Ekkard,
beep-1.2.1 (erhalten von freshmeet.net) ist nicht als user (non-root) ausführbar:
Could not open /dev/console for writing. open: Permission denied
ioctl ist ein Systemaufruf, der nur privilegierten Usern zur Verfügung steht, weil damit Hardwareparameter verändert werden.
Wer kann mir Tipps geben, wo ich suchen könnte?
Ich hab den Thread zwar nicht von Anfang an verfolgt, aber
ich erinnere mich, erst vor ein paar Tagen auf folgendes
Programm gestoßen zu sein. (Ich habe es aber selber nicht
ausprobiert.)
http://groups.google.de/groups?q=beep+duration+outb+ioperm+clumsy&hl=de&selm=959983362.7628.0.pluto.d4ee0662%40news.demon.nl&rnum=1
Gruß
Bertram
--
Bertram Scharpf
* Waldemar Brodkorb schrieb:
beep-1.2.1 (erhalten von freshmeet.net) ist nicht als user (non-root) ausführbar:
Could not open /dev/console for writing. open: Permission denied
Wenn ich dann /dev/console für user freigebe kommt:
ioctl: Operation not permitted
ioctl ist ein Systemaufruf, der nur privilegierten Usern zur Verfügung steht, weil damit Hardwareparameter verändert werden.
Zeig mal die Ausgabe von strace, da wird mehr hilfreiche Debugging Info ausgegeben, die Zur Analyse nützlich ist.
.. ah .. ja stimmt, habe daran nicht mehr gedacht: im Zustand der für user freigegebenen /dev/console: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ gerlach@rex:/usr/local/bin > /usr/local/bin/beep -f 2200 -l 500 ioctl: Operation not permitted gerlach@rex:/usr/local/bin > strace /usr/local/bin/beep -f 2200 -l 500 execve("/usr/local/bin/beep", ["/usr/local/bin/beep", "-f", "2200", "-l", "500"], [/* 47 vars */]) = 0 uname({sys="Linux", node="rex", ...}) = 0 brk(0) = 0x804a430 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=40526, ...}) = 0 old_mmap(NULL, 40526, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40017000 close(3) = 0 open("/lib/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\315\1"..., 1024) = 1024 fstat64(3, {st_mode=S_IFREG|0755, st_size=1343073, ...}) = 0 old_mmap(NULL, 1164516, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40021000 mprotect(0x40134000, 38116, PROT_NONE) = 0 old_mmap(0x40134000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x112000) = 0x40134000 old_mmap(0x4013a000, 13540, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4013a000 close(3) = 0 munmap(0x40017000, 40526) = 0 getpid() = 6027 brk(0) = 0x804a430 brk(0x804a460) = 0x804a460 brk(0x804b000) = 0x804b000 rt_sigaction(SIGINT, {0x8048850, [INT], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0 open("/dev/console", O_WRONLY) = 3 ioctl(3, KIOCSOUND, 0x21e) = -1 EPERM (Operation not permitted) write(2, "ioctl: Operation not permitted\n", 31ioctl: Operation not permitted ) = 31 nanosleep({0, 500000000}, NULL) = 0 ioctl(3, KIOCSOUND, 0) = -1 EPERM (Operation not permitted) close(3) = 0 _exit(0) = ? bei der Variante mit /dev/console mit owner root: rex:~ # ls /dev/console -l crw------- 1 root root 5, 1 Feb 28 10:16 /dev/console endet die strace Ausgabe früher: [...] open("/dev/console", O_WRONLY) = -1 EACCES (Permission denied) write(2, "Could not open /dev/console for "..., 41Could not open /dev/console for writing. ) = 41 write(2, "open: Permission denied\n", 24open: Permission denied ) = 24 _exit(1) = ? Ekkard
Hallo Ekkard,
From the keyboard of Ekkard,
* Waldemar Brodkorb schrieb:
beep-1.2.1 (erhalten von freshmeet.net) ist nicht als user (non-root) ausführbar:
Could not open /dev/console for writing. open: Permission denied
Wenn ich dann /dev/console für user freigebe kommt:
ioctl: Operation not permitted
ioctl ist ein Systemaufruf, der nur privilegierten Usern zur Verfügung steht, weil damit Hardwareparameter verändert werden.
Zeig mal die Ausgabe von strace, da wird mehr hilfreiche Debugging Info ausgegeben, die Zur Analyse nützlich ist.
.. ah .. ja stimmt, habe daran nicht mehr gedacht:
im Zustand der für user freigegebenen /dev/console: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gerlach@rex:/usr/local/bin > /usr/local/bin/beep -f 2200 -l 500 ioctl: Operation not permitted gerlach@rex:/usr/local/bin > strace /usr/local/bin/beep -f 2200 -l 500 execve("/usr/local/bin/beep", ["/usr/local/bin/beep", "-f", "2200", "-l", "500"], [/* 47 vars */]) = 0 uname({sys="Linux", node="rex", ...}) = 0 brk(0) = 0x804a430 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=40526, ...}) = 0 old_mmap(NULL, 40526, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40017000 close(3) = 0 open("/lib/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\315\1"..., 1024) = 1024 fstat64(3, {st_mode=S_IFREG|0755, st_size=1343073, ...}) = 0 old_mmap(NULL, 1164516, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40021000 mprotect(0x40134000, 38116, PROT_NONE) = 0 old_mmap(0x40134000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 0x112000) = 0x40134000 old_mmap(0x4013a000, 13540, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4013a000 close(3) = 0 munmap(0x40017000, 40526) = 0 getpid() = 6027 brk(0) = 0x804a430 brk(0x804a460) = 0x804a460 brk(0x804b000) = 0x804b000 rt_sigaction(SIGINT, {0x8048850, [INT], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0 open("/dev/console", O_WRONLY) = 3
Jetzt kann der Device Node /dev/console im WriteModus geöffnet werden.
ioctl(3, KIOCSOUND, 0x21e) = -1 EPERM (Operation not permitted)
Aber der Systemaufruf zur Veränderung der Eigenschaften schlägt fehl. (-1)
write(2, "ioctl: Operation not permitted\n", 31ioctl: Operation not permitted ) = 31 nanosleep({0, 500000000}, NULL) = 0 ioctl(3, KIOCSOUND, 0) = -1 EPERM (Operation not permitted)
Dann versucht er es nach einer kurzen Pause noch einmal. Du mußt dieses Programm mit der effektiven UID 0 ausführen. Entweder über sudo oder über SUID/SGID Bit. man 2 ioctl /usr/src/linux/include/linux/kd.h #define KIOCSOUND 0x4B2F /* start sound generation (0 for off) */ gruß Waldemar -- Are your questions smart enough? http://www.tuxedo.org/~esr/faqs/smart-questions.html If not: perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
participants (3)
-
Bertram Scharpf
-
Ekkard Gerlach
-
Waldemar Brodkorb