Cách chạy trình phát VLC trong root


23

Tôi đã cài đặt một vlc trong centos 6.5. Tôi muốn chạy nó như root. Nhưng tôi nhận được lỗi sau,

"VLC không được coi là root. Xin lỗi. Nếu bạn cần sử dụng các ưu tiên thời gian thực và / hoặc các cổng TCP đặc quyền, bạn có thể sử dụng vlc-Wrapper (đảm bảo rằng đó là root Set-UID và không thể chạy được bởi người dùng đáng tin cậy đầu tiên). "


13
Vì tò mò, lý do để làm điều này là gì?
kursus

2
Vì vậy, sử dụng vlc-wrappernhư nó nói?
Kevin

3
Pro-tip: Đừng làm điều này.
HalosGhost

1
Hy vọng điều này sẽ giúp bạn ra ngoài. hackingzones.com/run-vlc-as-root-in-linux-ubfox-pear-os Chirag Singh
chirag Hz

1
Ở một số cấp độ, liên kết được tham chiếu là một hack thú vị (sử dụng trình soạn thảo hex để thay thế getuidcuộc gọi getpid) vì mã nguồn có sẵn, cách tiếp cận sạch hơn sẽ là chỉnh sửa nguồn để loại bỏ hoàn toàn kiểm tra và biên dịch lại. Trong cả hai trường hợp, tôi khuyên bạn không nên làm như vậy, nhưng nếu bạn muốn bắn chân ra. . .
hildred

Câu trả lời:


51

Đây là những gì làm việc cho tôi. Không cần biên dịch.

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

Sử dụng trình phát đa phương tiện VLC 2.0.3 Twoflower trên Raspberry Pi.


3
Làm việc như người ở. :)
PC của Krishnadas

3
Yeah This Is Hell :) +1
onalbi

hahaha vá nó để kiểm tra pid thay vì uid, và nó hoạt động rất tốt. hack tuyệt vời!
hanshenrik

1
Điều này cũng hoạt động tuyệt vời trên vlc 3.0.1
Ofer Sadan

Làm việc cho tôi quá ...
Danny

17

Một cách xung quanh này là biên dịch lại. Truyền --enable-run-as-rootcờ đến ./configurevà vlc sẽ có thể chạy như root. Câu trả lời trên là từ đây .


2
biên dịch lại không phải là cách duy nhất, chỉ cần thay đổi cuộc gọi thành geteuid để phân phối 1. Tôi mô tả điều này tại linuxintro.org/wiki/Run_vlc_as_root
Thorsten Staerk

@ThorstenStaerk, cảm ơn vì đã cung cấp cho tôi thông tin.
Ramesh

Bạn có thể vui lòng đánh dấu câu hỏi như đã trả lời?
Thorsten Staerk

@ThorstenStaerk: liên kết chết ...
Alexandre Bour trước

1
@Alexandre Bour Trước: hoạt động (một lần nữa)
Thorsten Staerk

1

Xem http://www.linuxintro.org/wiki/Run_vlc_as_root :

  • sao lưu nhị phân VLC:

    # cp /usr/bin/vlc /usr/bin/vlc-backup
    
  • tìm cuộc gọi đến geteuidbên trong nhị phân VLC:

    # needle=$(objdump -d /usr/bin/vlc | grep euid | tail -1 | awk '{print "\\x"$2"\\x"$3"\\x"$4"\\x"$5"\\x"$6;}')
    
  • thay thế cuộc gọi để chỉ cung cấp 01:

    # sed -ir "s/$needle/\xb8\x01\x00\x00\x00/" /usr/bin/vlc
    
  • kiểm tra nó

VLC nên chạy dưới quyền người dùng root!


1

Bạn sẽ có thể chạy VLC với quyền root bằng cách sửa đổi nhị phân VLC, nằm trong /usr/bin

Trước tiên, bạn sẽ cần một trình soạn thảo hex, như Bless:

sudo apt-get install bless

Sau đó, bạn sẽ mở tệp nhị phân VLC bằng trình soạn thảo hex:

sudo bless /usr/bin/vlc

Tìm kiếm và thay đổi geteuidchuỗi bằng cách getppidlưu và thoát.

Bây giờ bạn có thể khởi chạy VLC với quyền root.


0

VLC không được phép chạy dưới quyền root. Lấy làm tiếc. - Dung dịch

Dù sao, tôi đã cài đặt vlc bằng lệnh sau;

# aptitude install vlc

Và đã cố chạy vlc với quyền root tôi gặp lỗi trên terminal của mình;

# vlc

VLC không được phép chạy dưới quyền root. Lấy làm tiếc.

Nếu bạn cần sử dụng các ưu tiên thời gian thực và / hoặc các cổng TCP đặc quyền

bạn có thể sử dụng vlc-Wrapper (đảm bảo rằng đó là root Set-UID và

không thể được chạy bởi người dùng không đáng tin cậy trước).

Lỗi này cho biết vlc chuyển tiếp không thể chạy như người dùng đặc quyền gốc. Làm gì bây giờ? Đừng hoảng sợ. Đây là giải pháp bị hack

# vi /usr/bin/vlc

tìm kiếm geteuidvà thay thế nó bằnggetppid

Lưu tập tin và thoát.

Bây giờ nó sẽ hoạt động, cố gắng chạy lại nó

hoặc là

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

Giải pháp giống hệt được đưa ra trong câu trả lời trước đó 18 tháng!

0

Đi để main menutìm vlcvà đặt thuộc tính là:

gksu -u vlc

hoặc đơn giản là trong loại thiết bị đầu cuối

gksu -u <username(no root)> vlc

Ví dụ: nếu bạn có abcngười dùng, lệnh của bạn sẽ là:

gksu -u abc vlc

0

Kevin trong các bình luận của câu hỏi được đề xuất bằng cách sử dụng vlc-Wrapper. Tôi gặp khó khăn khi tìm hiểu cách sử dụng nó vì vậy tôi sẽ mô tả cách tôi làm cho nó hoạt động:

bạn cần đặt người dùng không có đặc quyền của mình trong SUDO_UID: export SUDO_UID = 1000

nếu bạn không có người dùng để chạy vlc trong phần tạo:

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

nếu bạn muốn biến SUDO_UID vĩnh viễn, hãy thêm nó vào bashrc:

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

cẩn thận không viết đơn> thay vì >>

sau đó sử dụng vlc-Wrapper thay vì vlc


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

Nó hoạt động.


2
Sẽ tốt hơn nếu bạn có thể giải thích tại sao câu trả lời cụ thể này giải quyết vấn đề.
Jeff Schaller

1
Giải pháp giống hệt được đưa ra trong câu trả lời trước 8 tháng!

1
-1 vì đó là bản sao của câu trả lời khác trên trang chính xác này.
tổng

@Jeff Schaller Nếu geteuid trả về 0, vlc biết đó là root. Tuy nhiên, getppid sẽ luôn trả về kết quả khác không và độ dài của tên của nó thuận tiện giống như của geteuid. Do đó, nhị phân bây giờ liên kết getppid thay cho geteuid và vlc không bao giờ nhận ra nó là root!
George

1
@George Tôi nhận thức được những gì nó đang làm; Tôi đã hy vọng rằng user149272 có thể cải thiện câu trả lời của họ bằng một lời giải thích.
Jeff Schaller
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.