chmod計算機

Linuxのファイルパーミッションを、数値と文字の両方向で計算します。所有者、グループ、その他のユーザーごとに読み取り・書き込み・実行にチェックを入れると、8進数のモードと実行するコマンドが表示されます。755、rwxr-xr-x、u+x、ls -lの行を貼り付ければ、その意味も正確にわかります。

計算はブラウザー内で完結 · 外部には何も送信されません · POSIXとGNU coreutilsの動作に準拠
ファイル
ディレクトリ

755 を入力するか、rwxr-xr-x や ls -l の行をそのまま貼り付けます。u+x や go-w でモードを変更することもできます。

種類
読み取り4書き込み2実行1数字
所有者4+2+1=7
グループ4+1=5
その他のユーザー4+1=5
特殊ビットなし=0

わかりやすく言うと

  • 所有者は次の操作ができます:読み取り、内容の変更、実行。
  • グループとその他のユーザーは次の操作ができます:読み取り、実行。
  • このファイルは実行できます。

計算はブラウザー内で行います。入力した内容が外部に送られることはありません。

chmodとは?何をするコマンド?

chmod は、ファイルを誰が読み取り、書き込み、実行できるかを設定するコマンドです。モードは12ビットで、通常は 755、644、2775 のように3桁か4桁の8進数で書きます。

3つの桁はそれぞれクラス(ファイルの所有者、ファイルのグループ、その他のユーザー)に対応し、各桁は3つの数の合計です。読み取りは4、書き込みは2、実行は1です。つまり、7は読み取り・書き込み・実行、5は読み取りと実行、6は読み取りと書き込み、4は読み取りのみです。仕組みはこれだけです。chmod 755 script.sh は、所有者が7、グループが5、その他のユーザーが5という意味です。

4桁目がある場合、それは3つの特殊ビット(setuidが4、setgidが2、stickyが1)を表します。どれも設定されていなければ省略されます。上の計算機は4桁すべてと各桁の計算を同時に表示するので、数字を調べ直す必要がなくなります。

モードは12ビットchmod 755 script.sh
変更前script.sh
特殊s4s2t10
所有者r4w2x16
グループr4w2x14
その他のユーザーr4w2x14
-rw-r--r--0644
変更後script.sh
特殊s4s2t10
所有者r4w2x17
グループr4w2x15
その他のユーザーr4w2x15
-rwxr-xr-x0755
chmod 755 は、モードのすべてのビットを一度に設定します。644からだと、3つのクラスの実行ビットが1つずつオンになります。各クラスの3ビットを合計すると、8進数の1桁になります。
chmod計算機でモード755を表示した画面:パーミッションの表、8進数の各桁、文字表記、chmodコマンドchmod計算機でモード755を表示した画面:パーミッションの表、8進数の各桁、文字表記、chmodコマンドチェックか入力表と入力欄は連動しています。どちらかを変更すると、残りも更新されます。各桁の計算クラスごとに4 + 2 + 1で計算するので、数字を暗記する必要はありません。何でも貼り付け755、rwxr-xr-x、u+x、ls -lの行のどれでも読み取れます。コマンド選んだモードから、正しい桁数と、ファイルのモードをつぶさない再帰用の形で作成します。意味の説明わかりやすい文章と、そのモードに必要な警告を表示します。
モード755を分解した画面です。パーミッションの表、各桁の計算、文字表記、実行するコマンドを表示します。番号を選ぶと、各部分に何が表示されているかを確認できます。

Linuxのファイルパーミッションの仕組み

どのファイルにも、所有者、グループ、モードがあります。モードは3つのクラスそれぞれに3つの権限(合計9ビット)を与えるもので、ファイルの種類を表す文字の直後に、ls -l はまさにこの9文字を出力します。

-rw-r--r-- は、所有者が読み取りと書き込みでき、グループとその他のユーザーは読み取りしかできないファイル(-)で、モードは644です。drwxr-xr-x は755のディレクトリ(d)です。先頭の文字は種類を表し、- はファイル、d はディレクトリ、l はシンボリックリンク、b、c、p、s は特殊な種類です。これらの行を計算機に貼り付けると、モードと種類を読み取ります。

