「ユーザーとグループ」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(校正(でき・出来))
41行目: 41行目:
 
[https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=bb95638cdcae4f1a88354734f96a868704bb6684 Extending UNIX File Abstraction for General-Purpose Networking] より:
 
[https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=bb95638cdcae4f1a88354734f96a868704bb6684 Extending UNIX File Abstraction for General-Purpose Networking] より:
   
:''UNIX とその互換オペレーティングシステムで提供されている、基礎的でとてもパワフルで一貫性のあるアブストラクションがファイルアブストラクションです。多くの OS サービスとデバイスインターフェイスはアプリケーションにファイルやファイルシステムをあたえることで実装されています。これによって既存のアプリケーションの新しい利用ができるようになり力を引き出すことができるようになります — 固有の使用目的で設計されたシンプルなツールが、UNIX ファイルアブストラクションを使って、新しい方法で利用されます。cat のような、ファイルの読み込みと標準出力への内容のアウトプットができるシンプルなツールを特別なデバイスファイル、典型的に {{ic|/dev}} ディレクトリ下のファイルを通して、I/O デバイスからの読み書きに使うことが可能なのです。多くのシステムで、録音と再生がそれぞれ次のコマンドで出来ます、"{{ic|cat /dev/audio > myfile}}" と "{{ic|cat myfile > /dev/audio}}"。''
+
:''UNIX とその互換オペレーティングシステムで提供されている、基礎的でとてもパワフルで一貫性のあるアブストラクションがファイルアブストラクションです。多くの OS サービスとデバイスインターフェイスはアプリケーションにファイルやファイルシステムをあたえることで実装されています。これによって既存のアプリケーションの新しい利用ができるようになり力を引き出すことができるようになります — 固有の使用目的で設計されたシンプルなツールが、UNIX ファイルアブストラクションを使って、新しい方法で利用されます。cat のような、ファイルの読み込みと標準出力への内容のアウトプットができるシンプルなツールを特別なデバイスファイル、典型的に {{ic|/dev}} ディレクトリ下のファイルを通して、I/O デバイスからの読み書きに使うことが可能なのです。多くのシステムで、録音と再生がそれぞれ次のコマンドでできます、"{{ic|cat /dev/audio > myfile}}" と "{{ic|cat myfile > /dev/audio}}"。''
   
 
GNU/Linux において全てのファイルは1つのユーザーと1つのグループによって所有されます。加えて、アクセス許可の3つのタイプが存在します: 読み込み、書き込み、実行です。ファイルの所有ユーザー、所有グループ、(所有権をもっていない)第三者に対してそれぞれ異なるアクセス許可を適用することが可能です。[[ls]] コマンドによってファイルの所有者とパーミッションを確認できます:
 
GNU/Linux において全てのファイルは1つのユーザーと1つのグループによって所有されます。加えて、アクセス許可の3つのタイプが存在します: 読み込み、書き込み、実行です。ファイルの所有ユーザー、所有グループ、(所有権をもっていない)第三者に対してそれぞれ異なるアクセス許可を適用することが可能です。[[ls]] コマンドによってファイルの所有者とパーミッションを確認できます:

2024年7月10日 (水) 20:18時点における版

関連記事

GNU/Linux のユーザーとグループは、アクセス制御のために使われています — つまり、システムのファイル、ディレクトリ、周辺機器へのアクセスのコントロールに使われます。Linux は比較的シンプルかつ粗っぽいアクセス制御メカニズムをデフォルトで提供します。高度な制御については、ACLケイパビリティPAM#設定方法を見て下さい。

概要

ユーザーとはコンピュータを使う全ての人のことです。ここで、名前がユーザーを表すことを説明しましょう。名前は Mary や Bill という風につけられ、実名のかわりに Dragonlady や Pirate といった名前を使うことができます。重要なのはコンピュータはそれぞれのアカウントに名前をつけていて、人々がコンピュータを使うためのアクセスを得るために名前を使うということです。システムサービスによっては制限・特権ユーザーアカウントを使って動作させることもあります。

