Ubuntu tương đương với cờ OSX `chmod -h` là gì?


13

Trong OSX tôi có thể thiết lập các quyền của chính liên kết tượng trưng (thay vì điều nó trỏ đến bằng cách sử dụng -h). Từ trang người đàn ông:

 -h      If the file is a symbolic link, change the mode of the link itself rather than the file that the link points to.

Trong Ubuntu 14.04, tôi cố gắng đặt quyền của liên kết tượng trưng, ​​nhưng nó chỉ được đặt trên mục tiêu liên kết tượng trưng.

Nó liên quan đến một liên kết tượng trưng từ /home/nagios/.ssh/someprivatekeyđến /somewhere/else/privatekey, vì vậy quyền rất quan trọng đối với ssh. Làm thế nào tôi có thể đạt được điều này?


Vì vậy, tại sao bạn cần symlink này?
muru

1
Bạn có chắc chắn ssh quan tâm đến các quyền trên liên kết tượng trưng chứ không phải các quyền trên / ở đâu đó / other / privatekey?
Random832

@ Random832 Có, tôi có thể đã rút ra kết luận sai, tôi cũng hơi bối rối về cách các quyền được hiển thị trong ls -lđầu ra ( lrwxrwxrwx).
Ray Burgemeestre

@muru Tôi đang tạo một hình ảnh Docker (buildserver) sử dụng khóa ssh để truy cập tất cả các loại máy chủ. Tôi không muốn đặt khóa riêng bên trong vì những lý do khác nhau (ví dụ: nếu tôi muốn lưu trữ nó trên docker hub). Vì vậy, tôi đã liên kết nó và chỉ đến một ổ đĩa chỉ được gắn khi hình ảnh được chạy. Mặc dù, khi nghĩ về nó, tôi cũng có thể thay đổi vị trí quan trọng bằng cách sử dụng .ssh/config:)
Ray Burgemeestre

Câu trả lời:


18

Không thể. Không có cách nào vì các quyền trên một liên kết tượng trưng là vô nghĩa (một liên kết tượng trưng không phải là một tệp; nó chỉ trỏ đến một tệp). Cách để làm điều này với Linux là thông qua ACL .

symlink được giải thích là ...

Các giá trị của các bit chế độ tệp cho liên kết tượng trưng được tạo là không xác định. Tất cả các giao diện được chỉ định bởi POSIX.1-2008 sẽ hoạt động như thể luôn luôn có thể đọc được nội dung của các liên kết tượng trưng, ​​ngoại trừ giá trị của các bit chế độ tệp được trả về trong trường st_mode của cấu trúc stat là không xác định.


Sự khác biệt là ở đây: chmodchmod ... đó là BSD so với Linux.


Không chắc chắn nếu nó quan trọng nhưng liên quan đến SSH: nó sử dụng stat (2) , không phải lstat (2) để có được quyền.

  • stat () thống kê tập tin được chỉ đến bởi đường dẫn và điền vào buf.
  • lstat () giống hệt với stat (), ngoại trừ nếu đường dẫn là một liên kết tượng trưng, ​​thì chính liên kết đó là stat-ed, không phải là tệp mà nó đề cập đến.

2
Khả năng đặt quyền trên các liên kết tượng trưng không được chỉ định trong ngay cả phiên bản mới nhất, đó là tiện ích mở rộng BSD.
Random832

1
@ Random832 hmm có thể hiệu quả hơn có. Tôi đã đọc đoạn đó hôm nay trên SO nhưng không kiểm tra gì về điều này: D
Rinzwind

4
Ngẫu nhiên POSIX chỉ định fchmodatchức năng, có thể được sử dụng để thay đổi chế độ liên kết tượng trưng (tính năng tùy chọn - các hệ thống không hỗ trợ chức năng này, bao gồm cả Linux, trả về lỗi EOPNOTSUPP), nhưng không có gì trong chmodlệnh sử dụng điều này. Chỉ -Rđược định nghĩa trong POSIX.
Random832

2
quyền symlink là vô nghĩa trên Linux . Trên các hệ thống mà bạn có thể thay đổi chúng (bằng lchmod(2)hoặc fchmodat(2)...), chúng có nghĩa (cho phép / từ chối readlink()(đọc) hoặc giải quyết đường dẫn thông qua chúng (thực thi)). Quyền viết thường không mặc dù vì bạn không thể thay đổi mục tiêu của một liên kết tượng trưng.
Stéphane Chazelas

Unix sẽ không đồng ý với bạn rằng "một liên kết tượng trưng không phải là một tệp". Một symlink là một tập tin đặc biệt .
hobbs

9

Bạn không thể. Cuộc chmodgọi hệ thống cơ bản đơn giản là không hỗ trợ điều này trong Linux và đối với vấn đề đó, Linux cũng không quan tâm đến các quyền của liên kết. Từ man chmod:

chmod never changes the permissions of symbolic links; the chmod system
call cannot change their permissions.  This is not a problem since  the
permissions  of  symbolic  links  are  never  used.   However, for each
symbolic link listed on the command line, chmod changes the permissions
of  the  pointed-to  file.   In  contrast, chmod ignores symbolic links
encountered during recursive directory traversals.

Đối với các liên kết cứng hoặc liên kết gắn kết, quyền của nguồn được sử dụng, do đó, không có cách nào trong ba cách tiêu chuẩn để phản ánh nội dung của tệp ở nơi khác có thể giúp bạn trong việc này.


Câu trả lời này cũng rất rõ ràng với tôi, xin lỗi tôi chỉ có thể chấp nhận một câu trả lời!
Ray Burgemeestre
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.