Bagaimana cara mengatur izin di / sys / permanen?

12

Saya memulai X sebagai pengguna dan perlu mengatur kecerahan keyboard saya /sys/class/leds/asus\:\:kbd_backlight/brightness. The /sys/direktori akan diciptakan kembali setelah reboot, sehingga hak akses akan mengatur ulang juga. Bagaimana cara mengaturnya sehingga saya tidak perlu membuat file dapat ditulis oleh semua pengguna setelah setiap boot?

Saya menggunakan Archlinux dengan SDDM sebagai manajer login dan KDE sebagai DE.

di-xoning
sumber
2
Anda bisa meletakkan perintah di layanan boot systemd.
goldilocks
Apakah Anda bermaksud membuat layanan systemd sendiri yang mengatur izin? Atau apakah Anda berbicara dari file tertentu?
Ditulis
Mantan. "Layanan" adalah istilah systemd, meskipun dalam kasus ini hanya akan menjadi perintah sekali saja dan bukan daemon. Anda bisa menjadikannya semacam layanan "hal-hal lain" seperti rc.local berada di bawah sysV. Dalam hal ini layanan hanya menjalankan skrip shell, dan Anda meletakkan perintah di sana.
goldilocks

Jawaban:

13

Tidak, Anda tidak bisa, izin sysfs didefinisikan dalam ruang kernel dan tidak dapat diubah dengan alat userspace (kecuali dengan dukungan sisi kernel).

Tetapi untuk masalah Anda sendiri, Anda dapat mengatur entri sudo yang memungkinkan semua orang untuk menulis ke jalur itu, yaitu ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/class/leds/asus\:\:kbd_backlight/brightness

Dan ketika Anda menulis ke direktori itu, gunakan skrip seperti ini, echo 1 | sudo /usr/bin/tee "/sys/class/leds/asus::kbd_backlight/brightness"

bunga aster
sumber
Saya mencobanya, tetapi selalu meminta kata sandi. Saya juga mencoba menambahkan NOPASSWD: di belakang (ALL).
Ditulis
@Timo, bisakah kamu mencoba lagi? Lihat pembaruan saya
daisy
Ini berfungsi sekarang. Masalahnya adalah bahwa entri saya ditimpa oleh yang lain tanpa NOPASSWD. Dan saya menerima jawaban Anda karena lebih mudah daripada jawaban yang lain. Terima kasih semuanya.
Ditandai
Saya menggunakan linux Mint Debian di sony vaio dan mencoba membuat file /sys/devices/platform/sony-laptop/kbd_backlightuntuk mengontrol Backlight keyboard. Saya telah mengubah jalur dalam kode Anda yang mengarah ke kesalahan ini: bash: syntax error near unexpected token ('`Perintah yang saya ketikkan adalah ALL ALL = (ALL) NOPASSWD: /usr/bin/tee /sys/devices/platform/sony-laptop/kbd_backlightTolong bantu
Indra
Saya tidak bisa menjalankan ini pada mesin Ubuntu sampai saya menambahkan koma antara /usr/bin/teedan /sys/class.... Setelah melihat sekilas tata bahasa di man sudoerssaya curiga koma diperlukan.
Sage Mitchell
4

The /sysdirektori di Linux adalah palsu, itu adalah pandangan ke kernel berpakaian sebagai file. Jadi untuk mengubah izin di dalamnya secara permanen berarti hackig kernel, dan itu akan keliru. Seperti komentar mengatakan, mungkin systemdpengaturan unit ini akan menjadi solusi (secara umum, atur perubahan sebagai bagian dari proses boot).

vonbrand
sumber
4

Saya memiliki masalah yang sama, saya perlu mengatur izin sebelum menjalankan layanan mengangguk. Mengikuti komentar goldilocks saya membuat skrip systemd ini:

$ 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

Setelah menulis file layanan saya mengaktifkannya dengan

$ sudo systemctl enable setledspermissions.service
$ sudo systemctl start setledspermissions.service
$ sudo systemctl status setledspermissions.service
hariseldon78
sumber
Apakah ini umumnya cara untuk pergi ketika perlu memberikan akses tulis ke / sys / path tertentu? Kasing saya adalah mengatur kecerahan lampu latar layar pada desktop saya.
Richrd
Saya kira itu karena jalur sistem diciptakan setiap boot. Tapi saya tidak cukup ahli untuk memastikan hal itu.
hariseldon78