特定の方法でアクセスを制限することでセキュリティのためにユーザーの管理が行われます。スーパーユーザー (root) はオペレーティングシステムと設定全てにアクセスすることができます。そのため管理用途だけに使われることが想定されています。特権がないユーザーはいくつかのプログラムによって制御された特権昇格を行うことが可能です。

作成するアカウントにそれぞれ異なる名前を使えば、人々は複数のアカウントを持つことが可能です。さらに、"root" など、使うことができない予約済みの名前も存在します。

ユーザーは"グループ"にまとめることができ、グループに入ることでユーザーはグループで認められた特権的アクセスを利用することができます。

ノート: ビギナーはツールを気をつけて使って下さい、自分のアカウント以外の既存の他のユーザーアカウントをいじらないようにしましょう。

パーミッションと所有権

In UNIX Everything is a File より:

UNIX オペレーティングシステムはデザイン、インターフェイス、文化と革命を形作った統一のアイデアとコンセプトを具体化しています。おそらくその中で一番重要なマントラが"全てのものはファイルである"であり、UNIX を定義付けるポイントとして広く受け取られています。
このキーデザイン原理の構成は統一パラダイムの提供による幅広い入出力のアクセスです: ドキュメント、ディレクトリ、ハードドライブ、CD-ROM、キーボード、プリンター、モニター、ターミナル、インタープロセス、ネットワーク。トリックはこれらリソース全てに対して共通のアブストラクションを提供することで、UNIX の父たちは"ファイル"と呼びました。全ての"ファイル"が同じ API を使って扱われることにより、同じ基本的なコマンドセットを使ってディスク、キーボード、ドキュメント、ネットワークデバイスへの読み書きができます。

Extending UNIX File Abstraction for General-Purpose Networking より:

UNIX とその互換オペレーティングシステムで提供されている、基礎的でとてもパワフルで一貫性のあるアブストラクションがファイルアブストラクションです。多くの OS サービスとデバイスインターフェイスはアプリケーションにファイルやファイルシステムをあたえることで実装されています。これによって既存のアプリケーションの新しい利用ができるようになり力を引き出すことができるようになります — 固有の使用目的で設計されたシンプルなツールが、UNIX ファイルアブストラクションを使って、新しい方法で利用されます。cat のような、ファイルの読み込みと標準出力への内容のアウトプットができるシンプルなツールを特別なデバイスファイル、典型的に /dev ディレクトリ下のファイルを通して、I/O デバイスからの読み書きに使うことが可能なのです。多くのシステムで、録音と再生がそれぞれ次のコマンドでできます、"cat /dev/audio > myfile" と "cat myfile > /dev/audio"。

GNU/Linux において全てのファイルは1つのユーザーと1つのグループによって所有されます。加えて、アクセス許可の3つのタイプが存在します: 読み込み、書き込み、実行です。ファイルの所有ユーザー、所有グループ、(所有権をもっていない)第三者に対してそれぞれ異なるアクセス許可を適用することが可能です。ls コマンドによってファイルの所有者とパーミッションを確認できます:

$ ls -l /boot/
total 13740
drwxr-xr-x 2 root root    4096 Jan 12 00:33 grub
-rw-r--r-- 1 root root 8570335 Jan 12 00:33 initramfs-linux-fallback.img
-rw-r--r-- 1 root root 1821573 Jan 12 00:31 initramfs-linux.img
-rw-r--r-- 1 root root 1457315 Jan  8 08:19 System.map26
-rw-r--r-- 1 root root 2209920 Jan  8 08:19 vmlinuz-linux

最初の列にファイルのパーミッションが表示されます (例えば、ファイル initramfs-linux.img のパーミッションは -rw-r--r--)。3、4列目にはファイルの所有ユーザーとグループがそれぞれ示されます。この例では、全てのファイルは root ユーザーと root グループによって所有されています。

$ ls -l /media/
total 16
drwxrwx--- 1 root vboxsf 16384 Jan 29 11:02 sf_Shared

この例では、sf_Shared ディレクトリは root ユーザーと vboxsf グループによって所有されています。stat コマンドを使うことでもファイルの所有者とパーミッションを確認することができます:

所有ユーザー:

$ stat -c %U /media/sf_Shared/
root

所有グループ:

$ stat -c %G /media/sf_Shared/
vboxsf