ディレクトリでは、3つの権限の意味がファイルとは異なります。読み取りがあると、中の名前を一覧できます。実行があると、中に入り、名前がわかっているファイルにアクセスできます。書き込みは、実行と組み合わせたときに、項目の作成と削除ができます。ファイルの削除がファイル自身ではなくディレクトリのパーミッションで決まるのは、このためです。読み取りだけで実行がないディレクトリは、一覧は見えても中を開けません。

ls -l が最初に出力するものls -l notes.txt
パーミッションファイルの場合ディレクトリの場合
r4中身を読み取る中の名前を一覧表示する
w2中身を変更する項目の作成、名前変更、削除をする
x1プログラムとして実行する中に入り、中のものを開く

先頭のその他の文字:d はディレクトリ、l はシンボリックリンク、b、c、p、s は特殊な種類です。

chmod 755とは?意味を解説

755は、所有者がファイルを読み取り・書き込み・実行でき、それ以外の人は読み取りと実行はできるが変更はできない、という意味です。ディレクトリやプログラムの標準的なモードです。

桁ごとに見ると、7 = 4 + 2 + 1なので、所有者は読み取り、書き込み、実行ができます。5 = 4 + 1で、グループとその他のユーザーは、どちらも読み取りと実行ができます。文字で書くと rwxr-xr-x、シンボリックな書き方では chmod u=rwx,g=rx,o=rx です。

人が入れるようにしたいディレクトリや、実行させたいスクリプトやバイナリに使います。秘密のファイルには使わないでください。最後の5は、そのマシンのすべてのアカウントがファイルを読み取れるという意味だからです。Webサーバーのファイルについて、WordPress自身のドキュメントでは、ディレクトリは755または750、ファイルは644または640が推奨されています。

755を桁ごとにchmod 755
7=r4w2x14+2+1rwx所有者
5=r4-2x14+1r-xグループ
5=r4-2x14+1r-xその他のユーザー
使う場面
  • 人が入る必要があるディレクトリ
  • スクリプトとプログラム
使わない場面
  • 秘密のもの:全員が読み取れます

WordPress自身のドキュメント:ディレクトリは755または750、ファイルは644または640。

chmod 644と755の違い:どちらを使う?

ファイルは644、ディレクトリと実行が必要なものは755です。違いは実行ビットだけです。

644は rw-r--r-- で、所有者は変更でき、全員が読み取れますが、誰も実行できません。HTML、CSS、画像、設定ファイル、ソースファイルに適しています。755は rwxr-xr-x で、644に3つのクラスすべての実行ビットを加えたものです。ディレクトリにはこれが必要で、ないと誰も中に入れません。スクリプトにも必要で、ないとシェルが実行を拒否します。

避けたいのは、サイト全体に chmod -R 755 を実行することです。すべての画像とすべての .php ファイルが実行可能になってしまいます。この計算機が出力する2つの find コマンドなら、ブログ記事から拾ったモードの組み合わせではなく、あなたが選んだモードで、ディレクトリとファイルに別々のモードを1回で設定できます。

違いは実行ビットだけ644 · 755
644
読み取り書き込み実行
所有者rw-6
グループr--4
その他r--4

ファイル:HTML、CSS、画像、設定ファイル、ソースコード

755
読み取り書き込み実行
所有者rwx7
グループr-x5
その他r-x5

ディレクトリ、スクリプト、プログラム

逆にした場合
  • 755755のファイルは実行できます。chmod -R 755 では、すべての画像と .php ファイルも実行できます。
  • 644644のディレクトリは名前を表示しますが、誰も中に入れず、中のものも開けません。

chmod 777とは?安全なのか

777は、そのマシンのすべてのアカウントがファイルを読み取り、変更し、実行できるという意味です。正しい解決策になることはほとんどなく、WordPress自身のドキュメントも、どのディレクトリにも777を設定してはいけないとしています。

誰でも書き込める状態では、ログインできる人なら誰でも、あるいは侵害されたプロセスを含む、どのユーザーとして動いているものでも、ファイルの内容を置き換えられます。そのファイルがWebサーバーの実行するスクリプトなら、サーバーを乗っ取られます。WordPressのパーミッションのページは、ディレクトリは755または750、ファイルは644または640を推奨し、アップロード用のディレクトリでも、どのディレクトリも777にしてはいけないとしています。

