Mengapa saya tidak bisa membuat direktori di / sys

8

Saya belajar Ubuntu dan bereksperimen dengan berbagai hal.

Saya perhatikan saya tidak bisa membuat direktori di dalam / sys

Apakah ini direktori khusus atau semacamnya? Apakah ada jenis direktori lain?

(Saya melakukan a sudo -idan a chmod a+w /sys)

spiderplant0
sumber

Jawaban:

17

Pertama, Anda harus mengubah /syskembali izin ( sudo chmod a-r /sysakan melakukannya, karena izin defaultnya adalah dr-xr-xr-x). /sysseharusnya tidak bisa ditulis dunia!

Secara umum, untuk membuat file dan direktori di bagian-bagian sistem di luar folder rumah Anda, media eksternal, dan /tmpfolder, Anda harus melakukannyaroot dengan sudo, alih-alih dengan mengubah izin atau kepemilikan untuk memberi Anda akses. Membuat direktori yang dapat ditulis dunia sangat tidak dianjurkan.

Untuk informasi tentang cara yang disarankan, lihat:

Anda bahkan dapat menggunakan gksudo nautilus(atau sudo -H nautilusjika tidak punya gksudo) untuk membuka jendela browser file yang dimiliki oleh root. Berhati-hatilah dengan ini - itu bisa melakukan apa saja, dan sebagian besar dari hal-hal itu mungkin Anda tidak ingin dilakukan. Juga, perhatikan bahwa jika Anda meluncurkan program dari jendela peramban file yang dimiliki oleh root, program itu juga akan berjalan sebagai root.

Itu umumnya yang harus Anda lakukan, untuk mengedit atau membuat konten baru dari direktori yang dimiliki oleh root. Namun...

/sysberbeda; bahkan roottidak bisa langsung membuat barang di sana

Seperti /procdan /dev, di Ubuntu dan OS lain yang menggunakan kernel Linux, /sysadalah sistem file virtual , yang diwakilinya bukan file nyata pada disk Anda (atau di mana saja).

Singkatnya, /sysadalah cara kernel memberikan informasi tentang perangkat (fisik dan virtual).

Beberapa entri dalam sistem /sysfile juga dapat ditulis secara bermakna dan menulisnya adalah cara untuk secara dinamis mengatur konfigurasi untuk perangkat. (Ini tidak boleh disamakan dengan sistem /devfile; menulis ke entri /devadalah cara mengirim data ke perangkat. )

Tetapi ini masih harus dilakukan sebagai root. Daripada mengubah izin pada /sysatau bagian mana pun dari itu, Anda hanya perlu melakukan tindakan tersebut sebagai root dengan sudoseperti yang dijelaskan di atas.

Jawaban di Unix.SE ini menjelaskan cara melakukan itu, dan bahkan bagaimana mengizinkan beberapa non-administrator (yang tidak dapat melakukan sebagian besar tindakan sebagai root) untuk mengubah beberapa /syspengaturan.

Untuk informasi lebih lanjut tentang cara /syskerjanya, lihat:

Entri dalam /sysdibuat oleh kernel dan oleh driver; Anda tidak bisa hanya membuatnya dari baris perintah. (Seperti yang dinyatakan di atas, Anda dapat mengedit beberapa sebagai root, tetapi Anda umumnya tidak dapat membuat yang baru dari userspace kecuali dengan memuat modul kernel atau menginstal driver atau memodifikasi kernel.)

Jika Anda tertarik untuk menulis driver, lihat:

Eliah Kagan
sumber
4

Ya, /sysadalah direktori "khusus". Dari Wikipedia :

Distribusi Linux modern termasuk direktori / sys sebagai sistem file virtual (sysfs, sebanding dengan / proc, yang merupakan procfs), yang menyimpan dan memungkinkan modifikasi perangkat yang terhubung ke sistem, sedangkan banyak sistem operasi tradisional UNIX dan Unix-like menggunakan / sys sebagai tautan simbolis ke pohon sumber kernel.

"Menyimpan dan memungkinkan modifikasi perangkat yang terhubung ke sistem" cukup penting. Fakta yang /sysdigunakan sebagai sistem file virtual, yang dipasang khusus, adalah mengapa Anda (dan root) tidak dapat menulisnya. Saya akan menghindari bermain-main dengan /sys. Dengan Linux, yang sangat terbuka dan transparan, berbagai hal biasanya tidak dapat diubah karena alasan yang baik; baik untuk tujuan keamanan, atau, dalam hal ini, karena ada cara lain untuk mencapai tujuan Anda yang jauh lebih tidak berisiko.

Richard
sumber