アクセス権限:

$ stat -c %A /media/sf_Shared/
drwxrwx---

アクセス許可は3つのグループの文字で表示され、それぞれ所有ユーザー、所有グループ、第三者のパーミッションを表しています。例えば、-rw-r--r-- はファイルの所有者は読み込みと書き込みが可能で、実行はできない (rw-) ことを示していて、さらに所有グループに属しているユーザーとその他のユーザーは読み込みしかできない (r--r--) ことを示しています。一方、drwxrwx--- はファイルの所有者と所有グループに属すユーザーが読み込み・書き込み・実行の全てができ (rwxrwx)、他のユーザーはアクセスを拒否される (---) ことを示しています。一番最初の文字はファイルのタイプです。

あるユーザーやグループによって所有されているファイルを一覧するには find コマンドを使います:

# find / -group groupname
# find / -group groupnumber
# find / -user user

ファイルの所有ユーザーやグループは chown コマンドで変更できます。ファイルのアクセス許可を変更するコマンドは chmod です。

詳しくは chown(1)chmod(1)Linux file permissions を見て下さい。

Shadow

Arch Linux のユーザー、グループおよびパスワードの管理ツールは、base メタパッケージ の依存関係である shadow パッケージから取得されます。

ファイル一覧

警告: 以下のファイルを直接編集しないでください。ロックを正しく使ってデータベースのフォーマットを崩すことを避けるユーティリティが存在します。#ユーザー管理#グループ管理 を見て下さい。
ファイル 目的
/etc/shadow セキュアなユーザーアカウント情報
/etc/passwd ユーザーアカウント情報
/etc/gshadow グループアカウントの暗号化された情報
/etc/group ユーザーが属するグループの定義

ユーザー管理

現在システムにログインしているユーザーを一覧するには who コマンドを使います。全てのユーザーアカウントとユーザーデータベースに保存されているプロパティを確認するには、root で passwd -Sa を実行してください。出力されるフォーマットについては passwd(1) の説明を読んでください。

新しいユーザーを追加するときは useradd コマンドを使って下さい:

# useradd -m -G additional_groups -s login_shell username
-m/--create-home
ユーザのホームディレクトリを /home/username に作成します。このディレクトリにはスケルトンディレクトリ内のファイルが配置されます。作成されるファイルは新しいユーザによって所有されます。
-G/--groups
ユーザの所属する補助グループのコンマで区切られたリストです。デフォルトでは、ユーザは主グループ (the initial group) にのみ所属します。
-s/--shell
ユーザのログインシェルへのパス。Bash 以外のものを指定する場合、そのシェルがインストールされていることを確認してください。新しく作成されたユーザのデフォルトシェルは /etc/default/useradd で設定できます。
警告: ログインできるようにするには、ログインシェルは /etc/shells に記載されているものでなければなりません。さもないと、PAM モジュール pam_shell はログイン要求を拒否します。
ノート: 新しく作成されたユーザには、#ユーザーを追加する例 で説明されているように passwd を使ってパスワードを設定しなければなりません。

初期のログイングループを名前か番号で指定する場合、すでに存在しているグループを参照しなければなりません。指定しない場合、useradd の挙動は /etc/login.defs 内の USERGROUPS_ENAB 変数に依存します。デフォルトの挙動 (USERGROUPS_ENAB yes) では、ユーザ名と同じ名前のグループを作成します。

特定のサービスのためにユーザアカウントを作成する場合など、ログインシェルが機能してほしくない場合、/usr/bin/nologin をログインシェルとして指定することで、ログインを丁重に拒否することができます (nologin(8) を見てください)。

サポートされている他のオプションについては useradd(8) を見てください。

ユーザーを追加する例

以下のコマンドは、archie という名前の新しいユーザを追加し、ホームディレクトリを作成し、グループ、ディレクトリ名、使用されるシェル、それ他のパラメータに関してはすべてデフォルト値を使用します:

# useradd -m archie

新しく作成したユーザ archie をパスワードで保護する必要はありませんが、パスワードで保護することが強く推奨されます:

# passwd archie

