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

提供: ArchWiki
ナビゲーションに移動 検索に移動
337行目: 337行目:
 
== グループ一覧 ==
 
== グループ一覧 ==
   
このセクションでは [https://git.archlinux.org/svntogit/packages.git/tree/trunk/group?h=packages/filesystem core/filesystem] パッケージに含まれている主要なグループの用途を説明します。他にもグループは存在し、パッケージがインストールされたときに[[en2:DeveloperWiki:UID / GID Database|適当な GID]] を使って作成されます。詳しくはグループに関連するソフトウェアのページを見てください。
+
このセクションでは {{Pkg|filesystem}} パッケージに含まれている主要なグループの用途を説明します。他にもグループは存在し、パッケージがインストールされたときに[[en2:DeveloperWiki:UID / GID Database|適当な GID]] を使って作成されます。詳しくはグループに関連するソフトウェアのページを見てください。
   
 
{{Note|パッケージを削除しても、自動的に作成されたユーザーやグループ (UID/GID) は削除されません。これは仕様であり、たとえ既にソフトウェアがアンインストールされていても、使用していたときに作成されたファイルがセキュリティ上のリスクにならないようにするための挙動です。}}
 
{{Note|パッケージを削除しても、自動的に作成されたユーザーやグループ (UID/GID) は削除されません。これは仕様であり、たとえ既にソフトウェアがアンインストールされていても、使用していたときに作成されたファイルがセキュリティ上のリスクにならないようにするための挙動です。}}
343行目: 343行目:
 
=== ユーザーグループ ===
 
=== ユーザーグループ ===
   
ワークステーション/デスクトップユーザはしばしば root でないユーザーを以下のグループに追加することで周辺機器やハードウェアアクセスを許可したりシステム管理を楽にします:
+
ワークステーション/デスクトップの非 root ユーザはしばしばハードウェア周辺機器にアクセスできるようにしたりシステム管理を楽にしたりするために、以下のグループのどれかに追加する必要があります:
   
 
{| class="wikitable"
 
{| class="wikitable"
! グループ || 影響があるファイル || 目的
+
! グループ || 影響を受けるファイル || 目的
 
|-
 
|-
  +
| adm || || 管理者グループ。一般的に、保護されたログに読み込みアクセスするために使用されます。このグループは [[journal]] ファイルへの完全な読み込みアクセス権を持ちます。
| adm || || 管理者グループ。{{ic|wheel}} と類似。
 
 
|-
 
|-
| ftp || {{ic|/srv/ftp/}} || [[Wikipedia:FTP|FTP]] サーバーが給するファイルへのアクセス。
+
| ftp || {{ic|/srv/ftp/}} || [[アプリケーション一覧/インターネット#FTP サーバー|FTP サーバ]]により提されているファイルへのアクセス。
 
|-
 
|-
| games || {{ic|/var/games}} || ゲームソフトウェアへのアクセス。
+
| games || {{ic|/var/games}} || 一部のゲームソフトウェアへのアクセス。
 
|-
 
|-
| http || {{ic|/srv/http/}} || [[Wikipedia:HTTP|HTTP]] サーバーが給するファイルへのアクセス。
+
| http || {{ic|/srv/http/}} || [[アプリケーション一覧/インターネット#ウェブサーバー|HTTP サーバ]]によって提されているファイルへのアクセス。
 
|-
 
|-
| log || || [[syslog-ng]] によって作成された {{ic|/var/log/}} ログファイルへのアクセス。
+
| log || || [[syslog-ng]] によって作成された {{ic|/var/log/}} にあるログファイルへのアクセス。
 
|-
 
|-
| rfkill || {{ic|/dev/rfkill}} || 無線デバイスのパワーステートをコントロールする ({{Pkg|rfkill}}{{Broken package link|置換パッケージ: {{Pkg|util-linux}}}} が使用)。
+
| rfkill || {{ic|/dev/rfkill}} || ワイヤレスデバイスの電源状態の制御権 ([[rfkill]] によって使用されます)。
 
|-
 
|-
| sys || || [[CUPS]] のプリンターを管理する
+
| sys || || [[CUPS]] のプリンタ管理権。
 
|-
 
|-
| systemd-journal || {{ic|/var/log/journal/*}} || systemd ログへの読み取りアクセスを与えるために {{ic|adm}} や {{ic|wheel}} の代わりとして使れます [https://cgit.freedesktop.org/systemd/systemd/tree/README?id=fdbbf0eeda929451e2aaf34937a72f03a225e315#n190]。の場合、ユーザーが生成たメッセージだけ表示されます。
+
| systemd-journal || {{ic|/var/log/journal/*}} || systemd ログへの読み取り専用アクセスを提供します。{{ic|adm}} や {{ic|wheel}} の代わりとして使用されます [https://github.com/systemd/systemd/blob/19aadacf92ad86967ffb678e37b2ff9e83cb9480/README#L161]。グループに属さない場合、ユーザによって生成されたメッセージのみが表示されます。
 
|-
 
|-
  +
| uucp || {{ic|/dev/ttyS[0-9]+}}, {{ic|/dev/tts/[0-9]+}}, {{ic|/dev/ttyUSB[0-9]+}}, {{ic|/dev/ttyACM[0-9]+}}, {{ic|/dev/rfcomm[0-9]+}} || [[Wikipedia:ja:RS-232|RS-232]] シリアルポートや、それらに接続されているデバイス。
| users || || 標準のユーザーグループ。
 
 
|-
 
|-
  +
| wheel || || 管理者グループ。一般的に、管理者アクションを実行する権限を与えるために使用されます。このグループは [[journal]] ファイルへの完全な読み取りアクセス権と、[[CUPS]] でプリンタを管理する権限を持ちます。また、[[sudo]] や [[su]] ユーティリヒへのアクセス権を与えるためにも使用されます (どちらのユーティリティもデフォルトではこのグループを使用しません)。
| uucp || {{ic|/dev/ttyS[0-9]+}}, {{ic|/dev/tts/[0-9]+}}, {{ic|/dev/ttyUSB[0-9]+}}, {{ic|/dev/ttyACM[0-9]+}}, {{ic|/dev/rfcomm[0-9]+}} || RS-232 シリアルポートや接続されたデバイス。
 
|-
 
| wheel || || 管理作業用グループ、通常 [[sudo]] や [[su]] コマンドに権限をわたすのに使われます (デフォルトではどちらも wheel を使いません、{{ic|/etc/pam.d/su}} や {{ic|/etc/pam.d/su-l}} で設定ができます)。[[systemd#Journal|journal]] ファイルへの完全な読み込みアクセスを取得するのにも使うことができます。
 
 
|}
 
|}
   
 
=== システムグループ ===
 
=== システムグループ ===
   
以下のグループはシステムのために使るものです。基本的にはユーザーが属する必要はありません:
+
以下のグループはシステムのために使用さす。これらのグループへのユーザの割り当ては、限られた目的においてのみ必要になりま:
   
 
{| class="wikitable"
 
{| class="wikitable"
! グループ || 影響があるファイル || 目的
+
! グループ || 影響を受けるファイル || 目的
 
|-
 
|-
 
| dbus || || {{Pkg|dbus}} によって内部的に使用されます。
 
| dbus || || {{Pkg|dbus}} によって内部的に使用されます。
382行目: 380行目:
 
| kmem || {{ic|/dev/port}}, {{ic|/dev/mem}}, {{ic|/dev/kmem}} ||
 
| kmem || {{ic|/dev/port}}, {{ic|/dev/mem}}, {{ic|/dev/kmem}} ||
 
|-
 
|-
| locate || {{ic|/usr/bin/locate}}, {{ic|/var/lib/locate}}, {{ic|/var/lib/mlocate}}, {{ic|/var/lib/slocate}} || [[ファイルシステム検索#locate]] を見てください。
+
| locate || {{ic|/usr/bin/locate}}, {{ic|/var/lib/locate}}, {{ic|/var/lib/mlocate}}, {{ic|/var/lib/slocate}} || [[Locate]] を見てください。
 
|-
 
|-
| lp || {{ic|/dev/lp[0-9]*}}, {{ic|/dev/parport[0-9]*}}, {{ic|/etc/cups}}, {{ic|/var/log/cups}}, {{ic|/var/cache/cups}}, {{ic|/var/spool/cups}} || パラレルポートデバイス (プリンタなど) や [[CUPS]] ファイルへの読み取りアクセスプリンター以外のパラレルポートデバイスを使っている場合、{{Bug|50009}} を見てください
+
| lp || {{ic|/dev/lp[0-9]*}}, {{ic|/dev/parport[0-9]*}} || パラレルポートデバイスへのアクセス (プリンタなど)
 
|-
 
|-
 
| mail || {{ic|/usr/bin/mail}} ||
 
| mail || {{ic|/usr/bin/mail}} ||
390行目: 388行目:
 
| nobody || || 非特権グループ。
 
| nobody || || 非特権グループ。
 
|-
 
|-
| proc || {{ic|/proc/''pid''/}} || [https://www.kernel.org/doc/Documentation/filesystems/proc.txt proc ファイルシステム] の {{ic|1=hidepid=}} マウントオプションによって制限されているプロセス情報にアクセスでき特権グループ。{{ic|1=gid=}} マウントオプションによってグループを設定する必要がありま
+
| proc || {{ic|/proc/''pid''/}} || [https://docs.kernel.org/filesystems/proc.html proc ファイルシステム]の {{ic|1=hidepid=}} マウントオプションによって制限されているプロセス情報の取得を許可されているグループ。このグループは {{ic|1=gid=}} マウントオプションによって明示的に設定されなければなりません
 
|-
 
|-
| root || {{ic|/*}} || 完全なシステム管理とコントロール (root, admin)。
+
| root || {{ic|/*}} || 完全なシステム管理と制御 (root, admin)。
 
|-
 
|-
| smmsp || || [[Sendmail]] グループ。
+
| smmsp || || [[sendmail]] グループ。
 
|-
 
|-
 
| tty || {{ic|/dev/tty}}, {{ic|/dev/vcc}}, {{ic|/dev/vc}}, {{ic|/dev/ptmx}} ||
 
| tty || {{ic|/dev/tty}}, {{ic|/dev/vcc}}, {{ic|/dev/vc}}, {{ic|/dev/ptmx}} ||
 
|-
 
|-
 
| utmp || {{ic|/run/utmp}}, {{ic|/var/log/btmp}}, {{ic|/var/log/wtmp}} ||
 
| utmp || {{ic|/run/utmp}}, {{ic|/var/log/btmp}}, {{ic|/var/log/wtmp}} ||
  +
|-
 
|}
 
|}
   
 
=== systemd 以前のグループ ===
 
=== systemd 以前のグループ ===
   
以下のグループは arch が [[systemd]] に移行したこと必要なくなったグループです。現在は [[udev]] によってデバイスに {{ic|uaccess}} [https://github.com/systemd/systemd/blob/master/src/login/70-uaccess.rules タグ] が設定され、''logind'' によって [[ACL]] を使って動的にユーザに権限が与えられます。この仕組みを機能させるにはセッションが破壊されないようにする必要がありま ([[一般的なトラブルシューティング#セッションのパーミッション]]を参照)。
+
Arch が [[systemd]] に移行する前は、デバイスにアクセスきるようにするめにユーザを以下のグループに手動追加る必要がありましたこの方法は非推奨となっており、現在は [[udev]] デバイスに {{ic|uaccess}} [https://github.com/systemd/systemd/blob/main/rules.d/70-uaccess.rules.in タグ]を付け現在どのセッションがアクティブであるかに応じて ''logind'' [[ACL]] を使って動的にユーザに権限を割り当てています。この仕組みを機能させるにはセッションが破壊されないようにしなければなりません ([[一般的なトラブルシューティング#セッションのパーミッション]]を参照)。
   
グループによってはユーザーを追加しなくてはいけない例外も存在します: 例えば、ログインしていない状態でユーザーからデバイスにアクセスしたい場合など。ただし、グループにユーザーを追加すると機能が破壊されることもあるので注意してください (例えば{{ic|audio}} グループを使用するとユーザーの高速切り替えが無効化されソフトウェアミキシングができなくなります)。
+
グループによってはユーザーを追加しなくてはいけない例外も存在します: 例えば、ログインしていない状態でユーザーからデバイスにアクセスしたい場合など。ただし、グループにユーザーを追加すると機能が破壊されることもあるので注意してください (例えば {{ic|audio}} グループを使用するとユーザーの高速切り替えが無効化されソフトウェアミキシングができなくなります)。
   
 
{| class="wikitable"
 
{| class="wikitable"
! グループ || 影響のあるファイル || 目的
+
! グループ || 影響を受けるファイル || 目的
 
|-
 
|-
| audio || {{ic|/dev/audio}}, {{ic|/dev/snd/*}}, {{ic|/dev/rtc0}} || 全てのセッションでのサウンドハードウェアへの直接アクセス。リモートセッションで [[Advanced Linux Sound Architecture|ALSA]] と [[OSS]] を動作させるにはいまだに必要になります[[ALSA#ユーザー権限]]を見てください。ユーザーにリアルタイムプロセスの権限を与えるために [[JACK]] でも使われています。
+
| audio || {{ic|/dev/audio}}, {{ic|/dev/snd/*}}, {{ic|/dev/rtc0}} || 全てのセッションでのサウンドハードウェアへの直接アクセス。リモートセッションで [[ALSA]] と [[OSS]] を動作させるにはいまだに必要になります ([[ALSA#ユーザー権限]] を見てください)。ユーザーにリアルタイムプロセスの権限を与えるために [[JACK]] でも使われています。
 
|-
 
|-
| disk || {{ic|/dev/sd[a-z][1-9]}} || {{ic|optical}}, {{ic|floppy}}, {{ic|storage}} など他のグループによる影響を受けないブロックデバイスへのアクセス。
+
| disk || {{ic|/dev/sd[a-zA-Z]*[1-9]*}} || {{ic|optical}}{{ic|floppy}}{{ic|storage}} など他のグループによる影響を受けないブロックデバイスへのアクセス。
 
|-
 
|-
| floppy || {{ic|/dev/fd[0-9]}} || フロッピーディスクへのアクセス。
+
| floppy || {{ic|/dev/fd[0-9]*}} || フロッピードライブへのアクセス。
 
|-
 
|-
 
| input || {{ic|/dev/input/event[0-9]*}}, {{ic|/dev/input/mouse[0-9]*}} || 入力デバイスへのアクセス。systemd 215 で導入されました [https://lists.freedesktop.org/archives/systemd-commits/2014-June/006343.html]。
 
| input || {{ic|/dev/input/event[0-9]*}}, {{ic|/dev/input/mouse[0-9]*}} || 入力デバイスへのアクセス。systemd 215 で導入されました [https://lists.freedesktop.org/archives/systemd-commits/2014-June/006343.html]。
420行目: 419行目:
 
| kvm || {{ic|/dev/kvm}} || [[KVM]] を使用する仮想マシンへのアクセス。
 
| kvm || {{ic|/dev/kvm}} || [[KVM]] を使用する仮想マシンへのアクセス。
 
|-
 
|-
| optical || {{ic|/dev/sr[0-9]}}, {{ic|/dev/sg[0-9]}} || CD や DVD ドライブなど[[光学ディスクドラブ]]へのアクセス。
+
| optical || {{ic|/dev/sr[0-9]}}, {{ic|/dev/sg[0-9]}} || CD や DVD ドライブなど光学デへのアクセス。
|-
 
| power || || [[Pm-utils]] (サスペンド, ハイバネート...) などの電源管理コントロールを使う権限。
 
 
|-
 
|-
 
| scanner || {{ic|/var/lock/sane}} || スキャナーハードウェアへのアクセス。
 
| scanner || {{ic|/var/lock/sane}} || スキャナーハードウェアへのアクセス。
 
|-
 
|-
| storage || || USB ハードドライブ、フラッシュジャンプドライブ、MP3 プレイヤーなどリムーバブルドライブへのアクセス。ユーザーによるストレージデバイスマウントを有効にします。
+
| storage || {{ic|/dev/st[0-9]*[lma]*}}, {{ic|/dev/nst[0-9]*[lma]*}} || USB ハードドライブ、フラッシュ/ジャンプドライブ、MP3 プレイヤーなどムーバブルドライブへのアクセス権を得るために使用されます。ユーザストレージデバイスマウントできるようにします。[https://lists.archlinux.org/archives/list/arch-dev-public@lists.archlinux.org/thread/7ITKMBKKHUB4SUN5SCS7FLSTEILKGIJH/#IEZCAXRIBMXGOMMW7C4Z3ADED32W24ZI]
  +
現在では、カスタムの udev ルールが存在しない場合にテープにダイレクトアクセスするためだけに使用されます [https://github.com/archlinux/svntogit-packages/blob/packages/systemd/trunk/0001-Use-Arch-Linux-device-access-groups.patch][https://github.com/archlinux/svntogit-packages/commit/26af78b6ad554dbd00615600edc7d53164ef8dee][https://github.com/systemd/systemd/blame/aaaf42cb44d4fcd598fca441a11856f3e8dd06d8/rules.d/50-udev-default.rules.in#L69][https://elixir.bootlin.com/linux/v5.5.6/source/include/scsi/scsi_proto.h#L251]。
|-
 
  +
| sys || || [[CUPS]] でプリンターを管理する権限。
 
  +
また、[[Udisks|udisks/udisksctl]] を通して一部のデバイスを操作するために必要です。
 
|-
 
|-
| video || {{ic|/dev/fb/0}}, {{ic|/dev/misc/agpgart}} || ビデオキャプチャデバイス、2D/3D ハードウェアアクセラレーション、フレームバッファへのアクセス (このグループに''属さなくも'' [[Xorg|X]] は使えます)。
+
| video || {{ic|/dev/fb/0}}, {{ic|/dev/misc/agpgart}} || ビデオキャプチャデバイス、2D/3D ハードウェアアクセラレーション、フレームバッファへのアクセス ([[X]]は、このグループに''属さなくも''使用可能です)。
 
|}
 
|}
   
 
=== 使われなくなったグループ ===
 
=== 使われなくなったグループ ===
  +
 
以下のグループは現在利用されていません:
 
以下のグループは現在利用されていません:
   
 
{| class="wikitable"
 
{| class="wikitable"
! グループ || 影響のあるファイル || 目的
+
! グループ || 影響を受けるファイル || 目的
 
|-
 
|-
| bin || none || 歴史的に存在していたグループ
+
| bin || なし || 歴史的に存在していました。
 
|-
 
|-
 
| daemon || ||
 
| daemon || ||
 
|-
 
|-
  +
| lock || || ロックファイルのアクセスのために使用されました。{{AUR|gnokii}} などがこれを必要とします。
| lock || ||
 
 
|-
 
|-
 
| mem || ||
 
| mem || ||
452行目: 451行目:
 
|-
 
|-
 
| uuidd || ||
 
| uuidd || ||
  +
|-
  +
| users || || ({{ic|/etc/login.defs}} で {{ic|USERGROUPS_ENAB no}} を設定したり、''useradd'' の {{ic|-N}}/{{ic|--no-user-group}} オプションを使用したりしてユーザを作成する場合など) ユーザープライベートグループを使用しない場合 (通常、推奨されません) のユーザのプライマリグループです。
 
|}
 
|}
   

2022年10月14日 (金) 22:42時点における版

関連記事

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

概要

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

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

作成するアカウントにそれぞれ異なる名前を使えば、人々は複数のアカウントを持つことが可能です。さらに、"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 [initial_group] -G [additional_groups] -s [login_shell] [username]
  • -m を使うとユーザーのホームディレクトリ /home/[username] を作成します。ホームディレクトリの中では、root でないユーザーがファイルの書き込み・削除、プログラムのインストールなどができます。
  • -g でユーザーのイニシャルログイングループのグループ名・ナンバーを定義します; グループ名が存在していなければなりません; グループナンバーが指定された時は、そのナンバーが既存のグループに参照されている必要があります; 指定されなかった場合は、useradd の挙動は /etc/login.defs 内の USERGROUPS_ENAB に基づきます。デフォルトの挙動 (USERGROUPS_ENAB yes) ではユーザー名と同じ名前でグループを作成し、GIDUID と同じになります。
  • -G はユーザーがメンバーになる追加グループ(のリスト)を指定します; グループはそれぞれカンマで区切り、スペースを入れてはいけません; デフォルトはイニシャルグループにだけユーザーを属させます。
  • -s ではユーザーのデフォルトログインシェルのパスとファイル名を定義します; ブートプロセスが完了した後、ここに指定したシェルがデフォルトのログインシェルになります; Bash 以外のシェルを使うのなら、その選んだシェルのパッケージをインストールしておいてください。
警告: ログインシェルは /etc/shells に記載されている必要があります。PAM を使うプログラムでは、pam_shell モジュールによってチェックされます。
ノート: 新しく作成したユーザーにはパスワードを設定する必要があります。で説明されているように passwd を使います。
ヒント: 特定のサービス用にユーザーを作成する必要がある場合、シェルには /usr/bin/nologin を使って下さい。詳しくは nologin(8) を参照。

ユーザーを追加する例

典型的なデスクトップシステムでは、archie という名前の新しいユーザーを追加して、Bash をログインシェルに指定し、wheel グループに追加するには以下のコマンドを使います (詳しくは #ユーザーグループ を参照):

# useradd -m -G wheel -s /bin/bash archie
ヒント: ユーザーをグループに追加するのに躊躇する必要はありません。特定のアプリケーションをインストールしたり、何らかの設定をする場合など、必要に応じてユーザーをグループに追加する機会があるはずです。

新しく作成したユーザー archie にパスワードを設定する必要は必ずしもありませんが、設定することを強く推奨します:

# passwd archie

上記の useradd コマンドは archie という名前のグループも自動的に作成し、ユーザー archie の UID と同じ GID が設定されます。そしてログイン時に archie のデフォルトグループになります。ユーザーを追加するときは各ユーザーにグループを作るのが推奨されています (ユーザー名と同じグループ名、UID と同じ GID)。

users など別のグループをデフォルトにすることもできます:

# useradd -m -g users -G wheel -s /bin/bash archie

ただし、マルチユーザーシステムではデフォルトグループを使用するのは推奨されていません。大抵、ホームディレクトリをプレイベートにしながら特定のユーザーのグループと書き込みアクセスを共有する方法としてユーザーの umask の値は 002 に設定されており、デフォルトグループ (上の例なら users) は作成したファイル全てへの書き込み権限をデフォルトで持つことになります。ユーザー名と同じ名前のグループによって所有されている、ユーザーのホームディレクトリは他のシステムユーザーには読み取り専用になり、共有ファイル・フォルダは適当なグループに入っているメンバーによってデフォルトで書き込み可能になります。ディレクトリにグループのスティッキービットを設定することで、親ディレクトリを所有するグループに所有グループを自動的に固定することができます:

# chmod g+s our_shared_directory

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

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

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

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

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

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

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

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

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

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

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

The -m option also automatically creates the new directory and moves the content there.

ヒント: You can create a link from the user's former home directory to the new one. Doing this will allow programs to find files that have hardcoded paths.
# ln -s /my/new/home/ /my/old/home

Make sure there is no trailing / on /my/old/home.

To change a user's login name:

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

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

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

Also keep in mind the following notes:

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

ユーザー管理の他の例

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

# usermod -l newname oldname

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

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

-m オプションを付けると自動的に新しいディレクトリが作成され中身が移動します。

ヒント: 古いホームディレクトリから新しいホームディレクトリにリンクを貼ることもできます。次のコマンドを実行することでパスがハードコードされている場合でもプログラムからファイルを認識できるようになります (/my/old/home の末尾に / を付けないように注意してください): # ln -s /my/new/home/ /my/old/home

ユーザーを他のグループに追加するには:

# usermod -aG [additional_groups] [username]
警告: 上の usermod コマンドで -a オプションを外した場合、ユーザーは [additional_groups] 以外の全てのグループから削除されます (言い換えるとユーザーは [additional_groups] のグループのメンバーだけになるということです)。

また、gpasswd を使うことも可能です。ただし一度に追加(もしくは削除)できるグループは一つだけになります。

# gpasswd --add [username] [group]

GECOS (例: フルネーム) のユーザー情報を入力するには:

# chfn [username]

(インタラクティブモードで chfn が起動します)。

ユーザーのパスワードを設定するには:

# passwd [username]

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

# chage -d 0 [username]

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

# userdel -r [username]

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

ヒント: AUR のパッケージ adduserAUR には useradd, chfn, passwd を対話式に行うことができる 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 はユーザのデフォルトコマンドシェルへのパスです。このフィールドはオプションで、デフォルトは /bin/bash となります。

例:

archie:x:1001:1003:Archie,some comment here,,:/home/archie:/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) またはパッケージのインストールスクリプトによって追加/再追加されます。

自動整合性チェック

​ Instead of running pwck/grpck manually, the systemd timer shadow.timer, which is part of, and is enabled by, installation of the shadow package, will start shadow.service daily. shadow.service will run pwck(8) and grpck(8) to verify the integrity of both password and group files. ​ If discrepancies are reported, group can be edited with the vigr(8) command and users with vipw(8). This provides an extra margin of protection in that these commands lock the databases for editing. Note that the default text editor is vi, but an alternative editor will be used if the EDITOR environment variable is set, then that editor will be used instead.

グループ管理

/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 も参照してください。