Linuxを使用してAFSマウントのディレクトリにアクセスしようとしたときに予期しない動作が発生しました(具体的には、bash 4.3.11(1)-Ubuntu 14.04.1のリリース)。いくつかのケースでは、私は、私がアクセスできる必要があることをアクセスディレクトリにできないんだ、と他の人に私は思います、私はまったく権限を持っていないいくつかのディレクトリにアクセスすることができます。例えば:
$ ls -l
total 24
drwxr-xr-x 9 70296 root 6144 Jan 12 14:44 look_inside
drwx------ 278 someadmin operator 10240 Jan 17 17:54 private
<output truncated>
$ cd look_inside
-bash: cd: look_inside: Permission denied
$ ls look_inside
ls: cannot open directory look_inside: Permission denied
私は所有者ではなく、グループroot
にも属していないため、look_insideに全員の権限を適用する必要があります。誰もがそのすべての親ディレクトリr-x
に対するアクセス許可を持っlook_inside
ていますが、cd look_inside
またはを使用することはできませんls look_inside
。一方、権限がなくてもアクセスできますprivate
。
$ getfacl private
# file: private
# owner: cbl
# group: operator
user::rwx
group::---
other::---
$ ls -l private
total 560
<output truncated>
私もの所有者ではありませんprivate
。私はグループoperator
に属していますが、グループにはに対する権限がないため、それは問題ではありませんprivate
。それでも、私はプライベートにアクセスすることができます。とはいえ、r-x
権限があるかどうかに関係なく、その中のどのディレクトリにもアクセスできません(以下を参照)。もちろん、それは理にかなっています。なぜなら、私には彼らの親に対するxの許可がないからです。に通常のファイルがないためprivate
(または、少なくとも、実行時にディレクトリのみが表示されますls
)、通常のファイルがどのように影響を受けるかわかりません。
$ cd private
$ ls -l
total 560
drwx------ 3 someadmin operator 2048 Jan 16 14:11 someuser
drwxr-xr-x 3 otheradmin operator 2048 Jan 16 14:11 otheruser
<output truncated>
$ ls -l someuser
ls: cannot open directory someuser: Permission denied
$ ls -l otheruser
ls: cannot open directory otheruser: Permission denied
この動作の原因は何ですか?アクセスする方法はありますlook_inside
か?私(またはシステムの管理者)は、アクセスできることを心配する必要がありますprivate
か?
AFSは、従来のUnixパーミッション(それらを記憶していますが)もPOSIX ACL(で表示されるもの)も使用しませんgetfacl
。Unixパーミッションにはいくつかの例外があります(読み取りまたは書き込みのすべてのアクセスを削除するとchmod
、すべての人の関連するアクセスが削除されると思います)が、一般的に言えば、AFSは独自のACLシステムを使用します。
OpenAFSを使用していると仮定して、ファイルまたはディレクトリのアクセス許可を確認するには、を実行しfs listacl <path>
ます。アクセス許可を設定するには、アクセス権がある場合は、を実行しfs setacl <path> <user> <perms>
ます。AFS ACLによって付与されるchmod
アクセス許可は、Unixスタイルのアクセス許可、POSIX ACL、および私が知っている他のアクセスシステムの両方とは異なります。これらについてはここで詳しく説明しますが、簡単に説明します。7つの権限があり、通常は1文字で表されます。それらは、 'r'ead、' l'ist、 'w'rite、' i'nsert、 'd'elete、loc'k'、および 'a'dminです。
したがって、たとえば、ファイルを表示および読み取ることができるディレクトリは次のようになります。
$ fs listacl somedir
Access list for somedir is
Normal rights:
system:anyuser rl
system:administrators rlidwka
つまり、「system:anyuser」(世界中の誰でも)は、ディレクトリの内容を「l」、そのディレクトリ内のファイルの内容を「r」することしかできません。一方、「system:administrators」(管理者ユーザーに使用されるグループ)は何でもできます。
アクセスできないディレクトリは次のようになります。
$ fs listacl privdir
Access list for privdir is
Normal rights:
system:administrators rlidwka
foouser rlidwka
つまり、管理者と「foouser」だけがそのディレクトリに対して何でもできるということです。ただし、ディレクトリにまったくアクセスできない場合は、アクセスできないと思いますfs listacl
ので、代わりにエラーメッセージが表示されます。
OpenAFSを使用しておらず、代わりにアップストリームLinuxソースツリー( "kAFS")でAFS実装を使用している場合、fs
コマンドはありません。その実装でAFSACLを表示することは不可能だと思いますが、それについては間違っている可能性があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加