Первая вещь, которую я попробовал бы, apt-get install ssh-askpass-gnome
иначе, если у Вас нет того пакета (или некоторая альтернатива askpass программа) установленный, затем гном не может предложить Вам Ваш пароль, когда необходимо разблокировать ключ.
У Вас должен будет также быть Ваш DISPLAY
переменный набор правильно:
$ echo $DISPLAY
:0.0
Кроме того, как Вы запускаете свой терминал? Могла быть проблема со способом, которым Вы запускаете терминальный сеанс и наследовалось ли это gnome-session
. Это может произойти при использовании некоторой программы gnon-гнома для установки привязок клавиш.
Предположение Вас использует gnome-terminal
можно проверить использование pstree
. Здесь Вы видите, что корректное наследование происходит:
$ pgrep gnome-terminal | xargs -l1 pstree -s
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───xmonad-x86_64-l(27139)───gnome-terminal(26036)─┬─bash(26041)
├─gnome-pty-helpe(+
├─{gnome-terminal}+
├─{gnome-terminal}+
└─{gnome-terminal}+
Принимая во внимание, что на этой сессии это НЕ наследовалось gnome-session
:
$ pgrep gnome-terminal | xargs -l1 pstree -s
init(1)───sh(25919)───gnome-terminal(25920)─┬─bash(25927)
├─gnome-pty-helpe(25926)
├─{gnome-terminal}(25921)
├─{gnome-terminal}(25924)
└─{gnome-terminal}(25928)
Кроме того, проверьте это ssh-agent
запускается gnome-session
:
$ pgrep ssh-agent | xargs -l1 pstree -s
init(1)───lightdm(1643)───lightdm(26912)───gnome-session(27049)───ssh-agent(27091)
Если
exit()
, sigreturn()
, read()
и write()
затем можно использовать seccomp (статья Wikipedia). Допускать больше, что просто те системные вызовы там seccomp-bpf, который использует Фильтр пакетов Беркли для определения который системные вызовы позволить. libseccomp библиотека упрощает seccomp-bpf так (например), если Вы хотели позволить close()
системный вызов:
seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(close), 0);
Или для чего-то подобного chroot
, но из которого нельзя убежать, Вы могли попробовать контейнеры Linux, OpenVZ или Linux VServer.
Ваш лучший выбор состоит в том, чтобы выполнить проблему как непривилегированного пользователя. Давание корректных полномочий к FIFO.
Это сказало, что у непривилегированного пользователя будет доступ ко всем файлам, которые будет иметь любой другой непривилегированный пользователь.
Сделать больше затем, что необходимо было бы серьезно изменить вещи в файловой системе. но:
chmod o-rwx/-R
Конечно, заблокирует вещи вниз. Но снова другие пользователи не смогут считать что-либо также.
Я предполагаю, что более важные вопросы спросить Ваш сам, "Почему мне нужно это ограничение?" Возможно, существует лучший способ получить Ваши цели?
chroot
не работает здесь также. Пользователь может играть в игры и "выровнять".
– slm♦
04.11.2013, 00:22
Процесс не может убежать из chroot, если Вы делаете правильно, вещи, а именно, выполняют процесс под его собственным идентификатором пользователя (т.е. не должно быть никакого процесса, работающего как тот же пользователь вне chroot).
Chroot процесс к каталогу, в который процесс не может записать и который только содержит FIFOs. Вы должны будете или поместить исполняемый файл и библиотеки и файлы данных, ему нужен в этом chroot, или иначе запустите процесс как корень, затем chroot и затем измените идентификатор пользователя.
Если Вы не можете включить корень, можно использовать пространство имен, но Вам нужно недавнее ядро для этого (≥3.8). Сначала создайте пользовательское пространство имен, затем в нем chroot и изменение в идентификаторе пользователя в пространстве имен с необходимым отсутствием полномочий.
С другой стороны, это может быть сделано (с сотрудничеством корня) через концепции безопасности, такие как SELinux или AppArmor: отключите весь связанный с файловой системой syscalls кроме open
, read
, write
, close
и lseek
, и ограничьте open
к каталогу, содержащему FIFOs. Обязательно отключите ptrace
также.
LD_PRELOAD
, но это может легко работаться вокруг злонамеренным процессом.)
– Gilles 'SO- stop being evil'
05.11.2013, 11:07
LD_PRELOAD
только вызовы библиотеки перенаправлений. Процесс может сделать системные вызовы непосредственно, это не будет затронуто. Это не должно даже быть злонамеренно (хотя на практике это действительно имеет тенденцию работать в большинстве незлонамеренных ситуаций): в особенности LD_PRELOAD
не имеет никакого эффекта на статически связанный двоичный файл.
– Gilles 'SO- stop being evil'
05.11.2013, 13:19
waitpid()
,time()
,alarm()
,pause()
,uname()
,mmap()
, и т.д.)? – haneefmubarak 04.11.2013, 03:53libseccomp
позволит указывать syscalls к ответу, и я отмечу его как корректный. Спасибо Matthew! – haneefmubarak 07.11.2013, 01:19