chown không thay đổi liên kết tượng trưng


312

Tôi đang cố gắng thay đổi người dùng / nhóm liên kết tượng trưng bằng lệnh:

$ chown -h myuser:mygroup mysymbolic/ 

Nhưng nó không thay đổi. Tôi đang đăng nhập với quyền root. Người dùng / nhóm hiện tại được đặt thành root: root. Có chuyện gì?


Bạn sử dụng hệ điều hành nào? Theo trang manaul, tùy chọn -h chỉ ảnh hưởng đến các hệ thống có thể thay đổi quyền sở hữu liên kết tượng trưng.
Jichao

Bạn có đang gắn kết NFS không?
Ortomala Lokni

Bất cứ điều gì kết thúc bằng /một thư mục. Ý bạn là mysymbolic, đó là liên kết tượng trưng, ​​không phải mysymbolic/là thư mục mà nó trỏ đến.
David Schwartz

Câu trả lời:


381

Tôi đã đặt một dấu gạch chéo vào cuối mục tiêu:

chown -h myuser:mygroup mysymbolic/ 

chỉ cần loại bỏ dấu gạch chéo cuối cùng và hoạt động. Đây là cách chính xác:

 chown -h myuser:mygroup mysymbolic

9
không hoạt động với tôi trên Ubuntu
Radek

2
Wow, điều này khiến tôi mất hàng giờ để tìm thấy.
định nghĩa

54
@Radek Nó hoạt động với tôi trên Ubuntu miễn là tôi nhớ -hcờ.
IQAndreas

29
Hoạt động với tôi trên Ubuntu -hkhông có dấu gạch chéo.
Friederbluemle

8
Tôi không thể tin được sau 4 năm, tôi đã va vào chính quá khứ của mình cũng gặp phải vấn đề tương tự, đó là sai lầm '-h'!
Antony D'Andrea

29

Tôi đã thử điều này bản thân mình và nó hoạt động cho tôi. Nếu bạn có -h nó sẽ thay đổi chủ sở hữu của liên kết tượng trưng, ​​nhưng nếu bạn không thì nó sẽ thay đổi chủ sở hữu của tệp chứ không phải liên kết.

Nhưng nó dường như không hoạt động của liên kết tượng trưng được liên kết đến một thư mục


2
Đối với những gì nó có giá trị, trang man trên OS X rõ ràng hơn về tùy chọn -h so với trang trên (Arch) Linux. Nếu-tập tin là một liên kết tượng trưng, ​​hãy thay đổi ID người dùng và / hoặc ID nhóm của chính liên kết đó. Trực tiếp so với -h, --no-dereference ảnh hưởng đến các liên kết tượng trưng thay vì bất kỳ tệp tham chiếu nào (chỉ hữu ích trên các hệ thống có thể thay đổi quyền sở hữu của một liên kết tượng trưng) Hãy
Matijs

6

Tôi đã không thể vào chownmột thư mục ngay cả với -hnhưng sử dụng đường dẫn đầy đủ làm việc.

# 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

Là mục tiêu một tập tin hoặc một thư mục?

Nếu đó là một thư mục thì hãy thử -H (chữ hoa H)


mục tiêu là một thư mục

xem trả lời chỉnh sửa của tôi về thư mục

6
Xin lỗi vì sự cần thiết của luồng, nhưng tôi muốn chỉ ra rằng cú pháp đúng là với chữ thường 'h'.

4

đơn giản.

chown -h myuser:mygroup <symlink> [without trailing slash]

nên là đủ và làm việc  


3

Tạo lại liên kết đó bởi myuser tại nhà của myuser và mv liên kết này đến vị trí mục tiêu bằng sudo.

Ví dụ: (dưới dạng myuser), ln -s somedir/ linkname (sẽ là một liên kết bị hỏng nếu somedir / không tồn tại trong thư mục của người dùng)

Sau đó, sudo mv linkname targetlocation(sẽ trở thành một liên kết hợp lệ được cung cấp targetlocation/somedir/tồn tại)


Câu trả lời của bạn là không có chi tiết và khó hiểu đầy đủ. Vui lòng xem xét sửa đổi câu trả lời của bạn để cung cấp thêm chi tiết.
James Mertz

1

Tôi đã có một vấn đề tương tự. Đối với tôi, tôi không thể chmod liên kết tượng trưng ngay cả khi root bất kể tôi gọi chmod như thế nào. Để thêm nhầm lẫn cho điều này, nautilus đã hiển thị chủ sở hữu / nhóm là không có gì. Các chủ sở hữu chỉ là trống. Vì vậy, tôi đã cố gắng thay đổi liên kết tượng trưng bằng cách sử dụng nautilus chạy bằng root vì chmod không hoạt động và nautilus bị sập !!

Nhưng tôi nghĩ rằng tôi đã tìm ra vấn đề. Thư mục liên kết tượng trưng được trỏ đến có các quyền khác với liên kết tượng trưng. Vì vậy, tôi đã chọn thư mục đích (sử dụng -h) cho tên người dùng / nhóm của mình. Sau đó, chmod'ed liên kết tượng trưng cho cùng và nó đã làm việc! Và xem chi tiết của liên kết tượng trưng trong nautilus (có quyền root) giờ không còn gặp sự cố.

Vì vậy, đối với những người khác có vấn đề tương tự, hãy kiểm tra các quyền của thư mục / tệp đích và đảm bảo rằng nó tương thích với các quyền bạn đang đặt liên kết tượng trưng.


1

Lưu ý rằng việc thay đổi ownerliên kết tượng trưng chỉ có thể hoạt động nếu người dùng mới có thể truy cập mục tiêu mà bạn muốn gán nó.

Chẳng hạn, nếu mục tiêu của bạn nằm trong một thư mục mà người dùng bạn muốn gán cho nó không có đủ quyền, thì ln -s commandhành vi đó sẽ không làm gì cả.


1

Đối với Solaris (được xác minh trên S11.3) cho một liên kết tượng trưng đến một thư mục bạn sẽ cần phải chạy

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/
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.