Webアプリケーションがディレクトリに書き込めないときは、モードではなく所有者かグループを直します。Webサーバーが動いているユーザーに chown するか、そのユーザーを共有グループに追加して775にします。この計算機は、全員が書き込めるモードになると必ず警告します。ファイルでは常に、ディレクトリでは、stickyビットで互いのファイルの削除を防いでいる場合を除いて警告します。

777で書き込めるのは誰かchmod 777
777全員が変更できます
読み取り書き込み実行
所有者rwx7
グループrwx7
その他rwx7
  1. 1どのアカウントでも、そのアカウントで動くどのプロセスでも
  2. 2スクリプトを置き換え
  3. 3Webサーバーがそれを実行します
ドキュメントが求めていること

WordPress · ディレクトリは755または750、ファイルは644または640。

「アップロード用のディレクトリも含め、どのディレクトリにも777を設定してはならない。」

解決するのはモードではなく、所有者かグループです。Webサーバーのユーザーに chown するか、グループを共有して775にします。

SSHの鍵のパーミッションが「too open」と言われるのはなぜ?

OpenSSHは、所有者以外が読み取れる秘密鍵を使うことを拒否します。鍵は600、.ssh ディレクトリは700にしてください。

正確なメッセージは Permissions 0644 for '<path>' are too open. で、続いて It is required that your private key files are NOT accessible by others. と表示されます。判定は単純で、自分が所有するファイルに、グループまたはその他のビットが1つでも設定されていれば、鍵は拒否されます。640でも失敗するのはこのためで、答えが「644より少しだけ厳しく」ではなく600になる理由でもあります。

chmod 600 ~/.ssh/id_ed25519 と chmod 700 ~/.ssh で解決します。公開鍵は誰が読み取れても構いません。ここで問題になるのは、秘密鍵とディレクトリだけです。上のよく使うモードでSSH鍵を選ぶと、計算機が2つのコマンドを出力します。

sshが出力する内容
$ssh you@server.example
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/home/you/.ssh/id_ed25519' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
OpenSSHが確認すること
ファイルと、通過するモード
  • ~/.ssh/700drwx------ディレクトリ
  • id_ed25519600-rw-------あなたの秘密鍵
  • id_ed25519.pub644-rw-r--r--公開鍵:誰でも読み取れます
  • config600-rw-------他の人は書き込み不可
ビットごとの判定
  • 644rw-r--r--拒否
  • 640rw-r-----拒否
  • 600rw-------使用可
  • 400r--------使用可

グループとその他のユーザー:すべてオフ

シンボリックモード:u、g、o、aと+、-、=

chmod u+x script.sh は、他のビットに触れずに1つのビットだけを追加します。+ は追加、- は削除、= はクラスを指定した内容ちょうどに設定します。

書式は [対象][演算子][権限] で、複数の指定はカンマで区切ります。u は所有者、g はグループ、o はその他のユーザー、a は3つすべてです。たとえば、go-w はグループとその他のユーザーから書き込みを外し、a=rwx はすべてを設定し、u=rw,go=r は644の別の書き方です。これらを上の計算機に貼り付けると、変更前と変更後でどのビットが変わるかが表示されます。

書式には間違えやすい点が2つあり、計算機は両方に従います。X(大文字のX)は、ディレクトリか、どこかにすでに実行ビットがあるファイルにだけ実行ビットを追加します。そのため、chmod -R u=rwX,go=rX は、ファイルとディレクトリが混在するツリーでも安全です。もう1つは、対象のクラスをまったく指定しない指定(+x など)は a+x と同じではないことです。umaskで設定されているビットは変更されないので、通常のumask 022では、644のファイルに chmod +rwx を実行すると755になり、chmod a+rwx では777になります。

対象 · 演算子 · 権限chmod u+x script.sh
  • u所有者
  • gグループ
  • oその他のユーザー
  • a3つすべて
  • +追加
  • -削除
  • =ちょうどこの内容に設定
  • r読み取り
  • w書き込み
  • x実行
  • Xディレクトリと、すでに実行できるファイルにだけ実行
  • ssetuidまたはsetgid
  • tsticky
