Làm cách nào để đặt quyền trong / sys / vĩnh viễn?


12

Tôi đang bắt đầu X với tư cách là người dùng và cần cài đặt độ sáng bàn phím /sys/class/leds/asus\:\:kbd_backlight/brightness. Thư mục /sys/được tạo lại sau khi khởi động lại, vì vậy các quyền cũng sẽ được thiết lập lại. Làm cách nào để thiết lập nó để tôi không cần phải tạo tệp có thể ghi được bởi tất cả người dùng sau mỗi lần khởi động?

Tôi đang sử dụng Archlinux với SDDM làm trình quản lý đăng nhập và KDE là DE.


2
Bạn có thể đặt một lệnh trong một dịch vụ khởi động systemd.
goldilocks

Bạn có nghĩa là tạo một dịch vụ systemd riêng để thiết lập các quyền? Hay bạn nói từ một tập tin cụ thể?
gọi điện vào

Các cựu. "Dịch vụ" là thuật ngữ systemd, mặc dù trong trường hợp này, nó chỉ là một lệnh một lần chứ không phải là một daemon. Bạn có thể biến nó thành một loại dịch vụ "linh tinh" như RC.local nằm dưới sysV. Trong trường hợp này, dịch vụ chỉ chạy một kịch bản shell và bạn đặt lệnh vào đó.
goldilocks

Câu trả lời:


13

Không, bạn không thể, quyền của sysfs được xác định trong không gian kernel và không thể thay đổi bằng các công cụ không gian người dùng (trừ khi có hỗ trợ bên kernel).

Nhưng đối với vấn đề của riêng bạn, bạn có thể thiết lập một mục sudo cho phép mọi người ghi vào đường dẫn đó, tức là ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/class/leds/asus\:\:kbd_backlight/brightness

Và khi bạn viết vào thư mục đó, hãy sử dụng một tập lệnh như thế này, echo 1 | sudo /usr/bin/tee "/sys/class/leds/asus::kbd_backlight/brightness"


Tôi đã thử nó, nhưng nó luôn hỏi mật khẩu. Tôi cũng đã cố gắng thêm một NOPASSWD: đằng sau (TẤT CẢ).
gọi điện thoại vào

@Timo bạn có thể thử lại không? Xem thông tin cập nhật của tôi
daisy

Nó hoạt dộng bây giờ. Vấn đề là mục nhập của tôi đã bị ghi đè bởi một mục khác mà không có NOPASSWD. Và tôi chấp nhận câu trả lời của bạn vì nó dễ hơn những câu trả lời khác. Cảm ơn tất cả.

Tôi đang sử dụng linux Mint Debian trong sony vaio và đang cố gắng tạo một tập tin /sys/devices/platform/sony-laptop/kbd_backlightđể điều khiển Backlight bàn phím. Tôi đã thay đổi đường dẫn trong mã của bạn dẫn đến lỗi này: bash: syntax error near unexpected token ('`Lệnh tôi đã nhập là ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/devices/platform/sony-laptop/kbd_backlightXin hãy giúp đỡ
Indra

Tôi không thể làm việc này trên máy Ubuntu cho đến khi tôi thêm dấu phẩy giữa /usr/bin/tee/sys/class.... Sau một cái nhìn ngắn gọn về ngữ pháp trongman sudoers tôi nghi ngờ dấu phẩy là cần thiết.
Sage Mitchell

4

Thư mục /systrong Linux là giả mạo, nó là một khung nhìn vào kernel được hóa trang thành các tệp. Vì vậy, để thay đổi quyền trong nó vĩnh viễn có nghĩa là hackig kernel, và điều đó sẽ không được khuyến khích. Như các ý kiến ​​nói, có lẽ một systemdthiết lập đơn vị này sẽ là một giải pháp (nói chung, thiết lập thay đổi là một phần của quy trình khởi động).


4

Tôi gặp vấn đề tương tự, tôi cần đặt quyền trước khi chạy dịch vụ gật đầu. Sau lời nhận xét về goldilocks, tôi đã tạo tập lệnh systemd này:

$ cat /etc/systemd/system/setledspermissions.service

[Unit]
Description=Set leds writable to everybody
Before=nodered.service

[Service]
Type=oneshot
User=root
ExecStart=/bin/bash -c "/bin/chmod a+w /sys/class/leds/led0/*"

[Install]
WantedBy=multi-user.target

Sau khi viết tệp dịch vụ, tôi kích hoạt nó với

$ sudo systemctl enable setledspermissions.service
$ sudo systemctl start setledspermissions.service
$ sudo systemctl status setledspermissions.service

Đây có phải là cách để đi khi cần cấp quyền truy cập ghi vào các đường dẫn / sys / đường dẫn cụ thể không? Trường hợp sử dụng của tôi là cài đặt độ sáng đèn nền màn hình trên ĺ mỏi của tôi.
Richrd

Tôi đoán đó là vì đường dẫn sys được tạo lại mỗi lần khởi động. Nhưng tôi không đủ chuyên môn để chắc chắn về điều đó.
hariseldon78
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.