web-dev-qa-db-ja.com

'chmod -644'はファイル許可を000に設定します

644(-rw-r--r--)を664(-rw-rw-r--)、実行後:

Sudo chmod -664 my_file

ファイルの権限は000(----------)。

アクセス許可を000以外の何かに変更しようとしても、うまくいかないようです。ここで何が欠けていますか?

12
illgoforit

-664を使用していますが、代わりに664を使用してください。また、never必要がない場合はSudoを使用します。それがあなたのファイルであれば、Sudoは必要ありません。

chmod 644 my_file

モードの前に-を付けてchmodを実行すると、そのモードが削除されます。 man chmod(鉱山を強調)を参照してください。

演算子+を使用すると、選択したファイルモードビットが各ファイルの既存のファイルモードビットに追加されます。 -削除されます;および=はそれらを追加し、ディレクトリの言及されていないセットユーザーおよびグループIDビットは影響を受けないことを除いて、言及されていないビットを削除します。

番号は次のとおりです。

  • 1:実行する
  • 2:書き込み
  • 4:読む

したがって、777権限を持つファイルは、1 + 2 + 4 = 7であるため、誰もが3つすべてを実行する権利を持っていることを意味します。したがって、権限を7に設定すると、読み取り、書き込み、実行が許可されます。

モードが777のファイルから始める場合:

$ ls -l my_file 
-rwxrwxrwx 1 terdon terdon 0 May 28 13:45 my_file

そしてchmod -644を実行すると、ビット644が削除され、モードが133のファイルが作成されます。

$ chmod -644 my_file; ls -l my_file 
---x-wx-wx 1 terdon terdon 0 May 28 13:45 my_file

これは、所有者の権限から6(読み取り(4)+書き込み(2))を削除し、グループ(その他)およびその他の権限から1(実行)セットと4(読み取り)のみを残したためです。その結果、所有者には実行(1)権限のみがあり、残りには書き込みと実行(4の設定を解除、1と3を残す)権限のみのファイルが作成されます。

ファイルにはおそらく新しいファイルに対するデフォルトのアクセス許可があったため、644chmod -644 my_fileを実行すると、設定されたすべてのアクセス許可ビットが削除され、誰にも許可のないファイルが取得されました。

$ ls -l my_file 
-rw-r--r-- 1 terdon terdon 0 May 28 13:45 my_file
$ chmod -644 my_file
$ ls -l my_file 
---------- 1 terdon terdon 0 May 28 13:45 my_file
34
terdon