Xem quyền / chủ sở hữu của cây thư mục đầy đủ


27

Tôi nhớ làm gì đó như "XXX / home / user / dir / child / file" và nó đã trả về chủ sở hữu và / hoặc sự cho phép của:

/home
/home/user
/home/user/dir
/home/user/child
/home/user/child/file

Nhưng tôi không nhớ lệnh này là gì. Có ai có ý kiến ​​gì không?


Không thấy bất cứ điều gì khai sáng từ apropos modehoặc apropos permissionstrên OS X và Debian. Bạn có biết nền tảng / phân phối nào bạn đang sử dụng không? Nó có thể là một lệnh trang web địa phương? Bạn có thể kịch bản một công cụ như vậy bằng cách sử dụng dirnamestat.
mrb

Sử dụng Arch Linux và cài đặt vanilla khá đẹp nên không có quá nhiều công cụ bổ sung được cài đặt. Lưu ý rằng đó là quyền của chủ sở hữu VÀ / HOẶC, tôi không chắc chắn vào thời điểm này. Hoặc là sẽ hữu ích.
vui lòng xóa tôi vào

Câu trả lời:


31

Lệnh có thể là:

namei -m /home/user/dir/child/file

6
namei -molà tuyệt vời, nó cũng cung cấp cho bạn chủ sở hữu.
earthmeLon

2
THƯỞNG: namei sẽ không hiển thị linux ACL's hoặc SELinux MAC's. Tôi phát hiện ra rằng một ACL đã chặn nginx bằng cách kiểm tra thủ công vớisudo su nginx -s/bin/bash
Ray Foss

28

Tôi nghĩ rằng bạn có thể nghĩ về treelệnh. Ví dụ:

$ tree -pufid apps/glassfish3/ | less
apps/glassfish3
[drwxr-xr-x saml    ]  apps/glassfish3/bin
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/bin
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/config
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/doc-files
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/annotation
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/annotation/security
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/annotation/sql
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/decorator
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/ejb
[drwxr-xr-x saml    ]  apps/glassfish3/glassfish/docs/api/javax/ejb/embeddable
...
...

Các công tắc trên thực hiện như sau:

  • -p - quyền
  • -u - tên người dùng / người dùng
  • -f - đường dẫn đầy đủ
  • -i - không in các dòng thụt
  • -d - chỉ in thư mục

Tài liệu tham khảo


3
Tôi nghĩ rằng nó đã được yêu cầu hiển thị tổ tiên của /home/user/dir/child/filekhông phải trẻ em.
Raphael AhDR

@RaphaelAhrens - vâng tôi nhận ra điều đó nhưng không có lệnh nào tôi biết về điều đó chính xác, đó là lệnh cây thực hiện những gì tôi đã trình bày và nó giống với những gì OP đang nghĩ.
slm

-uthực sự cần thiết? Có vẻ như nó được mặc định ở đây (Tree ver. 1.6.0 trong GNU bash 4.2.45). Có một tùy chọn để tắt "tên người dùng / userid" không?
Nikos Alexandris

1
@NikosAlexandris - nếu tôi bỏ công tắc đó, tôi không nhận được tên người dùng. Ver của tôi: cây v1.6.0. Tôi đang dùng Fedora 19, GNU bash, phiên bản 4.2.45 (1) -release (x86_64-redhat-linux-gnu).
slm

"Mặc định" khác nhau giữa các phiên bản bash? Cảm ơn đã thông báo.
Nikos Alexandris

3

Sau khi cho nó một chút khó khăn, tôi đã nghĩ ra

#!/bin/sh
l_path=$1
while [ "$l_path" != / -a "$l_path" != . ]; do
     ls -ld $l_path
     l_path=$(dirname -- "$l_path")
done

Đầu ra trông như thế này

-rw------- 1 tant tant 181016423 Jun 25 23:49:17 2013 /home/tant/test_file
drwxr-xr-x 85 tant tant 5632 Jul  9 19:40:11 2013 /home/tant
lrwxr-xr-x 1 root wheel 8 Sep  4 23:53:27 2012 /home -> usr/home

Tôi hy vọng nó là ok theo thứ tự ngược lại.

Dựa trên các nhận xét, đây là một cách để liệt kê từ gốc trở xuống:

#!/bin/sh
l_path=$1
while [ "$l_path" != / -a "$l_path" != . ]; do
     ls -ld $l_path
     l_path=$(dirname -- "$l_path")
done | sed '1!G;h;$!d'

1
Bạn có thể đảo ngược với | tacnếu bạn có nó, hoặc | sed '1!G;h;$!d'nếu không.
mrb

2
Điều này sẽ phá vỡ cho các đường dẫn tương đối. Làm [ "$l_path" != / -a "$l_path" != . ]thay thế.

@Evan Teitelman dirname sẽ cung cấp đường dẫn đầy đủ
Raphael Ahrens

1
@RaphaelAhrens không, cuối cùng nó sẽ trả về một dấu chấm cho đường dẫn tương đối.
vội vàng

1
Ngoài ra, stat -lcó lẽ nên stathoặc ls -ld.

0

Trong thư mục mà bạn muốn biết quyền và chủ sở hữu của người quản lý:

for i in $(seq 0 $(pwd | tr -cd / | wc -c)) ; do pwd ; ls -lad ; cd .. ; done

Lưu ý rằng sau đó, bạn sẽ vào /:) nếu bạn muốn quay lại nơi bạn đang ở, bọc lệnh bên trong

HERE=$(pwd)
...
cd ${HERE}

-1

Lệnh bạn đang tìm kiếm quyền liệt kê và chủ sở hữu / nhóm là ls -l .

Tùy chọn -l được sử dụng cho định dạng danh sách dài.

ls -l / đường dẫn / đến / danh sách

Ngoài ra, nếu bạn muốn liệt kê và các tập tin ẩn thì thêm tùy chọn -a (tất cả) .

ls -al / đường dẫn / đến / danh sách

Ngoài ra, nếu bạn muốn liệt kê các quyền trong thư mục con của mình, hãy sử dụng tùy chọn -R (đệ quy) .

ls -Rl / đường dẫn / đến / danh sách

Cột đầu tiên hiển thị các quyền (đọc (r), ghi (w), thực thi (x)) và một số quyền đặc biệt (thư mục (d), - (tệp thông thường)) và cột thứ 3 và thứ 4 hiển thị cho bạn tệp / thư mục chủ sở hữu và nhóm tương ứng.


2
Tôi không nghĩ đó là những gì được yêu cầu. Có vẻ như người hỏi đang tìm kiếm một danh sách các quyền của các thư mục dẫn đến một tệp.
Mat
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.