chown ไม่ได้เปลี่ยนลิงค์สัญลักษณ์


312

ฉันพยายามเปลี่ยนผู้ใช้ / กลุ่มของลิงก์สัญลักษณ์ด้วยคำสั่ง:

$ chown -h myuser:mygroup mysymbolic/ 

แต่มันไม่เปลี่ยนแปลง ฉันเข้าสู่ระบบในฐานะ root ผู้ใช้ปัจจุบัน / กลุ่มถูกตั้งค่าเป็นรูท: รูท เกิดอะไรขึ้น


ระบบปฏิบัติการใดที่คุณใช้อยู่ตามหน้า manaul ตัวเลือก -h จะมีผลเฉพาะกับระบบที่สามารถเปลี่ยนความเป็นเจ้าของลิงก์สัญลักษณ์
Jichao

คุณติด NFS อยู่หรือเปล่า?
Ortomala Lokni

สิ่งที่ลงท้ายด้วย/คือไดเรกทอรี คุณหมายถึงmysymbolicลิงก์ซึ่งเป็นสัญลักษณ์ไม่ใช่mysymbolic/ไดเรกทอรีที่ชี้ไป
David Schwartz

คำตอบ:


381

ฉันใส่เครื่องหมายทับในตอนท้ายของเป้าหมาย:

chown -h myuser:mygroup mysymbolic/ 

เพิ่งลบเครื่องหมายทับในที่สุดและใช้งานได้ นี่คือวิธีที่ถูกต้อง:

 chown -h myuser:mygroup mysymbolic

9
ใช้งานไม่ได้กับฉันใน Ubuntu
Radek

2
ว้าวนี่ใช้เวลาหลายชั่วโมงในการค้นหา
กำหนด

54
@ Radek มันใช้งานได้กับฉันบน Ubuntu ตราบใดที่ฉันจำ-hธงได้
IQAndreas

29
ทำงานได้ดีสำหรับฉันบน Ubuntu ที่มี -hและไม่มีเครื่องหมายทับ
friederbluemle

8
ฉันไม่สามารถเชื่อหลังจาก 4 ปีฉันได้ชนตัวเองในอดีตของฉันที่มีปัญหาเดียวกัน missin '-h'!
Antony D'Andrea

29

ฉันลองตัวเองแล้วมันก็ใช้ได้ผลสำหรับฉัน หากคุณมี -h มันจะเปลี่ยนเจ้าของลิงก์สัญลักษณ์ แต่ถ้าคุณไม่ต้องการมันก็จะเปลี่ยนเจ้าของไฟล์เองไม่ใช่ลิงก์

แต่ดูเหมือนว่าการทำงานของลิงก์สัญลักษณ์จะลิงก์ไปยังไดเรกทอรี


2
สำหรับสิ่งที่คุ้มค่า man page บน OS X นั้นชัดเจนกว่าตัวเลือก -h มากกว่าหนึ่งบน (Arch) Linux “ -h หากไฟล์เป็นลิงค์สัญลักษณ์ให้เปลี่ยน ID ผู้ใช้และ / หรือ ID กลุ่มของลิงก์เอง” เทียบกับ“ -h, - ไม่มีการอ้างอิงถึงส่งผลกระทบต่อลิงก์สัญลักษณ์แทนไฟล์อ้างอิงใด ๆ (มีประโยชน์เฉพาะบน ระบบที่สามารถเปลี่ยนความเป็นเจ้าของ symlink ได้)”
Matijs

6

ฉันไม่สามารถไปยังไดเรchownกตอรีได้-hแต่ใช้การทำงานแบบเต็มพา ธ

# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# chown -h deploy:deploy apps/
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 root   root     32 Dec 30 09:02 apps -> /u/apps/
# pwd 
/var/www/html
# chown -h deploy:deploy /var/www/html/apps
# ls -al
drwxr-xr-x 2 deploy deploy 4096 Dec 30 10:29 .
drwxr-xr-x 3 deploy deploy 4096 Dec 30 08:59 ..
lrwxrwxrwx 1 deploy deploy   32 Dec 30 09:02 apps -> /u/apps/

5

เป็นเป้าหมายไฟล์หรือไดเรกทอรีหรือไม่

