มันเป็นไปได้ที่จะค้นหาและ chown ไฟล์ทั้งหมดที่ผู้ใช้เฉพาะเป็นเจ้าของ? ฉันทำสิ่งต่าง ๆ เป็นผู้ใช้ที่ไม่ถูกต้องและจำเป็นต้องให้สิทธิ์ผู้ใช้ที่ถูกต้องแก่ไฟล์
มีวิธีแบบเรียกซ้ำและตามเงื่อนไขที่ฉันสามารถ chown กลุ่มของไฟล์และไดเรกทอรี?
มันเป็นไปได้ที่จะค้นหาและ chown ไฟล์ทั้งหมดที่ผู้ใช้เฉพาะเป็นเจ้าของ? ฉันทำสิ่งต่าง ๆ เป็นผู้ใช้ที่ไม่ถูกต้องและจำเป็นต้องให้สิทธิ์ผู้ใช้ที่ถูกต้องแก่ไฟล์
มีวิธีแบบเรียกซ้ำและตามเงื่อนไขที่ฉันสามารถ chown กลุ่มของไฟล์และไดเรกทอรี?
คำตอบ:
คุณสามารถใช้คำสั่ง find พกพากับสิ่งนี้
find . -user old-user -exec chown new-user:new-group {} \;
คุณสามารถขยายไฟล์นี้เพื่อค้นหาไฟล์เฉพาะด้วยตัวเลือก -iname (ไม่ใช่ POSIX แต่มีอยู่ใน OSX)
find . -iname '*.html' -user www-data -exec chown www-data:www-data {} \;
ส่วน ย่อมาจากโฟลเดอร์ปัจจุบันและด้านล่างดังนั้นคุณสามารถใช้เส้นทางที่เฉพาะเจาะจงเป็นฐาน
find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;
find . -user old-user -exec chown new-user:new-group "{}" \;
-user other-user
ส่วนเพื่อค้นหาสิ่งที่ตรงกันข้าม ตัวอย่างเช่นfind . ! -user other-user
.
-group old-group
บ่อยครั้งที่ดังกล่าวข้างต้นเป็นประโยชน์มากขึ้นเมื่อคุณเพิ่ม ด้วยวิธีนี้คุณสามารถรักษาความเป็นเจ้าของกลุ่ม (ผู้ดูแลระบบพนักงาน, sillyothergroupname)
คุณสามารถใช้ได้
chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *
จากคู่มือchown --help
:
--from=CURRENT_OWNER:CURRENT_GROUP
change the owner and/or group of each file only if
its current owner and/or group match those specified
here. Either may be omitted, in which case a match
is not required for the omitted attribute.
แก้ไข : แน่นอนว่าใช้งานได้กับlinuxและ UNIces ส่วนใหญ่เท่านั้น สำหรับ OSX (ซึ่งใช้ BSD) ดูวิธีแก้ปัญหาของ @StephenTrapped
chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *
จะข้ามไฟล์ที่ซ่อนอยู่ในคำสั่งโฟลเดอร์ที่รัน แต่จะchown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group .
ทำงานกับไฟล์ที่ซ่อนอยู่ในโฟลเดอร์หลักด้วย
-h
ตัวเลือกในการเปลี่ยนแปลง chown ได้รับอนุญาตจากการเชื่อมโยงสัญลักษณ์ไฟล์ตัวเองและไม่ได้เป็นเพียงเป้าหมาย
ซึ่งอาจมีความสำคัญเมื่อทำสิ่งนี้ในโฟลเดอร์ไบนารีของซอฟต์แวร์ซึ่งใช้ลิงค์ symoblic เพื่อสลับระหว่างรุ่น
find . -user old-user -exec chown -h new-user:new-group {} \;
new-user:new-user
น่าจะพูดnew-user:new-group