Lihat izin / pemilik pohon direktori lengkap


27

Saya ingat melakukan sesuatu seperti "XXX / home / user / dir / child / file" dan mengembalikan pemilik dan / atau izin dari:

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

Tetapi saya tidak ingat apa perintah ini. Adakah yang tahu?


Tidak melihat sesuatu yang mencerahkan dari apropos modeatau apropos permissionsdi OS X dan Debian. Apakah Anda tahu platform / distribusi apa yang Anda gunakan? Mungkinkah itu perintah situs-lokal? Anda dapat membuat skrip alat seperti itu menggunakan dirnamedan stat.
mrb

Menggunakan Arch Linux, dan instalasi vanilla yang cantik sehingga tidak terlalu banyak alat tambahan yang diinstal. Perhatikan bahwa itu adalah izin pemilik DAN / ATAU, pada saat ini saya tidak yakin. Baik akan bermanfaat.
tolong hapus saya

Jawaban:


31

Perintahnya bisa saja:

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

6
namei -moBagus, itu juga memberi Anda pemilik.
earthmeLon

2
WASPADALAH: namei tidak akan menampilkan linux ACL atau SELinux MAC's. Saya tahu bahwa ACL memblokir nginx dengan memeriksa secara manual dengansudo su nginx -s/bin/bash
Ray Foss

28

Saya pikir Anda mungkin memikirkan treeperintah itu. Sebagai contoh:

$ 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
...
...

Switch di atas melakukan hal berikut:

  • -p - izin
  • -u - nama pengguna / pengguna
  • -f - jalur penuh
  • -i - jangan mencetak garis lekukan
  • -d - hanya mencetak direktori

Referensi


3
Saya pikir diminta untuk menampilkan leluhur /home/user/dir/child/filebukan anak-anak.
Raphael Ahrens

@ RaphaelAhrens - ya saya menyadari itu, tetapi tidak ada perintah yang saya tahu yang melakukan hal itu, namun ada perintah pohon yang melakukan apa yang saya tunjukkan dan itu mencurigakan mirip dengan apa yang dipikirkan OP.
slm

Apakah ini -ubenar - benar perlu? Tampaknya ini default di sini (Tree ver. 1.6.0 di bawah GNU bash 4.2.45). Apakah ada opsi untuk membungkam "nama pengguna / pengguna"?
Nikos Alexandris

1
@NikosAlexandris - jika saya menjatuhkan saklar itu saya tidak mendapatkan nama pengguna. Ver saya: tree v1.6.0. Saya menggunakan Fedora 19, GNU bash, versi 4.2.45 (1) -release (x86_64-redhat-linux-gnu).
slm

Beda "default" antara versi bash? Terima kasih telah menginformasikan.
Nikos Alexandris

3

Setelah memberikannya, saya menemukan ini

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

Outputnya terlihat seperti ini

-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

Saya harap tidak apa-apa karena urutannya terbalik.

Berdasarkan komentar, berikut cara daftar dari root ke bawah:

#!/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
Anda dapat membalikkan dengan | tacjika Anda memilikinya, atau | sed '1!G;h;$!d'jika tidak.
mrb

2
Ini akan memutuskan jalur relatif. Lakukan [ "$l_path" != / -a "$l_path" != . ]sebaliknya.

@Evan Teitelman dirname harus memberikan path lengkap
Raphael Ahrens

1
@ RaphaelAhrens tidak, itu akan mengembalikan titik untuk jalur relatif pada akhirnya.
buru

1
Juga, stat -lmungkin harus statatau ls -ld.

0

Dalam direktori yang Anda ingin tahu izin dan pemilik ancester:

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

Perhatikan bahwa setelah itu, Anda akan berada di /:) jika Anda ingin kembali ke tempat Anda sebelumnya, bungkus perintah di dalamnya

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

-1

Perintah yang Anda cari daftar izin dan pemilik / grup adalah ls-l .

Opsi -l digunakan untuk format daftar panjang.

ls -l / path / ke / daftar

Selain itu, jika Anda ingin daftar dan file yang disembunyikan kemudian tambahkan opsi -a (semua) .

ls -al / path / ke / daftar

Juga, jika Anda ingin membuat daftar izin di subdirektori Anda gunakan opsi -R (rekursif) .

ls -Rl / path / ke / daftar

Kolom pertama menampilkan izin (baca (r), tulis (w), jalankan (x)) dan beberapa izin khusus (direktori (d), - (file biasa)) dan kolom ke-3 dan ke-4 memperlihatkan kepada Anda file / direktori masing-masing pemilik dan grup.


2
Saya tidak berpikir itu yang diminta. Sepertinya penanya sedang mencari daftar izin direktori yang mengarah ke file.
Mat
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.