Am 14.11.2013 19:34, schrieb David Haller:
Hallo,
Am Thu, 14 Nov 2013, Joerg Thuemmler schrieb:
komme erst jetzt zum Testen:
# cat /sys/kernel/fscaps cat: /sys/kernel/fscaps: No such file or directory
Hmm...
# uname -r 3.7.10-042stab081.5 (kann ein bei unserem Provider selbsterstellter Kernel sein)
Schaut so aus ;)
# egrep 'clear_before_exec|pause_after_run' ~/.config/mc/ini pause_after_run=1 clear_before_exec=1
(die Configs für den MC liegen wohl seit 12.xxx in .config/mc,
Stimmt.
[..]
Irgendwas passt mit den Rechten nicht, denke ich, verstehe es aber nicht so recht.
Ich das hier in der FAQ gefunden, könnte davon was zutreffen?
6.6 When I use Ctrl-O I don't get a subshell. How do I fix this?
Only bash, tcsh and zsh can be used as subshell. Use one of those shells as your default shell, and it will be used as subshell in GNU Midnight Commander.
6.7 Ctrl-O doesn't work at all. What happens?
Ctrl-O works if either the subshell is used or the terminal can save the output of the commands so it can be restored. If neither is true, there is absolutely nothing interesting behind the panels!
Only few terminals support screen saving. It's xterm, rxvt and other xterm-like terminals and virtual terminals on Linux and FreeBSD.
-dnh
Hi, nach ewiger Zeit komme ich mal wieder dazu, mich diesem "Randproblems" zu widmen. Ich habe zunächst spaßeshalber mal mc setuid gesetzt - erwartungsgemäß klappt es dann mit der Subshell auch für den user. Logisch, dass das nur ein Test bleibt... Dann habe ich mal strace bemüht und es gibt durchaus Unterschiede: [als root] t_sigaction(SIGINT, {SIG_IGN, [], SA_RESTORER, 0x7f1e2256f1f0}, NULL, 8) = 0 select(5, [3 4], NULL, NULL, NULL) = 1 (in [3]) select(4, [3], NULL, NULL, {10, 0}) = 1 (in [3], left {9, 999998}) read(3, "\17", 1) = 1 ioctl(0, TIOCLINUX, 0x7fff1e2cc948) = -1 EINVAL (Invalid argument) write(1, "\33[?1015l\33[?1002l\33[?1001r", 24) = 24 write(1, "\33[1;1H\33[K\n\33[K\n\33[K\n\33[K\n\33[K\n\33[K\n\33["..., 104) = 104 rt_sigprocmask(SIG_BLOCK, [INT QUIT TSTP TTIN TTOU WINCH], [], 8) = 0 write(1, "\33[?1l\33>\33[23;1H\33(B\33[m\33[39;49m\r\33[K"..., 41) = 41 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 write(1, "\33[?47l\0338\33[m", 11) = 11 ioctl(3, SNDCTL_TMR_START or SNDRV_TIMER_IOCTL_TREAD or TCSETS, {B38400 -opost isig -icanon -echo ...}) = 0 ioctl(1, SNDCTL_TMR_START or SNDRV_TIMER_IOCTL_TREAD or TCSETS, {B38400 -opost -isig -icanon -echo ...}) = 0 write(1, "\r\n", 2) = 2 write(1, "vs644:/etc/mc # ", 16) = 16 write(4, " \10", 2) = 2 select(7, [0 4 6], NULL, NULL, NULL) = 1 (in [4]) read(4, " \10 \10", 128) = 4 write(1, " \10 \10", 4) = 4 [als user] rt_sigaction(SIGINT, {SIG_IGN, [], SA_RESTORER, 0x7fd98da5f1f0}, NULL, 8) = 0 select(4, [3], NULL, NULL, NULL) = 1 (in [3]) select(4, [3], NULL, NULL, {10, 0}) = 1 (in [3], left {9, 999997}) read(3, "\17", 1) = 1 ioctl(0, TIOCLINUX, 0x7fff214480d8) = -1 EINVAL (Invalid argument) write(1, "\33[?1015l\33[?1002l\33[?1001r", 24) = 24 write(1, "\33[1;1H\33[39m\33[49m\33[K\n\33[K\n\33[K\n\33[K\n"..., 114) = 114 rt_sigprocmask(SIG_BLOCK, [INT QUIT TSTP TTIN TTOU WINCH], [], 8) = 0 write(1, "\33[?1l\33>\33[23;1H\33(B\33[m\33[39;49m\r\33[K"..., 41) = 41 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 write(1, "\33[?47l\0338\33[m", 11) = 11 ioctl(3, SNDCTL_TMR_START or SNDRV_TIMER_IOCTL_TREAD or TCSETS, {B38400 -opost isig -icanon -echo ...}) = 0 select(4, [3], NULL, NULL, {10, 0}) = 1 (in [3], left {6, 199845}) read(3, "\r", 1) = 1 ioctl(0, TIOCLINUX, 0x7fff214480e8) = -1 EINVAL (Invalid argument) write(1, "\0337\33[?47h", 8) = 8 ioctl(3, SNDCTL_TMR_START or SNDRV_TIMER_IOCTL_TREAD or TCSETS, {B38400 -opost isig -icanon -echo ...}) = 0 rt_sigprocmask(SIG_BLOCK, [INT QUIT TSTP TTIN TTOU WINCH], [], 8) = 0 wenn ich das recht verstehe, versucht der mc als user gar nicht erst, irgendeine Subshell zu benutzen, er wechselt in den CTRL-O-Hintergrund und wartet auf ein Zeichen, um dann wieder in den Vordergrund zu wechseln. Im root-Modus gibt er zunächst den Prompt aus und liest dann eine ganze Zeile. Weiter vorn im Initialisierungsbereich gibt es i.W. einen Unterschied, als user schlägt chown("/dev/pts/5", 26, 5) = -1 EPERM (Operation not permitted) close(4) = 0 write(2, "Cannot open master side of pty: "..., 69) = 69 fehl, mangels /dev/pts/5, dafür schlägt wohl noch weiter vorn stat("/dev/pts/5", {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 5), ...}) = 0 fehl, während root mit stat("/dev/pts/4", {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 4), ...}) = 0 ein /dev/pts/4 anlegt. Auf meinem lokalen System (11.4 evergreen mit mc 4.7.5.1) legt der gleiche makedev als user korrekt ein /dev/pts/... an. Leider sehe ich nicht, wer das auf der 12.3er Maschine verhindert. Die Subshell selbst funktioniert anscheinend, denn wenn ich (ohne ctrl-o) ein ls eingebe, kann ich mit ctrl-o das Ergebnis sehen. Sicher ein Sicherheitsfeature... aber welches? (Apparmor ist übrigens abgeschaltet...) Thx für jeden Tipp cu jth -- www.teddylinx.de -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org