sudoを使用してフォルダにアクセスできません。

sudoを使用してフォルダにアクセスできません。

私は2年間Linuxを使ってきましたが、今日はとても奇妙なことに出会いました。サーバーにnginxをデプロイしましたが、これは対応するログフォルダです。

♪ log l -d nginx drwx------ 2 nginx nginx 4.0K Dec 7 03:15 nginx

(私はzshを使用しています。これは♪ log「log」というフォルダにあることを意味します。ご覧のように、「nginx」というフォルダにはないと思います。)

アクセスしようとすると、次のようになります。

♪ log cd nginx cd: permission denied: nginx ♪ log sudo cd nginx ♪ log

アクセス許可を766に変更した後でも、フォルダにはまだアクセスできません。

♪ log sudo chmod -R 766 nginx ♪ log l -d nginx drwxrw-rw- 2 nginx nginx 4.0K Dec 7 03:15 nginx ♪ log cd nginx cd: permission denied: nginx ♪ log sudo cd nginx ♪ log

誰でも私にこれを説明できますか?

ベストアンサー1

主な理由は、sudo cd nginxnginxフォルダに入って終了したからです。したがって、コマンドを開始する前の状態に戻りますsudo

これは例と同じで、sudo ls nginx/*内容を一覧表示して終了しますnginx folder

sudo要求された権限で新しいプロセスを作成し、要求されたコマンドを実行します。コマンドが完了するとsudoが終了し、前の状況に戻ります。

これを理解するには、ファイルシステム内の場所が使用中のシェルプログラムによって動的に管理されることを理解する必要があります。プロセスが分岐すると、シェルコンテキストが新しいプロセスにコピーされます。コピーコンテキストに対する各操作はそのコンテキストにのみ適用され、親コンテキストには影響しません。したがって、私たちの場合、修正されるのは親cd nginxプロセスのプロセスではなく、新しいプロセスのプロセスです。$PWD完了すると、関連コンテキストが削除され、変更されていない親コンテキストに戻ります。

他の人が説明したように、フォルダに移動するには実行権限(+x)も必要です。

おすすめ記事