* 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