LINUX.ORG.RU
ФорумAdmin

LXD и /dev/stdout: Permission denied

 , ,


1

1

Шаббат шалом, джентльмены.

Есть хост c ZFS на борту, на нём сконфижен LXD:

lxc info

Если зайти на контейнер на этом хосте и попробовать записать что-нибудь в /dev/stdout, то получаю Permission denied, если просто вывести что-нибудь командой echo, то символы выводятся:

user@lxd_host:~$ sudo lxc exec test-container -- sudo -i -u developer
developer@test-container:~$

developer@test-container:~$ echo 'hi' > /dev/stdout
-bash: /dev/stdout: Permission denied
developer@test-container:~$ echo 'hi'
hi
developer@test-conteiner:~$ logout
user@lxd_host:~$ sudo lxc exec test-container -- echo 'hi' >/dev/stdout
hi
user@lxd_host:~$

При чём:

developer@test-container:~$ ls -l /dev/stdout
lrwxrwxrwx 1 root root 15 Nov  6 19:17 /dev/stdout -> /proc/self/fd/1

developer@test-container:~$ ls -l /proc/self/fd/1
lrwx------ 1 developer developer 64 Nov  7 10:01 /proc/self/fd/1 -> /dev/pts/44

developer@test-container:~$ file /dev/pts/44
/dev/pts/44: cannot open `/dev/pts/44' (No such file or directory)

Проблема заключается в том, что есть несколько скриптов, которые должны запускаться по systemd таймеру. В этих скриптах есть строки «echo „something“ >/dev/stdout

Как это можно вылечить?

Дополнительная инфа:

sudo lxc config show test-container --expanded

cat /var/log/lxd/test-container/lxc.conf

cat /var/lib/lxd/security/apparmor/profiles/lxd-test-container

Буду признателен за помощь. Всем хорошего настроения :]

Контейнеры и LXD тут не причём, тоже самое будет на любом хосте.

Ты зашёл в контейнер под root и под ним создался pty, дальше ты переключился на пользователя, а pty остался root, у пользователя нет прав на запись в него.

В этих скриптах есть строки «echo „something“ >/dev/stdout

И куда по мнению автора скрипта это должно выводиться? Почему нельзя просто вывести в stdout: echo «something», зачем редирект?

anonymous ()