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


12

644(-rw-r--r--)のファイルがあり、-rw-rw-r--実行後に664()に変更したかった:

sudo chmod -664 my_file

ファイル許可は000(----------)に設定されました。

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


11
-644の前にあるのはなぜですか?試してくださいsudo chmod 644 my_file-644権利が削除されます。
ソレンA

回答:


34

を使用していますが-664664代わりに使用してください。そして、決して使用しないでsudo、あなたがする必要がいけないとき。それがあなたのファイルなら、あなたは必要ありませんsudo

chmod 644 my_file

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

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

番号は次のとおりです。

  • 1:実行する
  • 2:書く
  • 4:読む

そのため、 7771 + 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を残す)権限のみを持つファイルが作成されます。

ファイルには新しいファイルに対するデフォルトのパーミッションが設定されていたため644、実行したときchmod -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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.