web-dev-qa-db-ja.com

私はフォルダの所有者ですが、アクセスできません

システムに関するメモが入ったフォルダーがあります。

User1としてログインしています

cd masternotesは以下を生成します。

bash: cd: mastersnotes: permission denied

whoamiは以下を生成します:user1

ls -lは以下を生成します。

drw-rw-rw-. 2 user1 user1        4096 Mar 26 20:47 masternotes

ls -lディレクトリ内で生成されるもの:

-rw-rw-rw-. 7 user1 user1   345 Oct  7  2006 crontab
-rw-rw-rw-. 7 user1 user1   348 Oct  7  2006 crontab~
-rw-rw-rw-. 7 user1 user1  3702 Oct  7  2006 grep_usage.txt
-rw-rw-rw-. 7 user1 user1 91868 Oct  7  2006 lvm-layout-10-14-03.tif
-rw-rw-rw-. 7 user1 user1    30 Oct  7  2006 mysql
-rw-rw-rw-. 7 user1 user1 35764 Oct  7  2006 notes

フォルダーに対してchmod -R 666 masternotesを実行しました。

Rootにchownを実行し、rootにchgrpを実行して、user1に再び戻りました。

ルートは下降してフォルダに入り、ファイルを開くことができます。

user1はできません。

ここで何が起こっているのかについての手がかりはありますか?

4
msmith

これは permissions の問題であり、所有権の問題ではありません。

実行権限(xと省略され、-rw-にある場所に表示されます)は、私たちが示した権限からは著しく欠落しています。

実行許可は、ディレクトリの場合と通常のファイルの場合とでは大きく異なります。ディレクトリの場合、実行権限により、ディレクトリを入力する(つまり、cdする、またはファイルマネージャで開く)ことができます。また、ディレクトリ内のファイルへのアクセスを試行する機能も提供します(ただし、成功するかどうかは、アクセスされるファイルのアクセス許可を含む他のアクセス許可にも依存します)。

rootは、通常の方法では許可によって実際にバインドされていないため、ディレクトリに入ることができます。多くの方法で、rootとして実行されるコマンドとアプリケーションは、ユーザーの要望を順守するためにアクセス許可を尊重しようとします。ただし、rootには、任意のファイルまたはディレクトリに対して(OSが実行可能な)操作を実行する権限があります。 rootシェルでは、実行許可のないディレクトリへのcdingが成功します。

問題の解決策は以下を実行することです:

chmod u+x masternotes

これにより、ディレクトリのmasternotesu)実行可能権限(x)の所有者(+)が与えられます。

その後、通常のユーザーとして、ディレクトリに入り、そこにあるファイルにアクセスを試みることができます。

グループ所有者のメンバーにもこれを実行させたい場合は、代わりにこれを実行できます。

chmod ug+x masternotes

ただし、おそらくユーザー固有のグループ(フォルダを所有している)の唯一のメンバーです。

ここでのchmodコマンドは、notroot---として実行する必要がありますnotいずれかのコマンドにSudoが含まれています。あなたはフォルダをownしているので、自分で権限を変更することができます。あなたのためにrootは必要ありません。

実行許可を数値で設定することに興味がある場合、追加する数字ごとに(ゼロから始まる)覚えておいてください:

  • 読み取り用に4。
  • 書き込みの場合は2。
  • 実行する場合は1。

たとえば、誰もが読み取りおよび実行できるようにしたい場合some-fileが、所有者のみが書き込みできるようにすると、使用します:

chmod 755 some-file

Ubuntuのファイルのアクセス許可(フォルダーの実行可能ビットとその特別な意味を含む)をさらに読むには、 コミュニティドキュメントのFilePermissions をお勧めします。

5
Eliah Kagan