Điểm:0

Cách bắt đầu tập lệnh với quyền root với DISPLAY=:0

lá cờ jp

Tôi có một tập lệnh nên chạy với quyền root và cũng nên sử dụng hiển thị (opencv imshow trong đó.) Làm cách nào tôi có thể chạy tập lệnh đó khi khởi động lại?

Tôi đã thử với tệp my.sh:

xuất HIỂN THỊ =: 0
/usr/bin/python3 /path/to/myscript.py

công việc lương thấp:

@khởi động lại /bin/bash /path/to/my.sh

Tuy nhiên, nó không bắt đầu.

Bạn có thể giúp tôi không?

user10489 avatar
lá cờ in
Kiểm tra hộp thư của root để tìm lỗi từ cron và có thể thêm các lỗi đó vào câu hỏi của bạn? Giả sử bạn đã đăng nhập vào bảng điều khiển với tư cách là người dùng không phải root, bạn có thể cần sử dụng xauth để sao chép cookie hiển thị của mình vào tài khoản root. Hoặc, cách khác, chạy tập lệnh trong cron với cùng một người dùng đã đăng nhập.
Hakan Ulusoy avatar
lá cờ jp
Tôi đang đăng nhập với quyền root. crontab cũng là gốc. nghi ngờ chính của tôi là, xuất HIỂN THỊ. Tôi chạy sh đó với quyền root từ ssh, cũng không hoạt động; trả về với màn hình không thể kết nối. Tuy nhiên, nếu tôi chạy sh với tư cách người dùng, nó sẽ hoạt động (không có quyền root, lại xảy ra lỗi)
user10489 avatar
lá cờ in
Bạn có đăng nhập vào bảng điều khiển đồ họa cùng lúc với ssh không? Nếu vậy, với tư cách là người dùng nào?
user10489 avatar
lá cờ in
Khi bạn đăng nhập bằng ssh, bạn có muốn tập lệnh chạy trên màn hình cục bộ dành cho bạn hay màn hình trên máy bạn đang sử dụng ssh để truy cập không?
Hakan Ulusoy avatar
lá cờ jp
thực sự nó thay đổi. Đôi khi đăng nhập đôi khi không. Nhưng người dùng là như nhau, chỉ có một người dùng tồn tại tho. Ý bạn là, bạn không thể sử dụng hiển thị từ ssh hoặc cronjob cho đến khi người dùng đăng nhập và bắt đầu xsession?
user10489 avatar
lá cờ in
Bạn không thể mở cửa sổ trong phiên không tồn tại. Nếu bạn muốn hiển thị một cửa sổ trong phiên cục bộ của mình thay vì phiên (có thể không tồn tại) trên máy từ xa, thì bạn không nên làm phiền với HIỂN THỊ.
Điểm:1
lá cờ cn
raj

Bạn không thể chạy một công việc đang chạy @khởi động lại với màn hình đồ họa vì tại thời điểm hệ thống khởi động, chưa có màn hình đồ họa nào được thiết lập và chạy.

Bạn nên thêm tập lệnh đó vào "Chương trình khởi động" của phiên máy tính để bàn của mình. Đối với việc chạy với quyền root, phương pháp dễ dàng nhất để chạy tập lệnh với quyền root đối với tôi là sử dụng một trình bao bọc nhị phân đó là gốc setuid.

Viết một chương trình C ngắn sau (gọi nó là trình bao bọc.c Ví dụ):

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>

int chính ()
{
   intrc;
   thiết lập( 0 );
   rc=WEXITSTATUS(system( "/path/to/your/script" ));
   thoát (rc);
}

Biên dịch chương trình bằng cách sử dụng: gcc -o trình bao bọc trình bao bọc.c (bạn cần phải có xây dựng cần thiết gói được cài đặt cho điều đó).

Làm cái vỏ bánh tập tin gốc setuid: sudo chown root: trình bao bọc gốc theo dõi bởi Trình bao bọc Sudo chmod o+s

Sau đó cấu hình đường dẫn đến của bạn vỏ bánh tập tin vào các chương trình khởi động của phiên máy tính để bàn của bạn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.