開発者向け

chmod 計算機 (8 進 ↔ rwx ↔ ugo 相互変換)

Unix/Linux のファイルパーミッションを 8 進数 (755 等) ↔ シンボリック (rwxr-xr-x) ↔ 特殊ビットまで明示する完全ugo表記で相互変換するツール。 setuid / setgid / sticky に対応し、 755 / 644 / 600 / 1777 などよく使う例のプリセット付き。

登録不要

chmod 計算機 (8 進 ↔ rwx ↔ ugo 相互変換)について

chmod 計算機とは

Linux/Unix のファイルモードを、8進(755など)・rwx(rwxr-xr-xなど)・完全ugo(u=rwx,g=rx,o=rx,u-s,g-s,o-tなど)の3表記で相互変換するツールです。どの入力欄からでも変換でき、チェック表からr / w / xとsetuid / setgid / stickyも切り替えられます。

ugo入出力はu / g / oの通常権限に加え、u+sまたはu-sg+sまたはg-so+tまたはo-tをすべて明示します。省略した特殊ビットを勝手にオフとは解釈しません。入力に誤りがある間は、直前の権限を新しい結果として表示しません。処理内容はブラウザ内の文字列変換だけで、サーバーへ権限情報を保存しません。

各桁は4(r)+ 2(w)+ 1(x)の合計

8進モードの末尾3桁は、左から所有者(user)、グループ(group)、その他(other)です。各桁はread=4、write=2、execute=1を足して求めます。特殊ビットがある場合は、その合計を先頭へ付けた4桁で表します。

  • 755 = rwxr-xr-x。実行ファイルやディレクトリでよく使われる例
  • 644 = rw-r--r--。一般ファイルでよく使われる例
  • 600 = rw-------。所有者だけが読み書きできる例
  • 700 = rwx------。所有者専用ディレクトリの例
  • 1777 = rwxrwxrwt。sticky付き共有ディレクトリの例

これらは用途を決める絶対値ではありません。対象がファイルかディレクトリか、実行主体、サービス設定、既存の所有者・グループを確認して必要最小限を選びます。

特殊ビットとs / S / t / T

4桁目はsetuid=4、setgid=2、sticky=1の合計です。rwx表記では実行位置の文字が変わります。小文字のs / tはxも有効、大文字のS / Tは特殊ビットだけが有効でxは無効です。

  • setuid: 実行ファイルでは実効ユーザーIDをファイル所有者へ変更
  • setgid: 実行ファイルでは実効グループIDを変更。ディレクトリでは新規項目が親ディレクトリのグループを継承
  • sticky: ディレクトリ内の項目を削除・改名できる主体を、項目所有者、ディレクトリ所有者、特権ユーザーへ制限

GNU chmodは、ディレクトリへ数値モードを指定したときに既存のsetuid / setgidを保持する場合があります。本ツールは8進値を目標モードとして表示し、特殊ビットまで明示するugoコマンド例も併記します。ただしsetuid / setgidは、実行者の権限やOSの方針によって設定要求が無視される場合があります。特に通常ファイルのsetgidは、所有グループと実行者のグループ関係によって解除される場合があります。適用先OSのchmod(1)を確認し、適用後はstatls -lで実際のモードを確認してください。

SSH秘密鍵と.sshディレクトリの権限

OpenSSHの秘密鍵は、他者からアクセスできる状態だと無視されます。一般的な修正例はchmod 600 ~/.ssh/id_rsaで、読み取り専用にするなら400も候補です。鍵ファイルの所有者や利用環境も確認してください。

~/.sshは所有者だけが利用できる700相当が推奨されますが、OpenSSHの資料は700を唯一の許可値とはしていません。サーバー側のStrictModes、ディレクトリ所有者、group / otherの書込権限なども判定に関係します。

よくある質問

Q. 755と644はどう使い分ければよい?
755は所有者にrwx、group / otherにrxを与え、644は所有者にrw、group / otherにrを与えます。実行やディレクトリ内部の検索・通過が必要かでxの要否が変わります。代表値をそのまま適用せず、対象と実行主体を確認してください。
Q. なぜ/tmpでは1777をよく見るのですか?
共有ディレクトリとして全員にrwxを与えつつ、stickyビットで削除・改名を項目所有者、ディレクトリ所有者、特権ユーザーへ制限するためです。1777はrwxrwxrwtと表示されます。
Q. 8進コマンドとugoコマンドは常に同じ結果ですか?
通常権限は同じ目標を表します。ただしGNU chmodはディレクトリの既存setuid / setgidを数値指定だけでは保持する場合があります。本ツールのugo例はu+s / u-s、g+s / g-s、o+t / o-tも明示しますが、実行者の権限、所有グループ、OSの方針によってset-IDの設定要求が無視または解除される場合があります。どちらも適用後の実際のモードを確認してください。
Q. ls -lの先頭にあるdやlも変換されますか?
10文字入力ではGNU lsが文書化する先頭のファイル種別を確認し、11文字入力では末尾のアクセス方式印(. / + / ?)も確認します。種別と印は変換結果に保持しません。特にシンボリックリンクへのchmodの作用先はOSやオプションで異なるため、生成した例を使う前に対象とchmod(1)を確認してください。
Q. なぜugo入力で特殊ビットの設定・解除も必要ですか?
u=rwx,g=rx,o=rxだけでは、実行時に既存の特殊ビットがどうなるかを全環境・対象で一意に表せません。本ツールは12ビットの完全な目標状態を相互変換するため、u+s / u-s、g+s / g-s、o+t / o-tを各1回指定します。
Q. chmod -Rを使うときの注意点は?
ファイルとディレクトリへ同じ数値を一括適用すると、不要な実行権限を付けることがあります。対象を分けるか、条件付き実行権限Xを使うシンボリック指定などを検討し、実行前に対象一覧を確認してください。
このツールを評価
(0件)