Dizin ağacının tam sahibini / iznini görüntüle


27

"XXX / home / user / dir / child / file" gibi bir şey yaptığımı hatırlıyorum ve sahibi ve / veya iznini verdi:

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

Ama bu emrin ne olduğunu hatırlamıyorum. Bir fikri olan var mı?


OS X ve Debian'da apropos modeveya apropos permissionsüzerinde aydınlatıcı bir şey görmemek . Hangi platformu / dağıtımı kullandığını biliyor musun? Site yerel komutu olabilir mi? Senaryoda böyle bir aracı kullanarak olabilir dirnameve stat.
— mrb

Arch Linux ve güzel bir vanilya kurulumunu kullanmak, bu yüzden fazladan fazla araç yüklü değil. Sahipleri VE / VEYA izinleri olduğunu unutmayın, bu noktada emin değilim. Her ikisi de yararlı olacaktır.
— lütfen beni sil

Yanıtlar:


31

Komut olabilirdi:

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

6
namei -moharika, o da size sahibi verir.
— earthmeLon

2
DİKKAT: namei linux ACL'leri veya SELinux MAC'lerini göstermez. Bir ACL'nin sudo su nginx -s/bin/bash
— Ray Foss

28

Bence treeemirleri düşünüyor olabilirsiniz . Örneğin:

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

Yukarıdaki anahtarlar aşağıdakileri yapar:

  • -p - izinler
  • -u - kullanıcı adı / kullanıcı kimliği
  • -f - tam yol
  • -i - girinti satırları yazdırmayın
  • -d - yalnızca dizinleri yazdır

Referanslar


3
Sanırım /home/user/dir/child/fileçocukların değil atalarının gösterilmesi istendi .
— Raphael Ahrens,

@RaphaelAhrens - evet bunun farkındayım ancak bunun tam olarak bunu yaptığını bildiğim bir komut yok, ancak gösterdiğim şeyi yapan ve OP'nin düşündüğü şeye şüpheyle benzeyen bir ağaç komutu var.
— slm

Mı -ugerçekten gerekli? Burada varsayılan olarak görünüyor (Ağaç ver. 1.6.0 altında GNU bash 4.2.45). "Username / userid" sesini susturma seçeneği var mı?
— Nikos Alexandris,

1
@NikosAlexandris - bu anahtarı bırakırsam kullanıcı adını alamıyorum. Verim: ağaç v1.6.0. Fedora 19, GNU bash, sürüm 4.2.45 (1) - yeniden yayınladım (x86_64-redhat-linux-gnu).
— slm

Bash sürümleri arasında farklı "varsayılanlar"? Bilgilendirdiğin için teşekkürler.
— Nikos Alexandris

3

Biraz thougth verdikten sonra bununla geldim

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

Çıktı böyle görünüyor

-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

Umarım ters sırayla tamamdır.

Yorumlara göre, kökten aşağı doğru listelemenin bir yolu:

#!/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
Elinizde | tacvarsa veya | sed '1!G;h;$!d'yoksa , tersine çevirebilirsiniz .
— mrb

2
Bu göreceli yollar için kıracak. Do [ "$l_path" != / -a "$l_path" != . ]yerine.

@Evan Teitelman dirname tam yol vermeli
— Raphael Ahrens

1
@RaphaelAhrens hayır, sonunda göreceli yol için bir nokta döndürür.
— acele

1
Ayrıca, stat -lmuhtemelen olmalıdır statya ls -ld.

0

Atalarının izinlerini ve sahiplerini bilmek istediğiniz dizinde:

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

Bundan sonra, içinde /olacağınızı unutmayın :) bulunduğunuz yere geri dönmek istiyorsanız, komutu içeriye alın

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

-1

Aradığınız izinleri ve sahipleri / grupları listeleme komutu ls -l'dir .

-L seçeneği uzun liste formatı için kullanılır.

ls - l / yol / listeye

Ayrıca, listelenen dosyaları ve gizli dosyaları görmek istiyorsanız -a (tümü) seçeneğini ekleyin .

ls -al / yol / listeden

Eğer liste izinleri istiyorsanız Ayrıca, alt dizinleri kullanmak -R (yinelemeli) seçeneğini.

ls -Rl / yol / listeye

İlk sütun izinleri (okuma (r), yazma (w), yürütme (x)) ve bazı özel izinleri (dizinler (d), - (normal dosya)) gösterir ve 3. ve 4. sütun size dosya / dizini gösterir sırasıyla sahibi ve grubu.


2
Bunun için istendiğini sanmıyorum. Asker bir dosyaya yol açan dizinlerin izinlerinin bir listesini arıyor gibi görünüyor.
— Mat,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.