Windowsでは、ユーザーがlev5
ディレクトリに対する読み取り/書き込み権限を持っているが、すべての親アイテムに対する権限がない場合でも、cd c:\lev1\lev2\lev3\lev4\lev5
まだ機能しているようです。
Linuxでは、ユーザーに完全な権限lev5
とrx
権限を付与しても、//に対する権限がないと機能しません。lev4
setfacl
rx
lev1
lev2
lev3
cd /lev1/lev2/lev3/lev4/lev5
Windowsのように動作させる方法はありますか?
私が気づいた1つは、ユーザーのシェルが/lev1/lev2/lev3/lev4/
(sudoユーザーがいる場所)で始まり、/lev1/lev2/lev3/lev4/
そこからユーザーを使用するように切り替えると、sudo -u
ユーザーがcd ./lev5
。しばらくの間、これがユーザーと同じように、またはユーザーlev1
から親ディレクトリの存在を隠すセキュリティ機能であるかどうか疑問に思いlev2
ました。ユーザーシェルで実行している場合はフルパスが与えられるため、ユーザーがフルパスを使用するのを防ぐ必要はないようです。lev5
lev4
pwd
/lev1/lev2/lev3/lev4/lev5
cd
ベストアンサー1
/lev1/lev2/lev3/lev4/lev5
本質的に同様のものを 1 つとみなす方法や連続的なもの/
、 、 、 、 、 と見る 2 つの方法があります。前者を行うと、オブジェクトへのアクセスを要求できない理由はありません。ただし、これをシーケンスとして処理して一度に1つずつ解決することで、より複雑な作業を実行できます。たとえば、名前を解決するとネットワークストアに移動できます。コンピュータのオペレーティングシステムが、ユーザーがエンドオブジェクトにアクセスできるかどうかを判断できるように、接続できるすべてのネットワークストレージデバイスの詳細を知っていると期待するのは無理です。lev1
lev2
lev3
lev4
lev5
使用はpwd
欺瞞的かもしれません。これは通常シェルの組み込み機能であり、環境変数で初期化されますPWD
。過去にはに変更し、現在のディレクトリで現在の場所と一致する項目を見つける/bin/pwd
方法で機能しました。..
到達するまでこれを繰り返します/
。このアプローチでは、一部の親ディレクトリからアクセス権を削除するとエラーが発生する可能性があります/bin/pwd
。今日、Linuxでは、カーネルはユーザーの現在の場所を追跡し、システムコールのみを/bin/pwd
呼び出します。getcwd