上記の useradd コマンドは、同時に archie という名前のグループも自動的に作成し、そのグループを archie のデフォルトのグループとします。ユーザを作成する際に各ユーザに (そのユーザと同じ名前の) 独自のグループを持たせることが推奨されています。

-g オプションを使うことで別のグループをデフォルトグループにすることもできますが、マルチユーザシステムにおいてすべてのユーザが単一のデフォルトグループ (users など) を使用することは推奨されていません。その理由は、特定のグループのユーザで書き込みアクセス権を共有する方法は、ユーザの umask 値を 002 に設定するというものですが、これは、あなたが作成したすべてのファイルはデフォルトで常にデフォルトグループによってアクセス可能であることを意味するからです。User Private Groups も参照してください。ユーザが特定のグループのメンバーになる必要がある場合、そのユーザを作成する際にそのグループを補助グループとして指定してください。

推奨されるシナリオ (デフォルトグループの名前がユーザ名と同じ場合) では、デフォルトですべてのファイルはそれらのファイルを作成したユーザのみが書き込み可能です。特定のグループに書き込みアクセスを許可したい場合、そのグループに属している全員に対して共有ファイル/ディレクトリを書き込み可能にすることで可能です。ディレクトリにグループの setgid ビットを設定することで、親ディレクトリを所有するグループに所有グループを自動的に固定することができます:

# chmod g+s our_shared_directory

そうしない場合、ファイル作成者のデフォルトグループ (通常、ユーザ名と同じ名前) が使用されます。

一時的に GID を変更する必要がある場合、newgrp コマンドを使用することで実行時にユーザのフォルトの GID を他の GID に変更できます。例えば、newgrp groupname を実行したあと、そのユーザによって作成されたファイルは (再ログインの必要とせずに) groupname の GID と関連付けられます。デフォルトの GID に戻すには、グループ名無しで newgrp を実行してください。

ユーザーのデフォルト設定を変更する

新しいアカウントを作成する際に用いられるデフォルト値は /etc/default/useradd で設定されており、useradd --defaults コマンドで確認できます。例えば、SHELL=/usr/bin/zsh を設定すると、デフォルトのシェルをグローバルに (zsh へ) 変更できます。また、-s/--shell オプションを使えば、アカウント毎にシェルを設定できます。chsh -l を使えば、有効なログインシェルを一覧表示できます。

/etc/skel ディレクトリでは、新しく作成したユーザーのホームディレクトリへ追加するファイルを指定することもできます。これは、デスクトップ環境のような動作を実現するために設定ファイルを手動で編集する必要のあるミニマリズムなウィンドウマネージャにおいて便利です。例えば、新しく作成する全ユーザーに対してデフォルトのショートカットをセットアップするには:

# mkdir /etc/skel/.config
# cp ~archie/.config/sxhkd /etc/skel/.config

また、ディスプレイマネージャ#セッションとして ~/.xinitrc を実行 では、全ユーザーに対してディスプレイマネージャで xinitrc をオプションとして追加する方法について説明されています。

システムユーザーを追加する例

システムユーザーは、異なるユーザのもとでプロセス/デーモンを実行するために使用できます。(chown を使うなどして) ファイルやディレクトリを保護するなど、コンピュータの堅牢化において様々な使用例があります。

以下のコマンドで、シェルへのアクセス権が無く、home ディレクトリも持たないシステムユーザが作成されます (オプションで、-U パラメータを追加するとユーザと同じ名前のグループも作成し、ユーザをそのグループに追加します):

# useradd --system -s /usr/bin/nologin username

システムユーザが特定のユーザ ID およびグループ ID を必要とする場合、ユーザの作成時に -u/--uid オプションと -g/--gid オプションで ID を指定してください:

# useradd --system -u 850 -g 850 -s /usr/bin/nologin username

ユーザーのログイン名やホームディレクトリを変更する

ユーザーのホームディレクトリを変更するには:

# usermod -d /my/new/home -m username

このコマンドの -m オプションは、自動的に新しいホームディレクトリを作成し、旧ホームディエレクトリ内の内容をそこへ移動します。

ヒント: 旧ホームディレクトリから新しいホームディレクトリへのリンクを作成することもできます。こうすることで、パスがハードコードされているプログラムがファイルを見つけれられるようになります。
# ln -s /my/new/home/ /my/old/home

