Очень низкий уровень, который Вы запрашиваете, является машинным языком. Это высоко зависит от типа процессора. Если бы Вы не планируете сделать прямой машинный язык, программируя yourselv, я не рекомендовал бы провести исследование на том косвенном уровне.
Кроме этого технология CPU изменяется быстро - слишком быстро, чтобы идти в ногу, если это не Ваше базовое задание.
ПО МОЕМУ СКРОМНОМУ МНЕНИЮ, strace
уровень достаточно глубок для понимания то, что продолжается на уровне ОС.
Если Вы хотите знать то, что продолжается - роют в исходный код функций, что Вы видите быть названным там.
В зависимости от того, как был настроен sudo, он может перезаписать большинство переменных среды. В частности, вероятно, что это перезаписывает SSH_AUTH_SOCK
, и это могло бы перезаписать HOME
. Это не что-то, что можно зафиксировать, не изменяя sudo конфигурацию.
Вы видите sudo конфигурацию (и в особенности какие переменные среды сохраняются) путем выполнения sudo -V
как корень. Это - функция, что Вы не видите конфигурацию как непривилегированный пользователь.
Возможно, что Ваш системный администратор заблокировал вниз Ваши sudo полномочия так, чтобы сценарий не мог использовать Ваши ssh ключи. Это могло быть политикой безопасности, и если она реализована правильно, затем по определению Вы не можете зафиксировать ее собой, Вам будет нужен Ваш системный администратор для изменения конфигурации.
Трудно знать то, что необходимо, не зная то, что делает сценарий и какова sudo конфигурация. Возможно, a sudoers
строка как следующее могла бы помочь (это говорит sudo сохранять SSH_AUTH_SOCK
переменная среды, если команда для выполнения /path/to/script
):
Defaults!/path/to/script env_keep+=SSH_AUTH_SOCK
Если сценарий работает как пользователь, который не является ни Вами, ни корнем, необходимо будет дать те полномочия пользователя считать ключи или получить доступ агенту.
Две вещи приходят на ум. Во-первых, отредактируйте сценарий так, чтобы только команды, для которых нужны поднятые полномочия, были выполнены с sudo
. Это должно позволить Вашему соединению SSH работать. Это имеет преимущество выполнения с поднятыми полномочиями только те команды, для которых нужно оно. Выполните команду без sudo
на командной строке, полагаясь на факт sudo
вызовы в сценарии сделают правильную вещь.
Во-вторых, отредактируйте сценарий так, чтобы он явно определил имя пользователя для соединения как. Можно использовать $SUDO_USER
переменная, которая содержит имя пользователя пользователя, который запустил ток sudo
сессия. Это должно добиться цели:
ssh "${SUDO_USER}@remotehost.example.com"
-i ${SUDO_USER}/.ssh/id_rsa
или безотносительно в ssh-options
установка?
– D_Bye
06.10.2012, 02:04
Идентификатор пользователя будет всегда изменяться с sudo, но можно сохранить среду с-E параметром.
sudo: sorry, you are not allowed to preserve the environment
когда я пробую это. Возможно, получение их изменить ту конфигурацию решило бы проблему...?
– iconoclast
05.10.2012, 22:00