Как запустить VLC player в root


23

Я установил VLC в Centos 6,5. Я хочу запустить его как root. Но я получаю следующую ошибку,

«VLC не должен запускаться от имени пользователя root. Извините. Если вам нужно использовать приоритеты в реальном времени и / или привилегированные порты TCP, вы можете использовать vlc-wrapper (убедитесь, что это корень Set-UID и не может быть запущен не сначала доверенные пользователи)


13
Из любопытства, что может быть причиной для этого?
Курс

2
Так что пользуйся vlc-wrapperкак написано?
Кевин

3
Pro-tip: не делайте этого.
HalosGhost

1
Надеюсь, что это помогает вам. hackingzones.com/run-vlc-as-root-in-linux-ubuntu-pear-os Чираг Сингх
Чираг Hz

1
На некоторых уровнях ссылка, на которую ссылаются, является интересным хаком (используйте шестнадцатеричный редактор для замены getuidвызова getpid), поскольку исходный код доступен, более чистый подход состоит в том, чтобы отредактировать исходный код, чтобы полностью удалить тест, и перекомпилировать. В обоих случаях я бы рекомендовал не делать этого, но если вы хотите отстрелить ногу. , ,
Хильдред

Ответы:


51

Это то, что сработало для меня. Компиляция не требуется.

sed -i 's/geteuid/getppid/' /usr/bin/vlc

Использование VLC media player 2.0.3 Twoflower на Raspberry Pi.


3
Работал как шарм. :)
Кришнадас ПК

3
Да, это ад :) +1
onalbi

хахаха, исправляя это, чтобы проверить pid вместо uid, и это прекрасно работает. классный хак!
hanshenrik

1
Это прекрасно работало и на vlc 3.0.1
Офер Садан

У меня тоже сработало ...
Дэнни

17

Одним из способов решения этой проблемы является перекомпиляция. Передайте --enable-run-as-rootфлаг ./configureи vlc должен иметь возможность работать от имени пользователя root. Приведенный выше ответ отсюда .


2
перекомпиляция - не единственный способ, просто измените вызов на geteuid для доставки 1. Я описываю это на linuxintro.org/wiki/Run_vlc_as_root
Thorsten Staerk

@ThorstenStaerk, спасибо за предоставленную мне информацию.
Рамеш

Не могли бы вы отметить вопрос как ответ?
Торстен Стэрк

@ThorstenStaerk: мертвая ссылка ...
Александр Бурлье

1
@ Александр Бурлье: работает (снова)
Торстен Стерк

1

Смотрите http://www.linuxintro.org/wiki/Run_vlc_as_root :

  • резервное копирование двоичного файла VLC:

    # cp /usr/bin/vlc /usr/bin/vlc-backup
    
  • найти вызов geteuidвнутри двоичного файла VLC:

    # needle=$(objdump -d /usr/bin/vlc | grep euid | tail -1 | awk '{print "\\x"$2"\\x"$3"\\x"$4"\\x"$5"\\x"$6;}')
    
  • замените звонок, чтобы просто доставить 01:

    # sed -ir "s/$needle/\xb8\x01\x00\x00\x00/" /usr/bin/vlc
    
  • Попробуй это

VLC теперь должен работать под пользователем root!


1

Вы сможете запустить VLC как root, изменив бинарный файл VLC, расположенный в /usr/bin

Во-первых, вам понадобится шестнадцатеричный редактор, такой как Bless:

sudo apt-get install bless

Затем вы откроете бинарный файл VLC с помощью hex-редактора:

sudo bless /usr/bin/vlc

Поиск и изменение geteuidстроки getppid, сохранить и выйти.

Теперь вы можете запустить VLC как root.


0

VLC не должен запускаться от имени пользователя root. Сожалею. - Решение

В любом случае, я установил vlc, используя следующую команду;

# aptitude install vlc

И попытался запустить vlc как root, я получил ошибку на моем терминале;

# vlc

VLC не должен запускаться от имени пользователя root. Сожалею.

Если вам нужно использовать приоритеты в реальном времени и / или привилегированные порты TCP

Вы можете использовать vlc-обертку (убедитесь, что это корень Set-UID и

не может быть запущен ненадежными пользователями в первую очередь).

Эта ошибка говорит, что прямой vlc не может быть запущен как привилегированный пользователь root. Что делать сейчас? Не паникуй. Вот взломанное решение 😀

# vi /usr/bin/vlc

найти geteuidи заменить наgetppid

Сохранить файл и выйти.

Теперь это должно работать, попробуйте запустить его снова 😉

или

sed -i 's/geteuid/getppid/' /usr/bin/vlc

Одинаковое решение, которое дано в родвлопе, отвечает на 18 месяцев раньше!

0

Перейти, чтобы main menuнайти vlcи установить свойство как:

gksu -u vlc

или просто в терминальном типе

gksu -u <username(no root)> vlc

Например, если у вас есть abcпользователь, ваша команда будет:

gksu -u abc vlc

0

Кевин в комментариях к вопросу предложил использовать vlc-wrapper. У меня были проблемы с поиском, как его использовать, поэтому я опишу, как я это сделал:

вам нужно установить непривилегированного пользователя в SUDO_UID: export SUDO_UID = 1000

если у вас нет пользователя для запуска vlc при создании:

useradd -g users vlc
# this will show you the uid of vlc user
id -u vlc

если вы хотите постоянную переменную SUDO_UID, добавьте ее в bashrc:

echo "export SUDO_UID=1000" >> /root/.bashrc

будьте осторожны, чтобы не писать одиночные> вместо >>

тогда используйте vlc-обертку вместо vlc


-1
sed -i 's/geteuid/getppid/' /usr/bin/vlc

Оно работает.


2
Было бы хорошо, если бы вы могли объяснить, почему этот конкретный ответ решает проблему.
Джефф Шаллер

1
Одинаковое решение, которое дано в родвлопе, отвечает на 8 месяцев раньше!

1
-1 потому что это копия другого ответа на этой странице.
aggregate1166877

@Jeff Schaller Если geteuid возвращает 0, vlc знает, что это root. Однако getppid всегда будет возвращать ненулевой результат, и длина его имени обычно такая же, как и у geteuid. Таким образом, бинарный файл теперь связывает getppid вместо geteuid, а vlc никогда не понимает, что это root!
Джордж

1
@ Джордж Я знаю, что он делает; Я надеялся, что user149272 сможет улучшить свой ответ с объяснением.
Джефф Шаллер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.