/my/old/home の末尾に /存在しないことを確認してください。

ユーザのログイン名を変更するには:

# usermod -l newname oldname
警告: ユーザー名を変更するときは、変更対象のユーザーでログインしていないことを確認してください。新しい tty を開いて (例: Ctrl+Alt+F6) root としてログインするか、他のユーザから root に昇格してください。usermod を使うことで間違えてユーザー名を変更することを防ぐことができます。

ユーザー名の変更は usermod コマンドを使って正しく行えば安全かつ簡単です。ユーザーが同じ名前のグループに属している場合、groupmod コマンドで変更できます。

または、/etc/passwd ファイルを直接編集する方法もあります。詳しくは #ユーザーデータベース を見てください。

また、以下のことにも気をつけてください:

  • sudo を使用する場合、/etc/sudoers を更新して新しいユーザー名を反映させてください (root で visudo コマンドを使用)。
  • 個人用の crontab は、/var/spool/cron 内のユーザーファイルを古い名前から新しい名前に変更し、crontab -e を開いて相対パスを変更してファイルのパーミッションも調整する必要があります。
  • ~/.wine/drive_c/users~/.local/share/applications/wine/Programs などの中にある Wine の個人用フォルダ/ファイルのコンテンツは手動で名前を変更/編集する必要があります。
  • Enigmail など特定の Thunderbird アドオンは再インストールが必要かもしれません。
  • ホームディレクトリの絶対パス (つまり /home/oldname) を使っているファイル (デスクトップショートカット、シェルスクリプトなど) は、ホームディレクトリの名前の変更を反映させる必要があります。シェルスクリプトでこういう問題が起こらないようにするには、ホームディレクトリを指定するときに ~$HOME 変数を使いましょう。
  • また /etc/ の設定ファイルで絶対パスを使っている場合は忘れずに編集してください (Samba や CUPS など)。どのファイルを編集すればいいかわからないときは grep コマンドを使います: grep -r old_user *

ユーザー管理の他の例

GECOS コメントにユーザ情報を入力するには (フルのユーザ名など)、以下を実行してください:

# chfn username

(この方法では chfn はインタラクティブモードで実行します)。

あるいは、以下のように自由に GECOS コメントを設定することもできます:

# usermod -c "Comment" username

ユーザーのパスワードを期限切れにして、次にログインした時に新しいパスワードを作るよう求めたいときは、次を実行してください:

# chage -d 0 username

userdel コマンドでユーザアカウントを削除できます:

# userdel -r username

userdel-r オプションは、ユーザのホームディレクトリとメールスプールも削除します。

ユーザのログインシェルを変更するには:

# usermod -s /usr/bin/bash username
ヒント: AUR のパッケージ adduserAUR には useraddchfnpasswd を対話式に行うことができる adduser スクリプトが入っています。FS#32893 も参照してください。

ユーザーデータベース

ローカルユーザの情報はプレーンテキストの /etc/passwd ファイルに保存されます。このファイル内の各行は1つのユーザアカウントを表しており、7つのフィールドがコロンで区切られて記述されています。

account:password:UID:GID:GECOS:directory:shell

それぞれのフィールドの意味は以下のとおりです:

  • account はユーザ名です。このフィールドを空白にすることはできません。標準的な *NIX の命名規則が適用されます。
  • password はユーザのパスワードです。
    警告: passwd ファイルは全ユーザが読むことができます。なので、パスワード (ハッシュ化されているものなど) をこのファイルに保存することは安全ではありません。代わりに、Arch Linux ではシャドウパスワードが使用されます。この場合、password フィールドにはプレースホルダー文字 (x) が代わりに記入され、アクセスが制限されている /etc/shadow ファイルにハッシュ化されたパスワードが保存されていることを示します。そのような理由により、パスワードの変更には必ず passwd コマンドを使用することが推奨されます。
  • UID はユーザ ID の数値です。Arch では、(サービスとは異なる) 一般ユーザの (root の後の) 最初のログイン名の UID はデフォルトで 1000 となります。その後のユーザの UID エントリは 1000 より大きい必要があります。
  • GID はユーザのプライマリグループ ID の数値です。GID の数値は /etc/group にリストアップされています。
  • GECOS はオプションのフィールドで、ユーザの情報を格納するために使用されます。通常、このフィールドには完全なユーザ名が含まれますが、このフィールドは finger などのサービスによって使用されたり、chfn コマンドによって管理されたりする可能性があります。このフィールドは任意で、空白のままにしておくこともできます。
  • directory は、$HOME 環境変数を設定するためにログインコマンドによって使用されます。独自のユーザを持ついくつかのサービスは / を使用しますが、通常ユーザは普通 /home 下のディレクトリを使用します。
  • shell はユーザのデフォルトコマンドシェルへのパスです。このフィールドはオプションで、デフォルトは /usr/bin/bash となります。