具体例
変更変更前変更後
u+x644rw-r--r--744rwxr--r--所有者の実行を追加。他は変更なし。
go-w775rwxrwxr-x755rwxr-xr-xグループとその他のユーザーから書き込みを削除。
a=r755rwxr-xr-x444r--r--r--3つすべてを読み取りだけに設定。
u=rw,go=r777rwxrwxrwx644rw-r--r--3つの指定:644の別の書き方。
+rwx644rw-r--r--755rwxr-xr-xクラス指定なし:umask(022)のビットは設定されないので、グループとその他のユーザーに書き込みは付きません。
a+rwx644rw-r--r--777rwxrwxrwxaを付けると、umaskは関係せず、すべて設定されます。
a+Xディレクトリの場合644rw-r--r--755rwxr-xr-xディレクトリへの大文字のX:ディレクトリなので、実行を追加。
a+Xファイルの場合644rw-r--r--644rw-r--r--誰も実行できないファイルへの大文字のX:何も追加されません。

setuid、setgid、stickyビット

4桁目です。ファイルでは、setuidとsetgidがプログラムの実行アカウントを変えます。ディレクトリでは、setgidが新しいファイルのグループを決め、stickyビットが削除できる人を決めます。

実行ファイルのsetuid(4000)は、あなたではなくファイルの所有者として実行されるようにします。passwd がsetuidでインストールされているのは、パスワードを変更するときにrootの権限で動くためです。setgid(2000)は、グループについて同じことをします。ディレクトリでは、setgidは別のもっと便利な働きをします。中に作られる新しいファイルが、作成者のグループではなくディレクトリのグループを引き継ぐので、共有プロジェクトのフォルダが共有のまま保たれます。Linuxでは、ディレクトリのsetuidビットの意味は定められていません。macOSやBSDでは、ファイルシステムがそのオプション付きでマウントされていれば、新しいファイルがディレクトリの所有者になります。

ディレクトリのstickyビット(1000)は、互いのファイルの削除を防ぎます。項目を削除または名前変更できるのは、ファイルの所有者、ディレクトリの所有者、rootだけです。/tmp がモード1777なのはこのためで、誰でも書き込めますが、他の人の作業を削除することはできません。通常のファイルでは、macOSとBSDはstickyビットを無視し、GNUのマニュアルでは、一部の古いシステムでのみ意味があるとされています。落とし穴が1つあります。chmod 755 somedir(chmod 0755 somedir も同じ)は、ディレクトリにすでにあるsetgidビットを解除しません。GNUのchmodは、5桁未満の数値モードでは意図的にそれらを残すためです。POSIXが求めているのは、8進数の形が通常のファイルでそれらを解除することだけです。g-s を使うか、5桁の chmod 00755 を使ってください。計算機は、それが必要なときは5桁の形で出力します。

setuid4755

プログラムが、あなたではなくファイルの所有者として実行されます。

Linux-rwsr-xr-x root root /usr/bin/passwd

passwd はこの方法でインストールされているので、パスワードを変更するときにrootの権限で動きます。

ディレクトリでは、Linuxに定められた意味はありません。macOSとBSDでは、ファイルシステムがそのオプション付きでマウントされていれば、新しいファイルがディレクトリの所有者になります。

setgid2775

ディレクトリでは、新しいファイルが、あなたのグループではなくディレクトリのグループになります。

Linuxdrwxrwsr-x you devs project/

共有プロジェクトのディレクトリは共有のまま保たれ、新しいファイルはすべてチームのものになります。

macOSとBSDでは、このビットの有無にかかわらず、新しいファイルは常にディレクトリのグループになります。

sticky1777

ディレクトリでは、ファイルを削除または名前変更できるのは、ファイルの所有者、ディレクトリの所有者、rootだけです。

macOSdrwxrwxrwt root wheel /private/tmp

/tmp には誰でも書き込めますが、他の人のファイルは誰も削除できません。

ファイルのstickyビットは、macOSとBSDでは無視されます。

GNUの落とし穴:ディレクトリへの chmod 755 は、setgidビットを残します。

$chmod 755 project → drwxr-sr-x5桁か文字表記で解除します:$chmod 00755 project → drwxr-xr-x$chmod g-s project → drwxr-xr-x

umask:新しいファイルのモード

新しいファイルは666、新しいディレクトリは777から始まり、umaskに設定されたビットがすべて解除されます。通常のumask 022では、644と755になります。

