ルートシェルのディレクトリを一覧表示できますが、
root@ThinkPad:~# ll /media/
total 36
drwxr--r-- 6 root root 4096 2011-05-12 16:41 ./
drwxr-xr-x 22 root root 4096 2011-05-12 13:14 ../
drwxr-xr-x 5 root root 4096 2011-05-12 15:56 hd/
drwxr--r-- 2 root root 16384 2011-05-12 14:20 lost+found/
drwxr-xr-x 5 root root 4096 2011-05-12 16:34 main/
drwxr--r-- 4 root root 4096 2011-05-12 16:41 .Trash-0/
私のユーザーアカウントからではありません:
alex@ThinkPad:~$ ll /media/
ls: cannot access /media/..: Permission denied
ls: cannot access /media/hd: Permission denied
ls: cannot access /media/lost+found: Permission denied
ls: cannot access /media/.Trash-0: Permission denied
ls: cannot access /media/.: Permission denied
ls: cannot access /media/main: Permission denied
total 0
d????????? ? ? ? ? ? ./
d????????? ? ? ? ? ? ../
d????????? ? ? ? ? ? hd/
d????????? ? ? ? ? ? lost+found/
d????????? ? ? ? ? ? main/
d????????? ? ? ? ? ? .Trash-0/
ファイルが表示されない理由がわかりません(/media
にはa + r権限があります)。
コンテンツをリストするための前提条件の一種であるディレクトリを「入力」できるようにするには、+ x権限も必要です。
また、これはディレクトリ構造の最上位(ルート)からずっと先の要件であることに注意してください。/foo/bar/bazディレクトリに入るには、すべての中間ディレクトリに対する+ xパーミッションが必要です。
pathlld
スクリプトを使用します。 pathlld
は次のとおりです。
#!/bin/bash
# Show the permissions on all the directories leading from / to
# the parameter.
# Usage: $0 <file_or_dir> <...>
#
# $Header: /home/walt/bin/RCS/pathlld,v 1.4 2010/02/21 20:34:16 walt Exp $
#
#
function pathlld ()
{
if [ "$1" = "/" ] ; then
/bin/ls -ld /
else
parent="${1%/*}"
pathlld "${parent:-/}"
/bin/ls -ld "$1"
fi
}
force=0
if [ "$1" = "-f" ] ; then
force=1
shift
fi
# Make sure we got at least one filename or directory name
file_or_dir="$1"
file_or_dir="${file_or_dir:?'missing.'}"
while [ $# -ne 0 ] ; do
if [ $force -eq 1 -o -e "$1" ] ; then
case "$1" in
/* ) target="$1" ;;
* ) target="$PWD/$1" ;;
esac
pathlld "$target"
[ -L "$target" ] && /bin/ls -ldL "$target"
else
echo "Nonexistent file or directory: $1"
fi
shift
done
読み取り専用でマウントされたファイルシステムを検出しません。そのためにmount
を使用してください。