例:

archie:x:1001:1003:Archie,some comment here,,:/home/archie:/usr/bin/bash

この例の意味は次のとおりです: ユーザ は archie で、パスワードは /etc/shadow に保存されており、UID は 1001 で、プライマリグループは 1003。Archie は完全な名前で、このアカウントに関連付けられたコメントが記入されています。このユーザのホームディレクトリは /home/archie で、Bash を使用しています。

pwck を使うことで、ユーザデータベースの整合性を検証することができます。また、このコマンドはユーザのリストを GID によってソートします (比較の際に便利でしょう):

# pwck -s
警告: filesystem パッケージの新しいリリースがインストールされた際に、Arch Linux のデフォルトのファイルが pacnew ファイルとして作成されます。Pacman が、アクションを促すメッセージを出力しない限り、これらの .pacnew ファイルは無視/削除できます (そして、そうすべきです)。必要な新しいデフォルトユーザとグループは、必要に応じて systemd-sysusers(8) またはパッケージのインストールスクリプトによって追加/再追加されます。

自動整合性チェック

pwckgrpck を自分で実行する代わりに、Systemd タイマー shadow.timershadow.service を毎日実行します (shadow.timershadow パッケージの一部であり、このパッケージのインストール時に自動で有効化されます)。shadow.servicepwck(8)grpck(8) を実行してパスワードファイルとグループファイルの両方の整合性を検証します。

不整合が報告された場合、グループは vigr(8) コマンドで、ユーザは vipw(8) コマンドで編集できます。これは、これらのコマンドがデータベースが編集されないようロックするという観点で、追加の保護を提供します。デフォルトのテキストエディタは vi ですが、EDITOR 環境変数を設定することで他のエディタを使用できます。

グループ管理

/etc/group は、システム上のグループを定義するファイルです (詳細は group(5) を見てください)。このファイルの仲間に gshadow というものもありますが、これはめったに使用されません。詳細は gshadow(5) を見てください。

groups コマンドでグループのメンバーを表示できます:

$ groups user

user が省略された場合、現在のユーザが属しているグループの名前が表示されます。

id コマンドは追加の詳細情報も出力します (ユーザの UID や関連付けられた GID など):

$ id user

システム上の全てのグループを一覧するには:

$ cat /etc/group

groupadd コマンドで新しいグループを作成できます:

# groupadd group
ノート: ユーザが現在ログイン中の場合、変更を適用するために一度ログアウトし、その後ログインし直す必要があります。