umaskは引き算ではなくマスクです。umaskに設定されたビットが、プログラムが要求したモードからすべて解除されます。umask 077 なら、新しいファイルは600、新しいディレクトリは700で、最初から非公開になります。umask 002 なら664と775で、グループも書き込めます。

ファイルの基本モードには実行ビットがもともとないので、umaskでファイルが実行可能になることはありません。777から始まるのはディレクトリだけです。作成したばかりのスクリプトが、chmod +x を実行するまで実行できないのはこのためです。上のumaskタブに切り替えると、任意のumaskの結果がわかり、どちらの結果もそのまま計算機で開けます。

ビットごとに解除umask 022
新しいファイル
初期値rw-rw-rw-666
umask····w··w·022
結果rw-r--r--644
新しいディレクトリ
初期値rwxrwxrwx777
umask····w··w·022
結果rwxr-xr-x755
よく使うumaskの値
umask新しいファイル新しいディレクトリ
022644 rw-r--r--755 rwxr-xr-x
002664 rw-rw-r--775 rwxrwxr-x
027640 rw-r-----750 rwxr-x---
077600 rw-------700 rwx------

umaskでファイルが実行可能になることはありません。新しいファイルには、残すべき実行ビットがもともとありません。

フォルダとその中身をまとめて変更する方法

chmod -R 755 folder は、ディレクトリとファイルに同じモードを設定するため、すべてのファイルが実行可能になります。2つの find コマンドを使えば、それぞれに合ったモードを設定できます。

find folder -type d -exec chmod 755 {} + と find folder -type f -exec chmod 644 {} + は、それぞれツリーを1回たどって、ディレクトリとファイルに別々に設定します。計算機は、固定の組み合わせではなく、あなたが選んだモードで両方を出力します。末尾の + は、ファイルをできるだけ少ない回数の chmod にまとめるので、大きなツリーで効果があります。

