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

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