Я смог заставить это работать на моей машине, но я не уверен, что sudoers
опция requiretty
сломает ее.
На машине B создайте программу, которую sudo
будет использовать для запроса паролей.
Например, /home/myname/askpass.sh
, chmod
it +x
#!/bin/bash
echo "my_password"
На машине A создайте скрипт подключения, который будет устанавливать ssh-соединение для scp
и вводить sudo
+ связанные команды в удаленную команду.
Например, назовите его ./fakessh.sh
, chmod
его +x
#!/bin/bash
oldargs=( $@ )
newargs=( )
while : ; do
[ "${oldargs[0]}" == "scp" ] && break
newargs+=( "${oldargs[0]}" )
oldargs=( "${oldargs[@]:1}" )
done
newargs+=( 'export SUDO_ASKPASS=/home/myname/askpass.sh' \; exec sudo -A -- "${oldargs[@]}" )
exec ssh "${newargs[@]}"
Обратите внимание, что скрипт выше ссылается на /home/myname/askpass.sh
, обновите путь по необходимости.
Теперь запустите scp
почти нормально:
scp -S ./fakessh.sh user@hostname:/etc/shadow ./
Это работает для меня. YMMV.
Я могу придумать другие хаки, если вы можете запустить что-то вроде ncat
или socat
с sudo
, и указать scp
на пользовательский порт прослушивания, но это становится глупостью с точки зрения безопасности.
libinput
Драйвер evdev
из ответа dirkt поддерживает только эмуляцию вертикальной прокрутки. Если вы (, как и я ), также хотите использовать горизонтальную прокрутку, для этого можно использовать драйвер libinput
:
Подробная информация находится на справочной странице для libinput(4)
:
Option "ScrollButton" "int"
Designates a button as scroll button. If the ScrollMethod is button and the button is logically held down, x/y axis movement is converted into scroll events.
Option "ScrollMethod" "string"
Enables a scroll method. Permitted values are none, twofinger, edge, button. Not all devices support all options, if an option is unsupported, the default scroll option for this device is used
Например:
Section "InputClass"
Identifier "Some Trackball"
#... Stuff to match your trackball, see xorg.conf(5)
Driver "libinput"
Option "ScrollMethod" "button"
Option "ScrollButton" "4" # Or whatever button suits your needs
EndSection