ฉันจะเปลี่ยนเจ้าของเป็นผู้ใช้ปัจจุบันในโฟลเดอร์และมีโฟลเดอร์อยู่ภายในโฮมไดเร็กตอรี่ของฉันได้อย่างไร?


12

การใช้sudo nautilusฉันสร้างบางโฟลเดอร์และฉันต้องการกำจัดการอนุญาตรูท แต่ฉันมีจำนวนมากและฉันต้องการจะทำกับไดเรกทอรีทั้งหมดและโฟลเดอร์ที่มี

ดังนั้นจะอนุญาตให้ผู้ใช้ปัจจุบันอ่าน / เขียนไฟล์และโฟลเดอร์ทั้งหมดภายในไดเรกทอรีเฉพาะที่อยู่ภายในบ้านได้อย่างไร

คำตอบ:


14

ในการย้อนกลับความเสียหายที่เกิดขึ้นโดยใช้sudo nautilusคุณควรทำให้ตัวเองเป็นเจ้าของไดเรกทอรีใด ๆ (และเนื้อหาของพวกเขา) ที่เป็นของราก

คุณสามารถใช้findเพื่อทำสิ่งนี้เนื่องจากมีการทดสอบเพื่อค้นหาเฉพาะไฟล์ที่ผู้ใช้เฉพาะเป็นเจ้าของ

นี้จะค้นหาไดเรกทอรีทั้งหมดในบ้านของคุณเป็นเจ้าของโดย root:

sudo find ~ -type d -user root

จากนั้นคุณสามารถทำซ้ำfindคำสั่งและเพิ่มการกระทำที่คุณต้องการ - เปลี่ยนความเป็นเจ้าของซ้ำของไดเรกทอรีที่พบทั้งหมดและเนื้อหาของพวกเขาให้กับผู้ใช้ปัจจุบัน:

sudo find ~ -type d -user root -exec sudo chown -R $USER: {} +

คำอธิบาย:

  • ~ ไดเรกทอรีบ้าน
  • -type d ค้นหาเฉพาะไดเรกทอรี
  • -user root ค้นหาเฉพาะสิ่งที่เป็นของรูท
  • -exec ทำคำสั่งต่อไปนี้ในสิ่งที่พบ
  • sudo chown -R เปลี่ยนเจ้าของซ้ำ ๆ
  • $USER ผู้ใช้ปัจจุบัน
  • : เปลี่ยนกลุ่มเป็นผู้ใช้เฉพาะ

มีประสิทธิภาพมากขึ้นคุณสามารถละเว้นการ-type dค้นหาไฟล์ประเภทใด ๆ ที่เป็นของรูทและละเว้นสิ่ง-Rที่findจะทำซ้ำเพื่อคุณโดยดำเนินการกับไฟล์ทั้งหมด

sudo find ~ -user root -exec sudo chown $USER: {} +

คุณต้องรันfindด้วยsudo( sudo find ...) เพื่อตรวจสอบrootไดเรกทอรีย่อยที่มี0700การปกป้องและทุกสิ่งที่อยู่ภายใต้ เหมือนกันสำหรับการซ่อมแซม
waltinator

"ป้องกันสิ่งที่มีแนวโน้ม" หรือ "ป้องกันสิ่งที่เป็นไปได้"? ตัวเลือกของคุณ.
waltinator

@ walinator แน่นอน :) ขอบคุณที่พูดถึงมันเพื่อที่ฉันจะได้ปรับปรุง ฉันแค่พยายามไม่ใช้sudoจนกว่าจะจำเป็น
Zanna

10

การใช้งานเครื่องมือ GUI เช่นเดียวnautilusกับที่rootพิจารณาว่าเป็นอันตรายด้วยเหตุผลนี้รวมถึงฟังก์ชั่นอื่น ๆ (ฟังก์ชั่นที่ซ่อนอยู่ความสามารถในการเรียกใช้ชิ้นส่วนของโปรแกรมอย่างเงียบ ๆ

คุณไม่มีปัญหา "การอนุญาต" คุณมีปัญหา "ความเป็นเจ้าของ"

ในการค้นหาไฟล์ทั้งหมดที่เป็นของroot(ใครเป็นเจ้าของจริงๆ) ให้ทำ:

sudo find $HOME \! -user $USER

หากต้องการเปลี่ยนความเป็นเจ้าของให้กับคุณคุณสามารถทำได้

sudo chown -R $(id -u):$(id -g) $HOME

แต่จะเปลี่ยนความเป็นเจ้าของไฟล์ทั้งหมดในและภายใต้ $HOME

sudo find $HOME \! -user $USER >/tmp/list-of-files
# edit the list of files, and delete file files you don't want to chown
nano /tmp/list-of-files 
xargs sudo chown $(id -u):$(id -g) </tmp/list-of-files

ให้โอกาสหนึ่งในการปรับเปลี่ยนรายการไฟล์ที่ไม่ใช่ของคุณเป็นเจ้าของซึ่งจะเปลี่ยนความเป็นเจ้าของให้กับคุณ


5

สิ่งที่คุณต้องทำคือการเปลี่ยนความเป็นเจ้าของของโฟลเดอร์จากผู้ใช้ (และกลุ่ม) รากให้กับผู้ใช้อื่น ๆ (และกลุ่ม) ที่คุณต้องการ

ลองนึกภาพว่าคุณต้องการทำงานกับ/ home / randomFolderและผู้ใช้ที่คุณต้องการจัดการความเป็นเจ้าของคือvitor-abellaสิ่งที่คุณต้องทำคือเพียงแค่เรียกใช้งานในฐานะ root:

chown -R vitor-abella:vitor-abella /home/randomFolder

อาจใช้เวลาสักครู่หากมีไฟล์และโฟลเดอร์ย่อยมากมาย แต่หลังจากนั้นคุณควรติดตาม

ไชโย


3
ผมใช้$(id -u):$(id -g)มากกว่าขอ OP $HOME/randomFolderจะจินตนาการและ
waltinator
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.