そしてユーザーをグループに追加するには gpasswd コマンドを使います (エラーについては FS#58262 を見てください):

# gpasswd -a user group

あるいは、usermod でユーザをグループに追加できます (additional_groups はコンマで区切られたリストに置き換えてください):

# usermod -aG additional_groups username
警告: 上記の usermod コマンドで -a オプションを使用しない場合、ユーザは additional_groups に含まれれていないグループすべてから削除されます (つまり、ユーザの属するグループは additional_groups に含まれているグループだけになるということです)。

groupmod コマンドで既存のグループを変更できます。例えば、old_group グループの名前を new_group に変更するには:

# groupmod -n new_group old_group
ノート: このコマンドはグループの名前を変更しますが、GID の数値は変更しません。なので、old_group によって以前所有されていたすべてのファイルは、new_group によって所有されるようになります。

既存のグループを削除するには:

# groupdel group

グループからユーザを削除するには:

# gpasswd -d user group

grpck コマンドを使用することでシステムのグループファイルの整合性を検証できます。

警告: filesystem パッケージの新しいリリースがインストールされた際に、Arch Linux のデフォルトのファイルが .pacnew ファイルとして作成されます。Pacman が、アクションを促すメッセージを出力しない限り、これらの .pacnew ファイルは無視/削除できます (そして、そうすべきです)。必要な新しいデフォルトユーザとグループは、必要に応じて systemd-sysusers(8) またはパッケージのインストールスクリプトによって追加/再追加されます。

グループ一覧

このセクションでは filesystem パッケージに含まれている主要なグループの用途を説明します。他にもグループは存在し、パッケージがインストールされたときに適当な GID を使って作成されます。詳しくはグループに関連するソフトウェアのページを見てください。

ノート: パッケージを削除しても、自動的に作成されたユーザーやグループ (UID/GID) は削除されません。これは仕様であり、たとえ既にソフトウェアがアンインストールされていても、使用していたときに作成されたファイルがセキュリティ上のリスクにならないようにするための挙動です。

ユーザーグループ

ワークステーション/デスクトップの非 root ユーザはしばしば、ハードウェア周辺機器にアクセスできるようにしたりシステム管理を楽にしたりするために、以下のグループのどれかに追加する必要があります:

グループ 影響を受けるファイル 目的
adm 管理者グループ。一般的に、保護されたログに読み込みアクセスするために使用されます。このグループは journal ファイルへの完全な読み込みアクセス権を持ちます。
ftp /srv/ftp/ FTP サーバにより提供されているファイルへのアクセス。
games /var/games 一部のゲームソフトウェアへのアクセス。
http /srv/http/ HTTP サーバによって提供されているファイルへのアクセス。
log syslog-ng によって作成された /var/log/ にあるログファイルへのアクセス。
rfkill /dev/rfkill ワイヤレスデバイスの電源状態の制御権 (rfkill によって使用されます)。
sys CUPS でのプリンタの管理権。
systemd-journal /var/log/journal/* systemd のログへの読み取り専用アクセスを提供します。admwheel の代わりとして使用されます [1]。このグループに属さない場合、ユーザによって生成されたメッセージのみが表示されます。
uucp /dev/ttyS[0-9]+, /dev/tts/[0-9]+, /dev/ttyUSB[0-9]+, /dev/ttyACM[0-9]+, /dev/rfcomm[0-9]+ RS-232 シリアルポートや、それらに接続されているデバイス。
wheel 管理者グループ。一般的に、管理者アクションを実行する権限を与えるために使用されます。このグループは journal ファイルへの完全な読み取りアクセス権と、CUPS でプリンタを管理する権限を持ちます。また、sudosu ユーティリティへのアクセス権を与えるためにも使用されます (どちらのユーティリティもデフォルトではこのグループを使用しません)。

システムグループ

以下のグループはシステムのために使用されます。これらのグループへのユーザの割り当ては、限られた目的においてのみ必要になります:

グループ 影響を受けるファイル 目的
dbus dbus によって内部的に使用されます。
kmem /dev/port, /dev/mem, /dev/kmem
locate /usr/bin/locate, /var/lib/locate, /var/lib/mlocate, /var/lib/slocate Locate を見てください。
lp /dev/lp[0-9]*, /dev/parport[0-9]* パラレルポートのデバイスへのアクセス (プリンタなど)。
mail /usr/bin/mail
nobody 非特権グループ。
proc /proc/pid/ proc ファイルシステムhidepid= マウントオプションによって制限されているプロセス情報の取得を許可されているグループ。このグループは gid= マウントオプションによって明示的に設定されなければなりません。
root /* 完全なシステムの管理と制御 (root, admin)。
smmsp sendmail グループ。
tty /dev/tty, /dev/vcc, /dev/vc, /dev/ptmx
utmp /run/utmp, /var/log/btmp, /var/log/wtmp

systemd 以前のグループ

Arch が systemd に移行する前は、デバイスにアクセスできるようにするためにユーザを以下のグループに手動で追加する必要がありました。この方法は非推奨となっており、現在は udev がデバイスに uaccess タグを付け、現在どのセッションがアクティブであるかに応じて logindACL を使って動的にユーザに権限を割り当てています。この仕組みを機能させるにはセッションが破壊されないようにしなければなりません (一般的なトラブルシューティング#セッションのパーミッションを参照)。

グループによってはユーザーを追加しなくてはいけない例外も存在します: 例えば、ログインしていない状態でユーザーからデバイスにアクセスしたい場合など。ただし、グループにユーザーを追加すると機能が破壊されることもあるので注意してください (例えば audio グループを使用するとユーザーの高速切り替えが無効化されソフトウェアミキシングができなくなります)。

グループ 影響を受けるファイル 目的
audio /dev/audio, /dev/snd/*, /dev/rtc0 全てのセッションでのサウンドハードウェアへの直接アクセス。リモートセッションで ALSAOSS を動作させるにはいまだに必要になります (ALSA#ユーザー権限 を見てください)。ユーザーにリアルタイムプロセスの権限を与えるために JACK でも使われています。
disk /dev/sd[a-zA-Z]*[1-9]* opticalfloppystorage など他のグループによる影響を受けないブロックデバイスへのアクセス。
floppy /dev/fd[0-9]* フロッピードライブへのアクセス。
input /dev/input/event[0-9]*, /dev/input/mouse[0-9]* 入力デバイスへのアクセス。systemd 215 で導入されました [2]
kvm /dev/kvm KVM を使用する仮想マシンへのアクセス。
optical /dev/sr[0-9], /dev/sg[0-9] CD や DVD ドライブなどの光学デバイスへのアクセス。
scanner /var/lock/sane スキャナーハードウェアへのアクセス。
storage /dev/st[0-9]*[lma]*, /dev/nst[0-9]*[lma]* USB ハードドライブ、フラッシュ/ジャンプドライブ、MP3 プレイヤーなどのリームーバブルドライブへのアクセス権を得るために使用されます。ユーザがストレージデバイスをマウントできるようにします。[3]

現在では、カスタムの udev ルールが存在しない場合にテープにダイレクトアクセスするためだけに使用されます [4][5][6][7]

また、udisks/udisksctl を通して一部のデバイスを操作するために必要です。

video /dev/fb/0, /dev/misc/agpgart ビデオキャプチャデバイス、2D/3D ハードウェアアクセラレーション、フレームバッファへのアクセス (Xは、このグループに属さなくとも使用可能です)。

使われなくなったグループ

以下のグループは現在利用されていません:

グループ 影響を受けるファイル 目的
bin なし 歴史的に存在していました。
daemon
lock ロックファイルのアクセスのために使用されました。gnokiiAUR などがこれを必要とします。
mem
network デフォルトで使用されません。NetworkManager を使用する権限を与える場合などに使えます (NetworkManager#PolicyKit のパーミッションをセットアップするを参照)。
power
uuidd
users (/etc/login.defsUSERGROUPS_ENAB no を設定したり、useradd-N/--no-user-group オプションを使用したりしてユーザを作成する場合など) ユーザープライベートグループを使用しない場合 (通常、推奨されません) のユーザのプライマリグループです。

これらのデータベースに関連した他のツール

この記事またはセクションの正確性には問題があります。
理由: Arch Linux は本当に vipw -svigr -s よりも chage を推奨しているのか? (議論: トーク:ユーザーとグループ#)

getent(1) を使用することで特定のレコードを読み出すことができます。

$ getent group tty

#ユーザーデータベースで警告されているように、このようなデータベースを変更する際には、passwdchfn といった特定のユーティリティを使うほうが良いです。それでもやはり、直接編集するほうが良い場合もあります。そのような場合のために vipwvigr が提供されています。これらのツールはデータベースをロックして同時に編集されるのを防ぐので、一般的なテキストエディタよりもこれらの専用のエディターを使うことが強く推奨されます。また、これらのツールは無効なエントリや構文エラーを防止します。Arch Linux ではシャドウデータベースの変更するために util-linuxvipw -svigr -s よりも特定のツール (chage など) の使用を推奨していることに注意してください。FS#31414 も参照してください。

翻訳ステータス: このページは en:Users and groups の翻訳バージョンです。最後の翻訳日は 2024-03-08 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。