วิธีรัน VLC player ในรูท


23

ฉันได้ติดตั้ง vlc ใน centos 6.5 ฉันต้องการเรียกใช้เป็นรูต แต่ฉันได้รับข้อผิดพลาดดังต่อไปนี้

"VLC ไม่ควรถูกเรียกใช้เป็นรูทขออภัยถ้าคุณต้องการใช้ลำดับความสำคัญแบบเรียลไทม์และ / หรือพอร์ต TCP ที่มีสิทธิพิเศษคุณสามารถใช้ vlc-wrapper (ตรวจสอบให้แน่ใจว่าเป็นรูท Set-UID และไม่สามารถรันได้โดยไม่ใช่ ผู้ใช้ที่เชื่อถือได้ก่อน) "


13
จากความอยากรู้สิ่งที่จะเป็นเหตุผลในการทำเช่นนี้?
kursus

2
ดังนั้นใช้vlc-wrapperเหมือนมันบอกว่า?
เควิน

3
เคล็ดลับ: อย่าทำเช่นนี้
HalosGhost

1
หวังว่านี่จะช่วยคุณได้ hackingzones.com/run-vlc-as-root-in-linux-ubuntu-pear-os Chirag Singh
chirag Hz

1
ในบางระดับลิงก์อ้างอิงเป็นแฮ็คที่น่าสนใจ (ใช้ hex editor เพื่อแทนที่การgetuidโทรด้วยgetpid) เนื่องจากมีซอร์สโค้ดวิธีการที่สะอาดกว่าคือการแก้ไขซอร์สเพื่อลบการทดสอบทั้งหมดและคอมไพล์ใหม่ ในทั้งสองกรณีฉันขอแนะนำไม่ให้ทำเช่นนั้น แต่ถ้าคุณต้องการยิงเท้าออก . .
hildred

คำตอบ:


51

นี่คือสิ่งที่ได้ผลสำหรับฉัน ไม่จำเป็นต้องรวบรวม

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

การใช้ VLC media player 2.0.3 Twoflower บน Raspberry Pi


3
ทำงานเหมือนจับใจ :)
Krishnadas PC

3
ใช่นี่คือนรก :) +1
onalbi

ฮ่าฮ่าฮ่ากำลังแปะมันเพื่อตรวจสอบ pid แทนที่จะเป็น uid และมันใช้งานได้ดีมาก แฮ็คที่ยอดเยี่ยม!
hanshenrik

1
สิ่งนี้ทำงานได้อย่างยอดเยี่ยมใน vlc 3.0.1 เช่นกัน
Ofer Sadan

ทำงานให้ฉันด้วย ...
แดนนี่

17

วิธีหนึ่งคือคอมไพล์ซ้ำ ผ่านการ--enable-run-as-rootตั้งค่าสถานะไปยัง./configureและ vlc ควรจะสามารถเรียกใช้เป็นราก คำตอบข้างต้นจากที่นี่


2
การรวบรวมซ้ำไม่ใช่วิธีเดียวเพียงแค่เปลี่ยนการเรียกไปยัง geteuid เพื่อส่ง 1 ฉันอธิบายสิ่งนี้ที่linuxintro.org/wiki/Run_vlc_as_root
Thorsten Staerk

@ TorstenStaerk ขอบคุณที่ให้ข้อมูลแก่ฉัน
Ramesh

คุณช่วยกรุณาทำเครื่องหมายคำถามเป็นคำตอบได้ไหม?
Thorsten Staerk

@ThorstenStaerk: dead link ...
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 binary:

    # 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 ควรทำงานภายใต้ผู้ใช้รูท!


1

คุณจะสามารถเรียกใช้ VLC ในฐานะรูทได้โดยการแก้ไข VLC binary ที่อยู่ใน /usr/bin

ก่อนอื่นคุณต้องมี hex-editor เช่น Bless:

sudo apt-get install bless

จากนั้นคุณจะเปิดไบนารี VLC ด้วย hex-editor:

sudo bless /usr/bin/vlc

ค้นหาและเปลี่ยนgeteuidสตริงโดยgetppidบันทึกและออก

ตอนนี้คุณสามารถเรียกใช้ VLC เป็นรูทได้แล้ว


0

ไม่ควรรัน VLC ในฐานะรูท ขอโทษ - วิธีการแก้

อย่างไรก็ตามฉันติดตั้ง vlc โดยใช้คำสั่งดังต่อไปนี้

# aptitude install vlc

และพยายามที่จะเรียกใช้ vlc เป็น root ฉันได้รับข้อผิดพลาดใน terminal ของฉัน;

# vlc

ไม่ควรรัน VLC ในฐานะรูท ขอโทษ

หากคุณต้องการใช้ลำดับความสำคัญตามเวลาจริงและ / หรือพอร์ต TCP ที่มีสิทธิพิเศษ

คุณสามารถใช้ vlc-wrapper (ตรวจสอบให้แน่ใจว่ามันเป็น Set-UID root และ

ไม่สามารถเรียกใช้โดยผู้ใช้ที่ไม่น่าเชื่อถือก่อน)

ข้อผิดพลาดนี้ระบุว่า vlc แบบส่งตรงไม่สามารถรันได้ในฐานะผู้ใช้ที่มีสิทธิ์ใช้งานรูท ต้องทำอะไรตอนนี้ อย่าตกใจ นี่คือโซลูชันที่ถูกแฮ็ก😀

# 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: ส่งออก SUDO_UID = 1,000

หากคุณไม่มีผู้ใช้ให้เรียกใช้ 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
มันจะดีถ้าคุณสามารถอธิบายได้ว่าทำไมคำตอบนี้แก้ปัญหา
Jeff Schaller

1
โซลูชันที่เหมือนกันที่ให้ใน rodvlopes ตอบ 8 เดือนก่อนหน้านี้!

1
-1 เนื่องจากเป็นสำเนาของคำตอบอื่นในหน้าตรงนี้
รวม

@Jeff Schaller ถ้า geteuid ส่งคืนค่า 0, vlc รู้ว่าเป็นรูท อย่างไรก็ตาม getppid จะส่งคืนผลลัพธ์ที่ไม่เป็นศูนย์เสมอและความยาวของชื่อจะสะดวกเหมือนกับของ geteuid ดังนั้นตอนนี้ไบนารีเชื่อมโยง getppid แทน geteuid และ vlc ไม่เคยรู้ว่ามันเป็น root!
George

1
@ George ฉันรู้ว่ามันกำลังทำอะไรอยู่ ฉันหวังว่า user149272 สามารถปรับปรุงคำตอบของพวกเขาด้วยคำอธิบาย
Jeff Schaller
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.