запущение программы, расположенной на моем компьютере на сервере

man credentials хороший источник информации в этом случае. См. также этот questiin на ТАК. Поскольку историческое объяснение видит это заархивированное сообщение.

Вместо того, чтобы звонить "устанавливает UID" и "эффективный UID" механизм, целое понятие UIDs нужно назвать этим. Объяснение для существования различного UIDs является различными проблемами с разделением полномочия. Даже постоянные (непривилегированные) пользователи иногда должны делать вещи (ресурсы доступа), что только привилегированные пользователи могут. Для достижения этого легко программы могут изменить свой UIDs. Существует 3 типа их:

  • реальный UID - UID, который владеет процессом

  • эффективный UID - UID, который процесс в настоящее время выполняет как - это определяет фактические возможности процесса в какой-то конкретный момент. Это также что ps шоу Вы в поле USER.

  • сохраненный устанавливает UID - заполнитель, используемый для переключения назад и вперед между реальным и эффективным UIDs

Потребность в последней возникает из факта, который обычные пользователи могут только переключить между этими тремя, и ничто иное и setuid программа обычно не должны знать так или иначе, кто был пользователем, который загрузился, это (плюс реальный UID не должен быть изменен, так как это создало бы еще большую путаницу).

3
02.10.2013, 16:07
2 ответа

Чтобы сервер выполнил двоичный файл ELF (как интерпретатор Python) в одном из его процессов, он должен смочь к mmap это в памяти. Это может только сделать это, если файл находится в виртуальной файловой системе и если файловая система, служащая ему, поддерживает его.

Так, необходимо или скопировать это python исполняемый файл (и его зависимости) через к серверу в одной из смонтированных файловых систем Вы имеете доступ для записи к или монтируете файловую систему Вашей машины монетного двора на сервере по своего рода сетевой файловой системе как sshfs, nfs или cifs.

Для монтирования файловой системы Вам нужны полномочия суперпользователя, или по крайней мере некоторые из тех полномочий нужно предоставить Вам (через некоторый suid исполняемый файл как fusermount). Администратор того сервера только допустил бы, что полномочие доверяемым пользователям, поскольку достаточно способно быть злоупотребленным и получить дальнейшее право.

Если бы Вы не можете смонтировать файловые системы, другая опция состояла бы в том, чтобы запустить программное обеспечение в эмулированной ОС как использование qemu. Вопрос, который я задал бы сначала, хотя: почему необходимо выполнить это на сервере? Какой ресурс сервера, к которому программа должна иметь доступ? Разве Вы не могли выставить те ресурсы своей машине монетного двора и запустить программное обеспечение туда вместо этого. Необходимо было бы сделать что-то как этот также, если бы программа должна была работать на VM на сервере.

Для запуска qemu VM на сервере как копия Вас чеканят машину, предполагая, что Вы используете LVM на машине монетного двора и что существует только одна файловая система (корневая файловая система) там на /dev/mint_VG/root, Вы могли сделать:

  • Возьмите снимок LVM /dev/mint_VG/root который станет корневой файловой системой VM на сервере:

    sudo lvcreate -s -L10G -n root_vm_on_server mint_VG/root
    
  • Экспортируйте его как сетевое блочное устройство:

    sudo nbd-server -C /dev/null 12345 /dev/mint_VG/root_vm_on_server
    
  • передайте свое ядро и изображения initrd к серверу:

    scp /boot/{vmlinux,initrd.img}-"$(uname -r)" server:
    
  • На сервере, выполненном qemu как (возможно, в screen или tmux):

    qemu -drive file=nbd:mint-machine:12345,if=virtio -m 4096 \
       -kernel vmlinuz-xxx -initrd initrd.img-xxx \
       -append 'root=/dev/vda ro init=/bin/bash' -monitor stdio -vnc :4 \
       -smp 8,core=8
    

(здесь работающий с 8 виртуальными центральными процессорами и 4 ГБ или RAM, и как запуск, просто работающий bash в VM).

Получите графическую консоль со средством просмотра VNC один server-machine:4, или Вы могли использовать последовательную консоль вместо этого, если Вам не нужна графика.

Если можно убедить системного администратора на сервере позволять Вам использовать kvm (дайте Вам доступ для записи к /dev/kvm), это сделает это намного более эффективным.

3
27.01.2020, 21:28
  • 1
    ресурс, в котором я нуждаюсь, является процессорным временем. Какой-либо способ выставить это? –  elyashiv 02.10.2013, 17:01
  • 2
    @elyashiv, затем выполняя VM на сервере, который монтирует снимок, например, Вашей машины монетного двора, работал бы. –  Stéphane Chazelas 02.10.2013, 19:24

Насколько я знаю, что это не может быть сделано без Корневого доступа :(

ОБОСНОВАНИЕ: БЕЗОПАСНОСТЬ: Каково было бы различие программы, работающей локально на сервере или другом компьютере под управлением программное обеспечение, расположенное на Вашем компьютере к серверу.

Если бы это могло бы быть сделано, это был бы ботнет.

Так как я СПУСКАЮСЬ проголосовавший: (Очень печальный, как быстро это происходит) Он желает, чтобы программа на его компьютере LinuxMint работала на сервере БЕЗ него устанавливающий программу на СЕРВЕРЕ. Как я могу запустить свои программы на моем локальном компьютере к другим серверам только с пользовательским доступом?

-1
27.01.2020, 21:28
  • 1
    У Него есть ssh доступ, он не врывается в свой собственный сервер. Корневой доступ совершенно определенно не требуется, простой пользовательский доступ достаточен. –  wingedsubmariner 02.10.2013, 16:15
  • 2
    Для запущения скрипта да, он может. Его конкретным вопросом была программа. Это, очевидно, не установлено на сервере. Это - "большая программа". Таким образом, как можно запустить программу на сервере, в который Вы являетесь ssh'ed, и тот сервер запустили программу? Или действительно ли я являюсь полностью пропавшим, что это - сценарий, для которого не нужно никакое повышение? –  mtelesha 02.10.2013, 22:42

Теги

Похожие вопросы