もう1つの安全な方法は、大文字の X です。chmod -R u=rwX,go=rX folder は、ディレクトリと、すでに実行できるファイルにだけ実行ビットを追加します。再帰的な変更のあとは、stat -c '%a %n' folder/* で、1つ下の階層をすべて確認できます。

1つのフォルダ、4つの方法
フォルダ現在1234
site/755755644755755
index.html644755644644644
app.php644755644644644
deploy.sh755755644644755
img/755755644755755
logo.png644755644644644
  1. 1$chmod -R 755 siteすべてのファイルを実行できる
  2. 2$chmod -R 644 siteどのフォルダにも入れない
  3. 3$find site -type d -exec chmod 755 {} +$find site -type f -exec chmod 644 {} +それぞれに合ったモードになるスクリプトもxを失います
  4. 4$chmod -R u=rwX,go=rX siteそれぞれに合ったモードになるすでに実行できたファイルはxを保ちます

Windowsにchmodはある?

まったく同じものはありません。Windowsはアクセス制御リストを使い、最も近いコマンドは icacls です。たとえば icacls file /grant Users:(RX) のように使います。

NTFSのパーミッションは、ユーザーまたはグループと、その権限を示す項目のリストなので、計算できる3桁の数値は1つにはなりません。最も近い対応はクラスごとです。読み取りは R、読み取りと実行は RX、書き込みは W、実行だけの場合は固有の権限 X になり、1つの桁に2つ必要なときは並べて書きます。7は (RX,W) です。どの数字も、削除も許可する変更(Modify、M)や、権限の変更と所有権の取得も許可するフルコントロール(Full control、F)にはなりません。計算機は、モードの横にこの対応を表示しますが、これは最も近いものであって、同等ではありません。

Windows Subsystem for Linux(WSL)の中では、Linuxのファイルシステム上で chmod が正しく動きます。/mnt/c にマウントしたWindowsのドライブでは、そのドライブが metadata オプション付きでマウントされている場合にだけ動きます。ない場合、モードはWindowsの権限から決まり、所有者、グループ、その他のユーザーで同じになり、chmod にできるのは読み取り専用属性の設定くらいです。そのため、Windows側に置いた鍵は「too open」と判定されることがあり、そこで chmod 600 を実行しても直りません。

chmodの各桁と、最も近いicacls権限icacls
数字文字最も近い権限
7rwx(RX,W)読み取り、書き込み、実行
6rw-(R,W)読み取りと書き込み
5r-x(RX)読み取りと実行
4r--(R)読み取り
3-wx(W,X)書き込みと実行
2-w-(W)書き込み
1--x(X)実行
0---—アクセスなし

最も近いものであって、同等ではありません。Windowsは、誰にどの権限を与えるかを示す項目のリストを持ちます。どの数字も、削除も許可する変更(Modify、M)や、権限の変更(WDAC)と所有権の取得(WO)も許可するフルコントロール(Full control、F)にはなりません。どちらのシステムでも、所有者はファイルのパーミッションを常に変更できます。

WSLでは
  • /homeLinuxのファイルシステム上:chmod は通常のLinuxと同じように動きます。
  • /mnt/cmetadata オプションなしの /mnt/c 上:モードはWindowsの権限から決まり、chmod はほとんど何も変更しません。
  • /mnt/c · metadatametadata あり:chmod は動きますが、Windowsが許可する範囲を超えることはありません。

ファイルのパーミッションを確認する方法

ls -l は文字で、stat は数字で表示します。どちらを計算機に貼り付けても、モードを読み取って表示します。

ls -l file は -rw-r--r-- 1 you staff 4096 25 Oct 09:26 file のように出力し、計算機はその行全体を受け付けるので、モードを自分で取り出す必要はありません。stat -c '%a %n' file はLinuxでは 644 file と出力し、macOSでは同じことを stat -f '%Lp %N' file で行います。ディレクトリ全体を一度に調べるには、GNUの find . -maxdepth 1 -printf '%m %p\n' ですべてのモードを数字で一覧できます(macOSの find には -printf がありません)。

パーミッションの文字列の末尾の+は、9ビット以外にも情報があることを示します。LinuxではPOSIX ACLで、getfacl で確認でき、その追加の項目はモードには含まれません。macOSでは、@ は拡張属性、+ は拡張セキュリティ情報を意味します。GNUの ls では、ドット(.)は、SELinuxなどのセキュリティコンテキストを意味します。計算機は3つの記号をすべて受け付け、モードは全体の一部にすぎないことを知らせます。

ls -l の行を項目ごとにls -l notes.txt
-種類rw-r--r--パーミッション+記号1リンク数you所有者staffグループ4096サイズ25 Oct 09:26更新日時notes.txt名前
数字で表したモード
  • Linux$stat -c '%a %n' notes.txt644 notes.txt
  • macOS$stat -f '%Lp %N' notes.txt644 notes.txt
モードの後ろの文字
  • -rw-r--r--+Linux:POSIX ACL(getfacl で一覧できます)。macOS:ACLなどの拡張セキュリティ情報。
  • -rw-r--r--@macOS:拡張属性。
  • -rw-r--r--.GNUの ls:SELinuxなどのセキュリティコンテキストがあり、それ以外はありません。
  • -rw-r--r-- それ以上なし:9ビットがすべてです。

chmod計算機:よくある質問

chmod 755とはどういう意味ですか?

所有者に読み取り・書き込み・実行、それ以外の人に読み取りと実行を与えます。文字で書くと rwxr-xr-x です。各桁は合計で、7は4 + 2 + 1、5は4 + 1です。ディレクトリ(誰かが入るには実行ビットが必要です)や、スクリプト、プログラムに使います。非公開にしたいファイルには使わないでください。

chmod 644と755の違いは何ですか?

各クラスの実行ビットが1つあるかないかです。644は rw-r--r-- で、ドキュメント、画像、設定ファイル、ソースファイルに適しています。755は rwxr-xr-x で、ディレクトリと、実行が必要なものに適しています。ファイルに755を設定すると、すべてが実行可能になるため、Webサイト全体への再帰的な chmod -R 755 は間違いです。ディレクトリとファイルは別々に設定してください。

chmod 777は何をしますか?安全ですか?

そのマシンのすべてのアカウントが、ファイルを読み取り、変更し、実行できるようになります。必要になることはほとんどなく、共有サーバーやインターネットに公開されたサーバーでは現実的なリスクです。サーバーが実行するスクリプトを書き込める人なら誰でも、サーバーを乗っ取れます。WordPress自身のドキュメントでは、755または750と、644または640が求められ、どのディレクトリも777にしてはいけないとされています。アプリケーションがどこかに書き込めないときは、モードではなく、所有者かグループを変更してください。

chmod +xは何をしますか?

ファイルを実行できるように、実行ビットを追加します。クラスを指定しない +x は、a+x とまったく同じではないことに注意してください。クラスのない指定では、umaskに含まれるビットは変更されないため、通常のumask 022なら所有者、グループ、その他のユーザーの3つすべてに付きますが、077のようなより厳しいumaskでは所有者だけになります。確実にしたいときは、chmod a+x または chmod u+x と書いてください。

chmod 600とはどういう意味ですか?SSHがそれを求めるのはなぜですか?

600は rw------- で、所有者だけがファイルを読み取りまたは変更できます。OpenSSHは、他のアカウントが読み取れる秘密鍵を、Permissions 0644 for '<path>' are too open. というメッセージで拒否します。判定は厳格で、自分が所有するファイルに、グループまたはその他のビットが少しでも設定されていれば鍵は拒否されるため、640でも失敗します。鍵には chmod 600、~/.ssh には chmod 700 を使ってください。

chmodの4桁目は何を意味しますか?

3つの特殊ビット(setuidが4、setgidが2、stickyが1)を表します。chmod 2775 folder はsetgidを設定し、中の新しいファイルがフォルダのグループになるようにします。chmod 1777 folder はstickyビットを設定し、互いのファイルを削除できないようにします。/tmp がこれを使っています。どれも設定されていなければ、この桁は省略されます。

chmod 755でフォルダのsetgidビットが消えなかったのはなぜですか?

GNUのchmodは、数値モードが5桁未満(0755 を含む)のとき、ディレクトリのsetuidとsetgidを残すためです。これは意図的で、規格にも沿っています。POSIXが求めているのは、8進数の形が通常のファイルでそれらを解除することだけです。シンボリックな形の chmod g-s folder を使うか、先頭のゼロを書いて chmod 00755 folder としてください。この計算機は、変更に必要なときは、5桁の形で自動的に出力します。

chmodとchownの違いは何ですか?

chmod は、所有者、グループ、その他のユーザーが何をできるかを設定します。chown は、所有者とグループが誰なのかを設定します。同じ問題の別の半分に答えるもので、Webサーバーでの「Permission denied」は、モードではなく所有者の問題であることがよくあります。ファイルが違うユーザーのものになっていると、777以外のどのモードでも解決しません。

ls -lの行をこの計算機に貼り付けられますか?

はい、モードだけでなく行全体を貼り付けられます。-rw-r--r-- 1 you staff 4096 25 Oct 09:26 notes.txt はファイルの644として、drwxrwsr-x はディレクトリの2775として読み取られます。ACLの記号 +、セキュリティコンテキストのドット、macOSの @ もすべて認識されます。u+x や go-w のような変更の式を貼り付けて、どのビットが変わるかを確認することもできます。

パーミッションの後ろの+や@は何ですか?

9ビットがすべてではないことを示します。Linuxの + は、所有者、グループ、その他のユーザー以外の項目を持つPOSIX ACLがあることを意味します。getfacl で確認でき、モードには含まれません。GNUの ls のドットは、SELinuxなどのセキュリティコンテキストを意味します。macOSの @ は拡張属性、+ は拡張セキュリティ情報を意味します。モードが妥当なのにパーミッションの動作がおかしいときは、そこを調べてください。

Windowsにchmodに相当するものはありますか?

Windowsはモードではなくアクセス制御リストを使うため、完全に同じものはありません。icacls file /grant Users:(RX) が最も近いコマンドで、計算機はモードに最も近い権限を表示します。WSLの中では、Linuxのファイルシステム上で chmod が通常どおり動きますが、/mnt/c のWindowsのドライブでは、metadata オプション付きでマウントされていない限り、ほとんど効果がありません。

umask 022だとどうなりますか?

新しいファイルは644、新しいディレクトリは755になります。新しいファイルは666、ディレクトリは777から始まり、umaskに設定されたビットがすべて解除されます。ファイルは実行ビットなしで始まるため、umaskでファイルが実行可能になることはありません。それは、あとで実行する chmod +x の役目です。上のumaskタブで任意の値を試し、どちらの結果も計算機で開けます。

足りないものはありますか?機能や新しいツールを提案する