如何在根目录下运行VLC播放器


23

我已经在centos 6.5中安装了vlc。我想以根用户身份运行它。但是我收到以下错误,

“ VLC不应以root用户身份运行。很抱歉。如果您需要使用实时优先级和/或特权TCP端口,则可以使用vlc-wrapper(确保它是Set-UID root,并且不能由非root用户运行。首先信任用户)。”


13
出于好奇,这样做的原因是什么?
kursus 2014年

2
所以使用vlc-wrapper像它说的吗?
凯文

3
专家提示:请勿这样做。
HalosGhost 2014年

1
希望这可以帮助你。hackingzones.com/run-vlc-as-root-in-linux-ubuntu-pear-os Chirag Singh
chirag Hz

1
在某些级别上,由于源代码可用,所以引用的链接是一个有趣的技巧(使用十六进制编辑器将getuid调用替换为getpid),一种更干净的方法是编辑源代码以完全删除测试,然后重新编译。在这两种情况下,我都建议您不要这样做,但是如果您希望将脚踢开。。。
hildred

Answers:


51

这对我有用。无需编译。

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

在Raspberry Pi上使用VLC媒体播放器2.0.3 Twoflower。


3
像魅力一样工作。:)
Krishnadas PC

3
是的,这是地狱:) +1
onalbi

hahaha修补它以检查pid而不是uid,并且效果很好。真棒!
hanshenrik '18

1
这在vlc 3.0.1上也很出色
Ofer Sadan

也为我工作...
Danny

17

解决此问题的一种方法是重新编译。将--enable-run-as-root标志传递给,./configure并且vlc应该能够以root用户身份运行。上面的答案是从这里开始的


2
重新编译不是唯一的方法,只需将对geteuid的调用更改为传递1。我在linuxintro.org/wiki/Run_vlc_as_root中
Thorsten Staerk

@ThorstenStaerk,感谢您向我提供信息。
拉梅什

您能否将问题标记为已回答?
Thorsten Staerk

@ThorstenStaerk:死链接...
Alexandre Bourlier

1
@Alexandre Bourlier:作品(再次)
Thorsten Staerk

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二进制文件:

sudo bless /usr/bin/vlc

通过搜索和更改geteuid字符串getppid,保存并退出。

现在,您可以以root用户身份启动VLC。


0

VLC不应以root用户身份运行。抱歉。–解决方案

无论如何,我使用以下命令安装了vlc;

# aptitude install vlc

并尝试以root用户身份运行vlc,我的终端出现错误;

# vlc

VLC不应以root用户身份运行。抱歉。

如果您需要使用实时优先级和/或特权TCP端口

您可以使用vlc-wrapper(确保它是Set-UID根目录,

不能先由不受信任的用户运行)。

此错误表明直截了当的vlc不能以root特权用户身份运行。现在做什么?不要惊慌。这是被黑的解决方案

# vi /usr/bin/vlc

搜索geteuid并替换为getppid

保存文件并退出。

现在它应该可以工作,尝试再次运行😉

要么

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

在rodvlopes中给出的相同解决方案在18个月前就可以回答!

0

转到main menu查找vlc并将属性设置为:

gksu -u vlc

或者只是终端类型

gksu -u <username(no root)> vlc

例如,如果您有abc用户,则命令将为:

gksu -u abc vlc

0

凯文(Kevin)在对问题的评论中建议使用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-wrapper而不是vlc


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

有用。


2
如果您能解释为什么这个特定的答案可以解决问题,那将是很好的。
杰夫·谢勒

1
在rodvlopes中给出的相同解决方案在8个月前就可以回答!

1
-1,因为它是此确切页面上另一个答案的复制粘贴。
汇总

@Jeff Schaller如果geteuid返回0,则vlc知道它的根目录。但是,getppid将始终返回非零结果,其名称的长度通常与geteuid的长度相同。因此,二进制文件现在链接getppid代替了geteuid,而vlc从未意识到它的根!
乔治

1
@乔治知道它在做什么;我希望user149272可以通过解释来改善他们的答案。
杰夫·谢勒
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.