หากเป็นไดเรกทอรีให้ลอง -H (ตัวพิมพ์ใหญ่ H)


เป้าหมายคือไดเรกทอรี

ดูคำตอบที่แก้ไขแล้วของฉันเกี่ยวกับไดเรกทอรี

6
ขออภัยสำหรับกระทู้ที่มีลักษณะเฉพาะ แต่ฉันต้องการที่จะชี้ให้เห็นว่าไวยากรณ์ที่ถูกต้องอยู่กับตัวพิมพ์เล็ก 'h'


3

สร้างลิงก์นั้นอีกครั้งโดย myuser ที่บ้านของผู้ใช้และ mv ลิงก์นี้ไปยังตำแหน่งเป้าหมายโดย sudo

ตัวอย่างเช่น: (ในฐานะผู้ใช้ myuser), ln -s somedir/ linkname (จะเป็นลิงค์เสียถ้า somedir / ไม่มีอยู่ในไดเรกทอรีของผู้ใช้)

จากนั้นsudo mv linkname targetlocation(จะกลายเป็นลิงก์ที่ถูกต้องที่มีtargetlocation/somedir/อยู่)


คำตอบของคุณไม่มีรายละเอียดและเข้าใจยาก โปรดพิจารณาทบทวนคำตอบของคุณเพื่อให้รายละเอียดเพิ่มเติม
James Mertz

1

ฉันมีปัญหาที่คล้ายกัน สำหรับฉันฉันไม่สามารถ chmod ลิงก์สัญลักษณ์แม้ว่าจะเป็นรูทไม่ว่าฉันจะเรียก chmod ก็ตาม เพื่อเพิ่มความสับสนให้กับสิ่งนี้หอยโข่งจึงแสดงว่าเจ้าของ / กลุ่มไม่มีอะไร เจ้าของว่างเปล่า ดังนั้นฉันจึงพยายามเปลี่ยนการเชื่อมโยงสัญลักษณ์โดยใช้ nautilus ที่ทำงานเป็นรูทเนื่องจาก chmod ไม่ทำงานและ nautilus ขัดข้อง !!

แต่ฉันคิดว่าฉันพบปัญหา ไดเรกทอรีที่ลิงก์สัญลักษณ์ชี้ไปมีสิทธิ์แตกต่างจากลิงก์สัญลักษณ์ ดังนั้นฉันจึงเปลี่ยนไดเรกทอรีเป้าหมาย (โดยใช้ -h) กับชื่อผู้ใช้ / กลุ่มของฉัน จากนั้น chmod'ed ลิงก์สัญลักษณ์ก็เหมือนกัน และการดูรายละเอียดของลิงก์สัญลักษณ์ใน nautilus (ด้วยการอนุญาตรูท) จะไม่ล่มอีกต่อไป

ดังนั้นสำหรับผู้อื่นที่มีปัญหาที่คล้ายกันให้ตรวจสอบสิทธิ์ของไดเรกทอรีเป้าหมาย / ไฟล์และตรวจสอบให้แน่ใจว่าเข้ากันได้กับสิทธิ์ที่คุณตั้งค่าลิงก์สัญลักษณ์ไป


1

โปรดทราบว่าการเปลี่ยนownersymlink สามารถทำงานได้เฉพาะเมื่อผู้ใช้ใหม่สามารถเข้าถึงเป้าหมายที่คุณต้องการกำหนดให้

ตัวอย่างเช่นหากเป้าหมายของคุณอยู่ในโฟลเดอร์ที่ผู้ใช้ที่คุณต้องการกำหนดให้มีสิทธิ์ไม่เพียงพอln -s commandพฤติกรรมนั้นจะไม่ทำอะไรเลย


1

สำหรับ Solaris (ตรวจสอบแล้วใน S11.3) สำหรับลิงก์สัญลักษณ์ไปยังไดเรกทอรีที่คุณจะต้องเรียกใช้

root@ac11x017:/var/tmp$ ls -lal dumpdir
lrwxrwxrwx   1 root     root          16 Jun 15 09:08 dumpdir -> /data/dumpdir/
root@ac11x017:/var/tmp$ chown -RP oracle:oinstall dumpdir
lrwxrwxrwx   1 oracle   oinstall      16 Jun 15 09:09 dumpdir -> /data/dumpdir/
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.