chown ซ้ำไฟล์ทั้งหมดที่เป็นของผู้ใช้เฉพาะ


32

มันเป็นไปได้ที่จะค้นหาและ chown ไฟล์ทั้งหมดที่ผู้ใช้เฉพาะเป็นเจ้าของ? ฉันทำสิ่งต่าง ๆ เป็นผู้ใช้ที่ไม่ถูกต้องและจำเป็นต้องให้สิทธิ์ผู้ใช้ที่ถูกต้องแก่ไฟล์

มีวิธีแบบเรียกซ้ำและตามเงื่อนไขที่ฉันสามารถ chown กลุ่มของไฟล์และไดเรกทอรี?

คำตอบ:


60

คุณสามารถใช้คำสั่ง 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 {} \;

สิ่งที่ฉันกำลังมองหา แต่เพียงเพื่อให้ทราบว่าตัวเลือกหลังจาก chown new-user:new-userน่าจะพูดnew-user:new-group
Henesnarfel

2
ฉันคาดเดาว่าวงเล็บปีกกาควรอยู่ในเครื่องหมายคำพูดเพื่อจัดการเส้นทางที่มีช่องว่างอย่างเหมาะสม ดังนั้นfind . -user old-user -exec chown new-user:new-group "{}" \;
Dan Benamy

ในกรณีที่บุคคลอื่นกำลังค้นหาวิธีการค้นหาไฟล์ที่ไม่ได้เป็นของผู้ใช้บางคน (ไฟล์ของผู้ใช้ในโฮมไดเร็กตอรี่ที่ไม่ได้เป็นของผู้ใช้นั้น) คุณสามารถเพิ่ม '!' ไปที่-user other-userส่วนเพื่อค้นหาสิ่งที่ตรงกันข้าม ตัวอย่างเช่นfind . ! -user other-user.
Jon

-group old-groupบ่อยครั้งที่ดังกล่าวข้างต้นเป็นประโยชน์มากขึ้นเมื่อคุณเพิ่ม ด้วยวิธีนี้คุณสามารถรักษาความเป็นเจ้าของกลุ่ม (ผู้ดูแลระบบพนักงาน, sillyothergroupname)
brianlmerritt

ป.ล. - chown อาจต้องใช้ sudo
brianlmerritt

12

คุณสามารถใช้ได้

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


+1 แต่ที่จะไม่ทำงานใน OSX มันchownไม่ได้มีตัวเลือกที่ดูที่นี่
terdon

โอ๊ะแน่นอนฉันพลาด tag osx :) โหวตแล้ว @StephenTrapped up
Rik

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group *จะข้ามไฟล์ที่ซ่อนอยู่ในคำสั่งโฟลเดอร์ที่รัน แต่จะchown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group .ทำงานกับไฟล์ที่ซ่อนอยู่ในโฟลเดอร์หลักด้วย
Lashae

3

-hตัวเลือกในการเปลี่ยนแปลง chown ได้รับอนุญาตจากการเชื่อมโยงสัญลักษณ์ไฟล์ตัวเองและไม่ได้เป็นเพียงเป้าหมาย

ซึ่งอาจมีความสำคัญเมื่อทำสิ่งนี้ในโฟลเดอร์ไบนารีของซอฟต์แวร์ซึ่งใช้ลิงค์ symoblic เพื่อสลับระหว่างรุ่น

find . -user old-user -exec chown -h new-user:new-group {} \;

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