เหตุใดฉันจึงไม่สามารถสร้างไดเรกทอรีใน / sys


8

ฉันกำลังเรียนรู้ Ubuntu และทดลองกับสิ่งต่าง ๆ

ฉันสังเกตเห็นว่าฉันไม่สามารถสร้างไดเรกทอรีภายใน / sys

นี่เป็นไดเรกทอรีพิเศษหรือบางอย่าง มีไดเรกทอรีประเภทอื่นหรือไม่

(ฉันทำsudo -iและกchmod a+w /sys)

คำตอบ:


17

ก่อนอื่นคุณควรเปลี่ยนการ/sysอนุญาตกลับคืน ( sudo chmod a-r /sysจะทำได้เนื่องจากการอนุญาตเริ่มต้นคือdr-xr-xr-x) /sysไม่ควรเขียนได้ทั่วโลก!

โดยทั่วไปในการสร้างไฟล์และไดเรกทอรีในส่วนของระบบนอกโฟลเดอร์บ้านของคุณสื่อภายนอกและ/tmpโฟลเดอร์ที่คุณควรจะทำมันเป็นrootที่มีsudoมากกว่าโดยสิทธิ์ในการเปลี่ยนแปลงหรือความเป็นเจ้าของเพื่อให้ตัวเองเข้าถึง ไม่แนะนำให้สร้างไดเรกทอรีที่เขียนได้ทั่วโลก

สำหรับข้อมูลเกี่ยวกับวิธีที่แนะนำดู:

คุณสามารถใช้gksudo nautilus(หรือsudo -H nautilusหากไม่มีgksudo) เพื่อเปิดหน้าต่างเบราว์เซอร์ไฟล์ที่เป็นเจ้าของรูท แต่ระวังด้วยสิ่งนี้ - มันสามารถทำอะไรก็ได้และสิ่งเหล่านั้นส่วนใหญ่เป็นสิ่งที่คุณอาจไม่ต้องการทำ นอกจากนี้โปรดทราบว่าหากคุณเปิดโปรแกรมจากหน้าต่างเบราว์เซอร์ไฟล์ที่เป็นเจ้าของรูทโปรแกรมนั้นก็จะทำงานในฐานะรูทด้วย

นั่นคือโดยทั่วไปrootสิ่งที่คุณควรจะทำอย่างไรที่จะแก้ไขหรือสร้างเนื้อหาใหม่ของไดเรกทอรีที่เป็นเจ้าของโดย อย่างไรก็ตาม ...

/sysแตกต่าง; แม้rootจะไม่สามารถสร้างสิ่งที่นั่นโดยตรง

ชอบ/procและ/devใน Ubuntu และระบบปฏิบัติการอื่น ๆ ที่ใช้ลินุกซ์/sysเป็นระบบแฟ้มเสมือนสิ่งที่มันหมายถึงไม่ได้เป็นไฟล์จริงบนฮาร์ดดิสก์ของคุณ (หรือที่ใดก็ได้)

กล่าวโดยย่อ/sysคือวิธีที่เคอร์เนลให้ข้อมูลเกี่ยวกับอุปกรณ์ (ฟิสิคัลและเสมือน)

บางรายการใน/sysระบบไฟล์นั้นสามารถเขียนได้อย่างมีความหมายและการเขียนลงในรายการเป็นวิธีการตั้งค่าคอนฟิกแบบไดนามิกสำหรับอุปกรณ์ (สิ่งนี้ไม่ควรสับสนกับ/devระบบไฟล์การเขียนลงในรายการ/devเป็นวิธีการส่งข้อมูลไปยังอุปกรณ์ )

แต่สิ่งนี้ยังคงต้องทำในฐานะที่เป็นราก แทนที่จะเปลี่ยนการอนุญาตใน/sysหรือส่วนใดส่วนหนึ่งของมันคุณควรจะดำเนินการตามsudoที่อธิบายไว้ข้างต้น

คำตอบสำหรับ Unix.SE นี้จะอธิบายถึงวิธีการทำเช่นนั้นและวิธีอนุญาตให้ผู้ที่ไม่ใช่ผู้ดูแลระบบบางคน (ที่ไม่สามารถดำเนินการในฐานะ root) เพื่อเปลี่ยน/sysการตั้งค่าบางอย่าง

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการ/sysทำงานดู:

รายการ/sysจะถูกสร้างขึ้นโดยเคอร์เนลและโดยไดรเวอร์; คุณไม่สามารถสร้างพวกเขาจากบรรทัดคำสั่ง (ตามที่ระบุไว้ข้างต้นคุณสามารถแก้ไขบางอย่างเป็นรูทได้ แต่โดยทั่วไปคุณไม่สามารถสร้างใหม่ได้จาก userspace ยกเว้นโดยการโหลดโมดูลเคอร์เนลหรือติดตั้งไดรเวอร์หรือแก้ไขเคอร์เนล)

หากคุณสนใจเขียนไดรเวอร์ดูที่:


4

ใช่/sysเป็นไดเรกทอรี "พิเศษ" จากWikipedia :

การแจกจ่าย Linux สมัยใหม่รวมถึงไดเร็กทอรี / sys เป็นระบบไฟล์เสมือน (sysfs, เทียบเท่ากับ / proc, ซึ่งเป็น procfs) ซึ่งจัดเก็บและอนุญาตการแก้ไขอุปกรณ์ที่เชื่อมต่อกับระบบในขณะที่ระบบปฏิบัติการ UNIX และ Unix ที่ใช้ระบบปฏิบัติการ Unix / sys เป็นลิงก์สัญลักษณ์ไปยังแผนผังซอร์สเคอร์เนล

"ร้านค้าและอนุญาตให้แก้ไขอุปกรณ์ที่เชื่อมต่อกับระบบ" เป็นสิ่งสำคัญมาก ความจริงที่/sysใช้เป็นระบบไฟล์เสมือนติดตั้งเป็นพิเศษคือสาเหตุที่คุณ (และรูท) ไม่สามารถเขียนลงไปได้ /sysฉันจะหลีกเลี่ยงล้อเล่นกับ ด้วย Linux ซึ่งเปิดกว้างและโปร่งใสสิ่งต่าง ๆ มักไม่เปลี่ยนแปลงด้วยเหตุผลที่ดี ไม่ว่าจะเพื่อความปลอดภัยหรือในกรณีนี้เนื่องจากมีวิธีอื่นในการบรรลุเป้าหมายที่มีความเสี่ยงน้อยกว่ามาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.