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

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
 
(4人の利用者による、間の45版が非表示)
1行目: 1行目:
 
[[Category:セキュリティ]]
 
[[Category:セキュリティ]]
  +
[[ar:Users and groups]]
 
[[de:Benutzer und Gruppen]]
 
[[de:Benutzer und Gruppen]]
[[en:Users and Groups]]
+
[[en:Users and groups]]
[[es:Users and Groups]]
+
[[es:Users and groups]]
[[fr:Utilisateurs et Groupes]]
+
[[fr:Users and groups]]
[[it:Users and Groups]]
+
[[pt:Users and groups]]
[[ru:Users and Groups]]
+
[[ru:Users and groups]]
[[sr:Users and Groups]]
+
[[zh-hans:Users and groups]]
[[zh-CN:Users and Groups]]
 
[[zh-TW:Users and Groups]]
 
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related4|DeveloperWiki:UID / GID Database}}
 
{{Related4|DeveloperWiki:UID / GID Database}}
{{Related|polkit}}
+
{{Related|Sudo}}
  +
{{Related|Polkit}}
{{Related3|File permissions and attributes|ファイルのパーミッションと属性}}
 
  +
{{Related|ファイルのパーミッションと属性}}
{{Related3|Change username|ユーザーネームの変更}}
 
  +
{{Related|systemd-homed}}
  +
{{Related|パスワードリカバリ}}
  +
{{Related|アイデンティティ管理}}
 
{{Related articles end}}
 
{{Related articles end}}
   
GNU/Linux ではユーザーグループは[[Wikipedia:ja:アクセス制御#コンピュータセキュリティのアクセス制御|アクセス制御]]のために使われています — つまり、システムのファイル、ディレクトリ、周辺機器へのアクセスのコントロールに使われます。Linux は比較的シンプルかつ粗っぽいアクセス制御メカニズムをデフォルトで提供します。高度な制御については、[[ACL]] や [[LDAP Authentication]] を見て下さい。
+
GNU/Linux ユーザーグループは[[Wikipedia:ja:アクセス制御#コンピュータセキュリティのアクセス制御|アクセス制御]]のために使われています — つまり、システムのファイル、ディレクトリ、周辺機器へのアクセスのコントロールに使われます。Linux は比較的シンプルかつ粗っぽいアクセス制御メカニズムをデフォルトで提供します。高度な制御については、[[ACL]] や [[ケイパビリティ]]、[[PAM#設定方法]]を見て下さい。
   
 
== 概要 ==
 
== 概要 ==
  +
 
''ユーザー''とはコンピュータを使う全ての人のことです。ここで、名前がユーザーを表すことを説明しましょう。名前は Mary や Bill という風につけられ、実名のかわりに Dragonlady や Pirate といった名前を使うことができます。重要なのはコンピュータはそれぞれのアカウントに名前をつけていて、人々がコンピュータを使うためのアクセスを得るために名前を使うということです。システムサービスによっては制限・特権ユーザーアカウントを使って動作させることもあります。
 
''ユーザー''とはコンピュータを使う全ての人のことです。ここで、名前がユーザーを表すことを説明しましょう。名前は Mary や Bill という風につけられ、実名のかわりに Dragonlady や Pirate といった名前を使うことができます。重要なのはコンピュータはそれぞれのアカウントに名前をつけていて、人々がコンピュータを使うためのアクセスを得るために名前を使うということです。システムサービスによっては制限・特権ユーザーアカウントを使って動作させることもあります。
   
特定の方法でアクセスを制限することでセキュリティのためにユーザーの管理が行われます。スーパーユーザー (root) はオペレーティングシステムと設定全てにアクセスすることができます。そのため管理用途だけに使われることが想定されています。特権がないユーザーは [[su]] や [[sudo]] などのプログラムを使うことで特権を一時的に昇格することが可能です。
+
特定の方法でアクセスを制限することでセキュリティのためにユーザーの管理が行われます。[[Wikipedia:ja:スーパーユーザー|スーパーユーザー]] (root) はオペレーティングシステムと設定全てにアクセスすることができます。そのため管理用途だけに使われることが想定されています。特権がないユーザーはいくつかのプログラムによって[[アプリケーション一覧/セキュリティ#管理者権限|制御された特権昇格]]を行うことが可能です。
   
 
作成するアカウントにそれぞれ異なる名前を使えば、人々は複数のアカウントを持つことが可能です。さらに、"root" など、使うことができない予約済みの名前も存在します。
 
作成するアカウントにそれぞれ異なる名前を使えば、人々は複数のアカウントを持つことが可能です。さらに、"root" など、使うことができない予約済みの名前も存在します。
   
ユーザーは"グループ"に入れることでグループづけでき、グループに入ることでユーザーはグループで認められた特権的アクセスを利用することができます。
+
ユーザーは"グループ"にまとめることでき、グループに入ることでユーザーはグループで認められた特権的アクセスを利用することができます。
   
 
{{Note|ビギナーはツールを気をつけて使って下さい、自分のアカウント以外の''既存の''他のユーザーアカウントをいじらないようにしましょう。}}
 
{{Note|ビギナーはツールを気をつけて使って下さい、自分のアカウント以外の''既存の''他のユーザーアカウントをいじらないようにしましょう。}}
   
 
== パーミッションと所有権 ==
 
== パーミッションと所有権 ==
  +
[http://ph7spot.com/musings/in-unix-everything-is-a-file In UNIX Everything is a File] より:
 
  +
[https://web.archive.org/web/20190816135930/http://ph7spot.com/musings/in-unix-everything-is-a-file In UNIX Everything is a File] より:
   
 
:''UNIX オペレーティングシステムはデザイン、インターフェイス、文化と革命を形作った統一のアイデアとコンセプトを具体化しています。おそらくその中で一番重要なマントラが"全てのものはファイルである"であり、UNIX を定義付けるポイントとして広く受け取られています。''
 
:''UNIX オペレーティングシステムはデザイン、インターフェイス、文化と革命を形作った統一のアイデアとコンセプトを具体化しています。おそらくその中で一番重要なマントラが"全てのものはファイルである"であり、UNIX を定義付けるポイントとして広く受け取られています。''
36行目: 40行目:
 
:''このキーデザイン原理の構成は統一パラダイムの提供による幅広い入出力のアクセスです: ドキュメント、ディレクトリ、ハードドライブ、CD-ROM、キーボード、プリンター、モニター、ターミナル、インタープロセス、ネットワーク。トリックはこれらリソース全てに対して共通のアブストラクションを提供することで、UNIX の父たちは"ファイル"と呼びました。全ての"ファイル"が同じ API を使って扱われることにより、同じ基本的なコマンドセットを使ってディスク、キーボード、ドキュメント、ネットワークデバイスへの読み書きができます。''
 
:''このキーデザイン原理の構成は統一パラダイムの提供による幅広い入出力のアクセスです: ドキュメント、ディレクトリ、ハードドライブ、CD-ROM、キーボード、プリンター、モニター、ターミナル、インタープロセス、ネットワーク。トリックはこれらリソース全てに対して共通のアブストラクションを提供することで、UNIX の父たちは"ファイル"と呼びました。全ての"ファイル"が同じ API を使って扱われることにより、同じ基本的なコマンドセットを使ってディスク、キーボード、ドキュメント、ネットワークデバイスへの読み書きができます。''
   
[http://www.intel-research.net/Publications/Pittsburgh/101220041324_277.pdf 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 において全てのファイルはユーザーとグループによって所有されます。加えて、アクセス許可の3つのタイプが存在します: 読み込み、書き込み、そして実行。ファイルの所有ユーザー、所有グループ、(所有権をもっていない)第三者に対して異なるアクセス許可を適用することが可能です。[[Core Utilities#ls|ls]] コマンドによってファイルの所有者とパーミッションを確認できます:
+
GNU/Linux において全てのファイルは1つのユーザーと1つのグループによって所有されます。加えて、アクセス許可の3つのタイプが存在します: 読み込み、書き込み、実行です。ファイルの所有ユーザー、所有グループ、(所有権をもっていない)第三者に対してそれぞれ異なるアクセス許可を適用することが可能です。[[ls]] コマンドによってファイルの所有者とパーミッションを確認できます:
   
 
{{hc|$ ls -l /boot/|total 13740
 
{{hc|$ ls -l /boot/|total 13740
47行目: 51行目:
 
-rw-r--r-- 1 root root 1821573 Jan 12 00:31 initramfs-linux.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 1457315 Jan 8 08:19 System.map26
-rw-r--r-- 1 root root 2209920 Jan 8 08:19 vmlinuz-linux}}
+
-rw-r--r-- 1 root root 2209920 Jan 8 08:19 vmlinuz-linux
  +
}}
   
最初のカラムにファイルのパーミッションが表示されます (例えば、ファイル {{ic|initramfs-linux.img}} のパーミッションは {{ic|-rw-r--r--}})。34つめのカラムにはファイルの所有ユーザーとグループがそれぞれ示されます。この例では、全てのファイルは ''root'' ユーザーと ''root'' グループによって所有されています。
+
最初のにファイルのパーミッションが表示されます (例えば、ファイル {{ic|initramfs-linux.img}} のパーミッションは {{ic|-rw-r--r--}})。34列目にはファイルの所有ユーザーとグループがそれぞれ示されます。この例では、全てのファイルは ''root'' ユーザーと ''root'' グループによって所有されています。
   
 
{{hc|$ ls -l /media/|total 16
 
{{hc|$ ls -l /media/|total 16
drwxrwx--- 1 root vboxsf 16384 Jan 29 11:02 sf_Shared}}
+
drwxrwx--- 1 root vboxsf 16384 Jan 29 11:02 sf_Shared
  +
}}
   
 
この例では、{{ic|sf_Shared}} ディレクトリは ''root'' ユーザーと ''vboxsf'' グループによって所有されています。stat コマンドを使うことでもファイルの所有者とパーミッションを確認することができます:
 
この例では、{{ic|sf_Shared}} ディレクトリは ''root'' ユーザーと ''vboxsf'' グループによって所有されています。stat コマンドを使うことでもファイルの所有者とパーミッションを確認することができます:
58行目: 64行目:
 
所有ユーザー:
 
所有ユーザー:
   
{{hc|$ stat -c %U /media/sf_Shared/|root}}
+
{{hc|$ stat -c %U /media/sf_Shared/|
  +
root
  +
}}
   
 
所有グループ:
 
所有グループ:
   
{{hc|$ stat -c %G /media/sf_Shared/|vboxsf}}
+
{{hc|$ stat -c %G /media/sf_Shared/|
  +
vboxsf
  +
}}
   
 
アクセス権限:
 
アクセス権限:
   
{{hc|$ stat -c %A /media/sf_Shared/|drwxrwx---}}
+
{{hc|$ stat -c %A /media/sf_Shared/|
  +
drwxrwx---
  +
}}
   
 
アクセス許可は3つのグループの文字で表示され、それぞれ所有ユーザー、所有グループ、第三者のパーミッションを表しています。例えば、{{ic|-rw-r--r--}} はファイルの所有者は読み込みと書き込みが可能で、実行はできない ({{ic|rw-}}) ことを示していて、さらに所有グループに属しているユーザーとその他のユーザーは読み込みしかできない ({{ic|r--}} と {{ic|r--}}) ことを示しています。一方、{{ic|drwxrwx---}} はファイルの所有者と所有グループに属すユーザーが読み込み・書き込み・実行の全てができ ({{ic|rwx}} と {{ic|rwx}})、他のユーザーはアクセスを拒否される ({{ic|---}}) ことを示しています。一番最初の文字はファイルのタイプです。
 
アクセス許可は3つのグループの文字で表示され、それぞれ所有ユーザー、所有グループ、第三者のパーミッションを表しています。例えば、{{ic|-rw-r--r--}} はファイルの所有者は読み込みと書き込みが可能で、実行はできない ({{ic|rw-}}) ことを示していて、さらに所有グループに属しているユーザーとその他のユーザーは読み込みしかできない ({{ic|r--}} と {{ic|r--}}) ことを示しています。一方、{{ic|drwxrwx---}} はファイルの所有者と所有グループに属すユーザーが読み込み・書き込み・実行の全てができ ({{ic|rwx}} と {{ic|rwx}})、他のユーザーはアクセスを拒否される ({{ic|---}}) ことを示しています。一番最初の文字はファイルのタイプです。
   
あるユーザーやグループによって所有されているファイルを一覧するには {{ic|find}} コマンドを使います:
+
あるユーザーやグループによって所有されているファイルを一覧するには [[find]] コマンドを使います:
   
# find / -group [group]
+
# find / -group ''groupname''
   
# find / -user [user]
+
# find / -group ''groupnumber''
   
  +
# find / -user ''user''
ファイルの所有ユーザーやグループは {{ic|chown}} (change owner) コマンドで変更できます。ファイルのアクセス許可を変更するコマンドは {{ic|chmod}} (change mode) です。
 
   
  +
ファイルの所有ユーザーやグループは [[chown]] コマンドで変更できます。ファイルのアクセス許可を変更するコマンドは [[chmod]] です。
詳しくは [http://linux.die.net/man/1/chown man chown], [http://linux.die.net/man/1/chmod man chmod], や [http://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions Linux file permissions] を見て下さい。
 
   
  +
詳しくは {{man|1|chown}}、{{man|1|chmod}}、[https://www.linux.com/tutorials/understanding-linux-file-permissions Linux file permissions] を見て下さい。
==ファイル一覧==
 
  +
{{Warning|以下のファイルを直接編集してはいけません。ロックを正しく使ってデータベースのフォーマットを崩すことを避けるユーティリティが存在します。[[#ユーザー管理]] や [[#グループ管理]] を見て下さい。}}
 
  +
== Shadow ==
  +
  +
Arch Linux のユーザー、グループおよびパスワードの管理ツールは、{{Pkg|base}} [[メタパッケージ]] の依存関係である {{Pkg|shadow}} パッケージから取得されます。
  +
  +
== ファイル一覧 ==
  +
  +
{{Warning|以下のファイルを直接編集しないでください。ロックを正しく使ってデータベースのフォーマットを崩すことを避けるユーティリティが存在します。[[#ユーザー管理]] や [[#グループ管理]] を見て下さい。}}
   
 
{| class="wikitable"
 
{| class="wikitable"
93行目: 112行目:
 
|-
 
|-
 
| {{ic|/etc/group}} || ユーザーが属するグループの定義
 
| {{ic|/etc/group}} || ユーザーが属するグループの定義
|-
 
| {{ic|/etc/sudoers}} || sudo を実行できるユーザーのリスト
 
|-
 
| {{ic|/home/*}} || ホームディレクトリ
 
 
|}
 
|}
   
 
== ユーザー管理 ==
 
== ユーザー管理 ==
   
現在システムにログインしているユーザーを一覧するには {{ic|who}} コマンドを使います。
+
現在システムにログインしているユーザーを一覧するには ''who'' コマンドを使います。全てのユーザーアカウントと[[#ユーザーデータベース|ユーザーデータベース]]に保存されているプロパティを確認するには、root で {{ic|passwd -Sa}} を実行してください。出力されるフォーマットについては {{man|1|passwd}} の説明を読んでください
   
新しいユーザーを追加するときは {{ic|useradd}} コマンドを使って下さい:
+
新しいユーザーを追加するときは ''useradd'' コマンドを使って下さい:
   
# useradd -m -g [initial_group] -G [additional_groups] -s [login_shell] [username]
+
# useradd -m -G ''additional_groups'' -s ''login_shell'' ''username''
   
* {{ic|-m}} を使うとユーザのホームディレクトリ {{ic|/home/[username]}} 作成します。ホームディレクトリの中で、root でないユーザーがファイルの書き込み・削除、プログラムのンストーなどができます。
+
; {{ic|-m}}/{{ic|--create-home}}: ユーザのホームディレクトリ {{ic|/home/''username''}} 作成します。このディレクトリスケルトンディレクトリ内のファイルが配置されます。作成されるファイルは新しいユーザによって所有されます。
  +
; {{ic|-G}}/{{ic|--groups}}: ユーザの所属する補助グループのコンマで区切られたリストです。デフォルトでは、ユーザは主グループ (the initial group) にのみ所属します。
* {{ic|-g}} でユーザーのイニシャルログイングループのグループ名・ナンバーを定義します; グループ名が存在していなければなりません; グループナンバーが指定された時は、そのナンバーが既存のグループに参照されている必要があります; 指定されなかった場合は、useradd の挙動は {{ic|/etc/login.defs}} 内の {{ic|USERGROUPS_ENAB}} に基づきます。デフォルトの挙動 ({{ic|USERGROUPS_ENAB yes}}) ではユーザー名と同じ名前でグループを作成し、{{ic|GID}} は {{ic|UID}} と同じになります。
 
* {{ic|-G}} ユーザーがメンバーになる追加グループ(ト)を指定しま; グループはれぞれカマで区切り、スを入れてけません; デフォルトはイニャルグープにだけユーザーを属させます。
+
; {{ic|-s}}/{{ic|--shell}}: ユーザのロインシェ。[[Bash]] 以外のものを指定する場合、のシェルがインスルされていることを確認してください。新しく作成されたユーザのデフォルトシは {{ic|/etc/default/useradd}} で設定できます。
* {{ic|-s}} ではユーザーのデフォルトログインシェルのパスとファイル名を定義します; ブートプロセスが完了した後、ここに指定したシェルがデフォルトのログインシェルになります; [[Bash|Bash]] 以外のシェルを使うのなら、その選んだシェルのパッケージをインストールしておいてください。
 
   
{{Warning|ログインシェルは {{ic|/etc/shells}} に記載されている必要がありま。PAM を使うプログラムでは、{{ic|pam_shells}} モジュールによってチェックされます。}}
+
{{Warning|ログインできるようにするには、ログインシェルは {{ic|/etc/shells}} に記載されているものでなければなりませんさもないと、[[PAM]] モジュール {{man|8|pam_shells}} はログイン要求を拒否します。}}
   
{{Note|新しく作成たユーザにはパスワードを設定する必要があります。[[#ユーザー管理の他の|下]]で説明されているように ''passwd'' を使。}}
+
{{Note|新しく作成されたユーザには[[#ユーザーを追加する例]] で説明されているように ''passwd'' を使ってパスワードを設定しなければなりせん。}}
   
  +
初期のログイングループを名前か番号で指定する場合、すでに存在しているグループを参照しなければなりません。指定しない場合、''useradd'' の挙動は {{ic|/etc/login.defs}} 内の {{ic|USERGROUPS_ENAB}} 変数に依存します。デフォルトの挙動 ({{ic|USERGROUPS_ENAB yes}}) では、ユーザ名と同じ名前のグループを作成します。
{{Tip|特定のサービス用にユーザーを作成する必要がある場合、シェルには {{ic|/usr/bin/nologin}} を使って下さい。}}
 
  +
  +
特定のサービスのためにユーザアカウントを作成する場合など、ログインシェルが機能してほしくない場合、{{ic|/usr/bin/nologin}} をログインシェルとして指定することで、ログインを丁重に拒否することができます ({{man|8|nologin}} を見てください)。
  +
  +
サポートされている他のオプションについては {{man|8|useradd}} を見てください。
   
 
=== ユーザーを追加する例 ===
 
=== ユーザーを追加する例 ===
   
典型的なデスクトップシステムでは、{{ic|archie}} という名前の新しいユーザを追加しBash ログインシェルに指定し、{{ic|wheel}} グループに追加するには以下のコマンドを使ます (詳しくは [[#ユーザーグループ]] を参照):
+
以下のコマンドは、{{ic|archie}} という名前の新しいユーザを追加し、ホームディレクトリ作成し、グループ、ディレクトリ名、使用されシェル、それ他のパラメータ関してすべてデフォルト値を使用します:
   
# useradd -m -G wheel -s /bin/bash archie
+
# useradd -m archie
   
  +
新しく作成したユーザ {{ic|archie}} をパスワードで保護する必要はありませんが、パスワードで保護することが強く推奨されます:
このコマンドは {{ic|archie}} という名前のグループも自動的に作成し、ユーザー {{ic|archie}} の UID と同じ GID が設定されます。そしてログイン時に {{ic|archie}} のデフォルトグループになります。ユーザーを追加するときは各ユーザーにグループを作るのが推奨されています (ユーザー名と同じグループ名、UID と同じ GID)。
 
   
  +
# passwd archie
{{ic|users}} など別のグループをデフォルトにすることもできます:
 
   
  +
上記の ''useradd'' コマンドは、同時に {{ic|archie}} という名前のグループも自動的に作成し、そのグループを {{ic|archie}} のデフォルトのグループとします。ユーザを作成する際に各ユーザに (そのユーザと同じ名前の) 独自のグループを持たせることが推奨されています。
# useradd -m -g users -G wheel -s /bin/bash archie
 
   
ただし、マルチユーザシステムは推奨されていません。大抵ホームディレクトリをプレイベートにしながら特定のユーザーのグループ書き込みアクセスを共有する方法としてユーザの [[umask]] {{ic|002}} に設定ておりデフォルトグループ (上の例ら {{ic|users}}) は作成したファイル全てへの書き込み権限をデフォルトで持つことなります。ユーザー名と同じ名前のグループによって所有されている、ユーザホームディレクトリは他のシステムユーザーには読み取り専用になり、共有ファイル・フォルダは適当なグループに入っているメンバーによってデフォルトで書き込み可能になります。ディレクトリにグループスティッキビット設定することで、親ディレクトリを所有するグループに所有グループを自動的に固することができます:
+
{{ic|-g}} オプションを使うことで別のグループをデフォルトグループにすることもできますが、マルチユーザシステムにおいてすべてのユーザが単一のデフォルトグループ ([[#使われなくなったグループ|{{ic|users}}]] など) を使用することは推奨されていません。その理由は、特定のグループのユーザで書き込みアクセスを共有する方法は、ユーザの [[umask]] 値 {{ic|002}} に設定するというものですが、こたが作成したすべてのファイルデフォルトでデフォルトグループによってアクセス可能であることを意味するからです。[https://web.archive.org/web/20210724233134/https://security.ias.edu/node/441 User Private Groups] も参照しくださユーザが特定のグループメンバーになる必要がある場合、そ作成する際にそのグループを補助グループとして指してください。
  +
  +
推奨されるシナリオ (デフォルトグループの名前がユーザ名と同じ場合) では、デフォルトですべてのファイルはそれらのファイルを作成したユーザのみが書き込み可能です。特定のグループに書き込みアクセスを許可したい場合、そのグループに属している全員に対して共有ファイル/ディレクトリを書き込み可能にすることで可能です。ディレクトリにグループの [[ファイルのパーミッションと属性|setgid]] ビットを設定することで、親ディレクトリを所有するグループに所有グループを自動的に固定することができます:
   
 
# chmod g+s ''our_shared_directory''
 
# chmod g+s ''our_shared_directory''
   
そうない場合、ファイル作成者のデフォルトグループ (通常ユーザ名と同じです) が使れます。
+
そうない場合、ファイル作成者のデフォルトグループ (通常ユーザ名と同じ名前) が使用されます。
   
  +
一時的に GID を変更する必要がある場合、''newgrp'' コマンドを使用することで実行時にユーザのフォルトの GID を他の GID に変更できます。例えば、{{ic|newgrp ''groupname''}} を実行したあと、そのユーザによって作成されたファイルは (再ログインの必要とせずに) {{ic|''groupname''}} の GID と関連付けられます。デフォルトの GID に戻すには、グループ名無しで ''newgrp'' を実行してください。
=== ユーザー管理の他の例 ===
 
   
ユーザーを他ープに追加するには:
+
==== ユーザーのデフォト設定を変更する ====
# usermod -aG [additional_groups] [username]
 
   
  +
新しいアカウントを作成する際に用いられるデフォルト値は {{ic|/etc/default/useradd}} で設定されており、{{ic|useradd --defaults}} コマンドで確認できます。例えば、{{ic|1=SHELL=/usr/bin/''shell''}} を設定すると、デフォルトのシェルをグローバルに変更できます。また、{{ic|-s}}/{{ic|--shell}} オプションを使えば、アカウント毎にシェルを設定できます。{{ic|chsh -l}} を使えば、有効なログインシェルを一覧表示できます。
また、gpasswd を使うことも可能です。ただし一度に追加(もしくは削除)できるグループは一つだけになります。
 
# gpasswd --add [username] [group]
 
   
  +
{{ic|/etc/skel}} ディレクトリでは、新しく作成したユーザーのホームディレクトリへ追加するファイルを指定することもできます。これは、デスクトップ環境のような動作を実現するために設定ファイルを手動で編集する必要のあるミニマリズムなウィンドウマネージャにおいて便利です。例えば、新しく作成する全ユーザーに対してデフォルトのショートカットをセットアップするには:
{{Warning|上の {{ic|usermod}} コマンドで {{ic|-a}} オプションを外した場合、ユーザーは {{ic|[additional_groups]}} 以外の全てのグループから削除されます (言い換えるとユーザーは {{ic|[additional_groups]}} のグループのメンバーだけになるということです)。}}
 
   
  +
# mkdir /etc/skel/.config
''GECOS'' (例: フルネーム) のユーザー情報を入力するには:
 
  +
# cp ~archie/.config/sxhkd /etc/skel/.config
   
  +
また、[[ディスプレイマネージャ#セッションとして ~/.xinitrc を実行]] では、全ユーザーに対してディスプレイマネージャで xinitrc をオプションとして追加する方法について説明されています。
# chfn [username]
 
   
  +
=== システムユーザーを追加する例 ===
(インタラクティブモードで {{ic|chfn}} が起動します)。
 
   
  +
システムユーザーは、異なるユーザのもとでプロセス/デーモンを実行するために使用できます。([[chown]] を使うなどして) ファイルやディレクトリを保護するなど、コンピュータの堅牢化において様々な使用例があります。
ユーザーのパスワードを設定するには:
 
   
  +
以下のコマンドで、シェルへのアクセス権が無く、{{ic|home}} ディレクトリも持たないシステムユーザが作成されます (オプションで、{{ic|-U}} パラメータを追加するとユーザと同じ名前のグループも作成し、ユーザをそのグループに追加します):
# passwd [username]
 
  +
  +
# useradd --system -s /usr/bin/nologin ''username''
  +
  +
システムユーザが特定のユーザ ID およびグループ ID を必要とする場合、ユーザの作成時に {{ic|-u}}/{{ic|--uid}} オプションと {{ic|-g}}/{{ic|--gid}} オプションで ID を指定してください:
  +
  +
# useradd --system -u 850 -g 850 -s /usr/bin/nologin ''username''
  +
  +
=== ユーザーのログイン名やホームディレクトリを変更する ===
  +
  +
ユーザーのホームディレクトリを変更するには:
  +
  +
# usermod -d /my/new/home -m ''username''
  +
  +
このコマンドの {{ic|-m}} オプションは、自動的に新しいホームディレクトリを作成し、旧ホームディエレクトリ内の内容をそこへ移動します。
  +
  +
{{Tip|旧ホームディレクトリから新しいホームディレクトリへのリンクを作成することもできます。こうすることで、パスがハードコードされているプログラムがファイルを見つけれられるようになります。
  +
  +
# ln -s /my/new/home/ /my/old/home
  +
  +
{{ic|/my/old/home}} の末尾に {{ic|/}} が'''存在しない'''ことを確認してください。
  +
}}
  +
  +
ユーザのログイン名を変更するには:
  +
  +
# usermod -l ''newname'' ''oldname''
  +
  +
{{Warning|ユーザー名を変更するときは、変更対象のユーザーでログインしていないことを確認してください。新しい tty を開いて (例: {{ic|Ctrl+Alt+F6}}) root としてログインするか、他のユーザから [[アプリケーション一覧/セキュリティ#管理者権限|root に昇格]]してください。''usermod'' を使うことで間違えてユーザー名を変更することを防ぐことができます。}}
  +
  +
ユーザー名の変更は [[#ユーザー管理の他の例|usermod]] コマンドを使って正しく行えば安全かつ簡単です。ユーザーが同じ名前のグループに属している場合、[[#グループ管理|groupmod]] コマンドで変更できます。
  +
  +
または、{{ic|/etc/passwd}} ファイルを直接編集する方法もあります。詳しくは [[#ユーザーデータベース]] を見てください。
  +
  +
また、以下のことにも気をつけてください:
  +
  +
* [[sudo]] を使用する場合、{{ic|/etc/sudoers}} を更新して新しいユーザー名を反映させてください (root で ''visudo'' コマンドを使用)。
  +
* 個人用の [[cron#Crontab のフォーマット|crontab]] は、{{ic|/var/spool/cron}} 内のユーザーファイルを古い名前から新しい名前に変更し、{{ic|crontab -e}} を開いて相対パスを変更してファイルのパーミッションも調整する必要があります。
  +
* {{ic|~/.wine/drive_c/users}}、{{ic|~/.local/share/applications/wine/Programs}} などの中にある [[Wine]] の個人用フォルダ/ファイルのコンテンツは手動で名前を変更/編集する必要があります。
  +
* [https://www.enigmail.net/index.php/en/ Enigmail] など特定の Thunderbird アドオンは再インストールが必要かもしれません。
  +
* ホームディレクトリの絶対パス (つまり {{ic|/home/oldname}}) を使っているファイル (デスクトップショートカット、シェルスクリプトなど) は、ホームディレクトリの名前の変更を反映させる必要があります。シェルスクリプトでこういう問題が起こらないようにするには、ホームディレクトリを指定するときに {{Ic|~}} や {{Ic|$HOME}} 変数を使いましょう。
  +
* また {{ic|/etc/}} の設定ファイルで絶対パスを使っている場合は忘れずに編集してください (Samba や CUPS など)。どのファイルを編集すればいいかわからないときは grep コマンドを使います: {{ic|grep -r ''old_user'' *}}。
  +
  +
=== ユーザー管理の他の例 ===
  +
  +
[[#ユーザーデータベース|GECOS]] コメントにユーザ情報を入力するには (フルのユーザ名など)、以下を実行してください:
  +
  +
# chfn ''username''
  +
  +
(この方法では ''chfn'' はインタラクティブモードで実行します)。
  +
  +
あるいは、以下のように自由に GECOS コメントを設定することもできます:
  +
  +
# usermod -c "Comment" ''username''
   
 
ユーザーのパスワードを期限切れにして、次にログインした時に新しいパスワードを作るよう求めたいときは、次を実行してください:
 
ユーザーのパスワードを期限切れにして、次にログインした時に新しいパスワードを作るよう求めたいときは、次を実行してください:
   
# chage -d 0 [username]
+
# chage -d 0 ''username''
  +
  +
''userdel'' コマンドでユーザアカウントを削除できます:
  +
  +
# userdel -r ''username''
  +
  +
''userdel'' の {{ic|-r}} オプションは、ユーザのホームディレクトリとメールスプールも削除します。
  +
  +
ユーザのログインシェルを変更するには:
  +
  +
# usermod -s ''/usr/bin/bash'' ''username''
  +
  +
{{Tip|[[AUR]] のパッケージ {{AUR|adduser}} には ''useradd''、''chfn''、''passwd'' を対話式に行うことができる ''adduser'' スクリプトが入っています。{{Bug|32893}} も参照してください。}}
  +
  +
== ユーザーデータベース ==
  +
  +
ローカルユーザの情報はプレーンテキストの {{ic|/etc/passwd}} ファイルに保存されます。このファイル内の各行は1つのユーザアカウントを表しており、7つのフィールドがコロンで区切られて記述されています。
  +
  +
''account:password:UID:GID:GECOS:directory:shell''
   
  +
それぞれのフィールドの意味は以下のとおりです:
ユーザーアカウントは {{ic|userdel}} コマンドで削除できます。
 
   
  +
* {{ic|''account''}} はユーザ名です。このフィールドを空白にすることはできません。標準的な *NIX の命名規則が適用されます。
# userdel -r [username]
 
  +
* {{ic|''password''}} はユーザのパスワードです。{{Warning|1={{ic|passwd}} ファイルは全ユーザが読むことができます。なので、パスワード (ハッシュ化されているものなど) をこのファイルに保存することは安全ではありません。代わりに、Arch Linux では[[セキュリティ#パスワードのハッシュ|シャドウパスワード]]が使用されます。この場合、{{ic|password}} フィールドにはプレースホルダー文字 ({{ic|x}}) が代わりに記入され、アクセスが制限されている {{ic|/etc/shadow}} ファイルにハッシュ化されたパスワードが保存されていることを示します。そのような理由により、パスワードの変更には必ず '''passwd''' コマンドを使用することが推奨されます。}}
  +
* {{ic|''UID''}} はユーザ ID の数値です。Arch では、(サービスとは異なる) 一般ユーザの (root の後の) 最初のログイン名の UID はデフォルトで 1000 となります。その後のユーザの UID エントリは 1000 より大きい必要があります。
  +
* {{ic|''GID''}} はユーザのプライマリグループ ID の数値です。GID の数値は [[#グループ管理|/etc/group]] にリストアップされています。
  +
* {{ic|''GECOS''}} はオプションのフィールドで、ユーザの情報を格納するために使用されます。通常、このフィールドには完全なユーザ名が含まれますが、このフィールドは ''finger'' などのサービスによって使用されたり、[[#これらのデータベースに関連した他のツール|chfn]] コマンドによって管理されたりする可能性があります。このフィールドは任意で、空白のままにしておくこともできます。
  +
* {{ic|''directory''}} は、{{ic|$HOME}} 環境変数を設定するためにログインコマンドによって使用されます。独自のユーザを持ついくつかのサービスは {{ic|/}} を使用しますが、通常ユーザは普通 {{ic|/home}} 下のディレクトリを使用します。
  +
* {{ic|''shell''}} はユーザのデフォルト[[コマンドシェル]]へのパスです。このフィールドはオプションで、デフォルトは {{ic|/usr/bin/bash}} となります。
   
  +
例:
{{ic|-r}} オプションはユーザーのホームディレクトリとメールスプールも削除します。
 
   
  +
archie:x:1001:1003:Archie,''some comment here'',,:/home/archie:/usr/bin/bash
{{Tip|[[AUR|AUR]] のパッケージ {{AUR|adduser}}, {{AUR|adduser-defaults}}, {{AUR|adduser-deb}} には ''useradd'', ''chfn'', ''passwd'' を対話式に行うことができる ''adduser'' スクリプトが入っています。{{Bug|32893}} を参照。}}
 
   
  +
この例の意味は次のとおりです: ユーザ は {{ic|archie}} で、パスワードは {{ic|/etc/shadow}} に保存されており、UID は 1001 で、プライマリグループは 1003。Archie は完全な名前で、このアカウントに関連付けられたコメントが記入されています。このユーザのホームディレクトリは {{ic|/home/archie}} で、[[Bash]] を使用しています。
=== ユーザーデータベース ===
 
   
  +
''pwck'' を使うことで、ユーザデータベースの整合性を検証することができます。また、このコマンドはユーザのリストを GID によってソートします (比較の際に便利でしょう):
ローカルユーザー情報は {{ic|/etc/passwd}} ファイルに保存されます。システム内の全てのユーザーアカウントを一覧するには:
 
   
  +
# pwck -s
$ cat /etc/passwd
 
   
  +
{{Warning|{{Pkg|filesystem}} パッケージの新しいリリースがインストールされた際に、Arch Linux のデフォルトのファイルが [[pacnew ファイル]]として作成されます。Pacman が、アクションを促すメッセージを出力しない限り、これらの ''.pacnew'' ファイルは無視/削除できます (そして、そうすべきです)。必要な新しいデフォルトユーザとグループは、必要に応じて {{man|8|systemd-sysusers}} またはパッケージのインストールスクリプトによって追加/再追加されます。}}
一行毎にアカウントが表示され、そのフォーマットは:
 
   
  +
== 自動整合性チェック ==
account:password:UID:GID:GECOS:directory:shell
 
   
  +
{{ic|pwck}} や {{ic|grpck}} を自分で実行する代わりに、[[Systemd/タイマー|Systemd タイマー]] {{ic|shadow.timer}} は {{ic|shadow.service}} を毎日実行します ({{ic|shadow.timer}} は {{Pkg|shadow}} パッケージの一部であり、このパッケージのインストール時に自動で有効化されます)。{{ic|shadow.service}} は {{man|8|pwck}} と {{man|8|grpck}} を実行してパスワードファイルとグループファイルの両方の整合性を検証します。
それぞれの意味:
 
*{{ic|account}} はユーザーの名前
 
*{{ic|password}} はユーザーのパスワード
 
*{{ic|UID}} は数字のユーザー ID
 
*{{ic|GID}} はユーザーの数字のプライマリーグループ ID
 
*{{ic|GECOS}} は任意のフィールドでユーザーの情報を格納します; 通常ユーザーのフルネームを含めます
 
*{{ic|directory}} はユーザーの {{ic|$HOME}} ディレクトリ
 
*{{ic|shell}} はユーザーのコマンドインタプリタ (デフォルトは {{ic|/bin/sh}})
 
   
  +
不整合が報告された場合、グループは {{man|8|vigr}} コマンドで、ユーザは {{man|8|vipw}} コマンドで編集できます。これは、これらのコマンドがデータベースが編集されないようロックするという観点で、追加の保護を提供します。デフォルトのテキストエディタは vi ですが、{{ic|EDITOR}} [[環境変数]]を設定することで他のエディタを使用できます。
{{Note|1=Arch Linux は''暗号化した''パスワードを使っています。{{ic|passwd}} ファイルは誰からも読めるようになっており、(ハッシュ化されているかどうかにかかわらず)パスワードをこのファイルに保存するのは安全ではありません。代わりに、{{ic|password}} にはハッシュ化されたパスワードがアクセスが制限されたファイル {{ic|/etc/shadow}} に保存されていることを示すプレースホルダ文字 ({{ic|x}}) が入ります。}}
 
   
 
== グループ管理 ==
 
== グループ管理 ==
   
{{ic|/etc/group}} システム上のグループを定義するファイルです (詳しくは {{ic|man group}})。
+
{{ic|/etc/group}} は、システム上のグループを定義するファイルです (詳は {{man|5|group}} を見てください)。このファイルの仲間に {{ic|gshadow}} というものもありますが、これはめったに使用されません。詳細は {{man|5|gshadow}} を見てください
   
{{ic|groups}} コマンドでグループのメンバーを表示できます:
+
''groups'' コマンドでグループのメンバーを表示できます:
   
$ groups [user]
+
$ groups ''user''
   
{{ic|user}} 省略すると、現在使っているユーザーのグループ名が表示されます。
+
{{ic|''user''}} 省略された場合、現在のユーザが属しているグループが表示されます。
   
{{ic|id}} コマンドはユーザの UID や関連付けられた GID などの詳細情報を表示します:
+
''id'' コマンドは追加の詳細情報も出力します (ユーザの UID や関連付けられた GID など):
   
$ id [user]
+
$ id ''user''
   
 
システム上の全てのグループを一覧するには:
 
システム上の全てのグループを一覧するには:
207行目: 295行目:
 
$ cat /etc/group
 
$ cat /etc/group
   
{{ic|groupadd}} コマンドで新しいグループを作成できます:
+
''groupadd'' コマンドで新しいグループを作成できます:
   
# groupadd [group]
+
# groupadd ''group''
   
  +
{{Note|ユーザが現在ログイン中の場合、変更を適用するために一度ログアウトし、その後ログインし直す必要があります。}}
そしてユーザーをグループに追加するには {{ic|gpasswd}} コマンドを使います:
 
   
  +
そしてユーザーをグループに追加するには ''gpasswd'' コマンドを使います (エラーについては {{Bug|58262}} を見てください):
# gpasswd -a [user] [group]
 
   
  +
# gpasswd -a ''user'' ''group''
既存のグループは {{ic|groupmod}} で修正します。例えば gid を変更せずに {{ic|old_group}} グループの名前を {{ic|new_group}} に変更するには ({{ic|old_group}} によって所有されていたファイルは全て {{ic|new_group}} によって所有されるようになります):
 
   
  +
あるいは、''usermod'' でユーザをグループに追加できます ({{ic|''additional_groups''}} はコンマで区切られたリストに置き換えてください):
# groupmod -n [new_group] [old_group]
 
   
  +
# usermod -aG ''additional_groups'' ''username''
グループを削除するには:
 
   
  +
{{Warning|上記の ''usermod'' コマンドで {{ic|-a}} オプションを使用しない場合、ユーザは {{ic|''additional_groups''}} に含まれれていないグループすべてから削除されます (つまり、ユーザの属するグループは {{ic|''additional_groups''}} に含まれているグループだけになるということです)。}}
# groupdel [group]
 
   
  +
''groupmod'' コマンドで既存のグループを変更できます。例えば、{{ic|''old_group''}} グループの名前を {{ic|''new_group''}} に変更するには:
グループからユーザーを外すには:
 
   
  +
# groupmod -n ''new_group'' ''old_group''
# gpasswd -d [user] [group]
 
   
  +
{{Note|このコマンドはグループの名前を変更しますが、GID の数値は変更しません。なので、{{ic|''old_group''}} によって以前所有されていたすべてのファイルは、{{ic|''new_group''}} によって所有されるようになります。}}
グループに追加・削除したいユーザーがログイン中の場合、一度ログアウトしないと変更が適用されません。
 
  +
  +
既存のグループを削除するには:
  +
  +
# groupdel ''group''
  +
  +
グループからユーザを削除するには:
  +
  +
# gpasswd -d ''user'' ''group''
  +
  +
''grpck'' コマンドを使用することでシステムのグループファイルの整合性を検証できます。
  +
  +
{{Warning|{{Pkg|filesystem}} パッケージの新しいリリースがインストールされた際に、Arch Linux のデフォルトのファイルが ''.pacnew'' ファイルとして作成されます。Pacman が、アクションを促すメッセージを出力しない限り、これらの ''.pacnew'' ファイルは無視/削除できます (そして、そうすべきです)。必要な新しいデフォルトユーザとグループは、必要に応じて {{man|8|systemd-sysusers}} またはパッケージのインストールスクリプトによって追加/再追加されます。}}
   
 
== グループ一覧 ==
 
== グループ一覧 ==
  +
  +
このセクションでは {{Pkg|filesystem}} パッケージに含まれている主要なグループの用途を説明します。他にもグループは存在し、パッケージがインストールされたときに[[en2:DeveloperWiki:UID / GID Database|適当な GID]] を使って作成されます。詳しくはグループに関連するソフトウェアのページを見てください。
  +
  +
{{Note|パッケージを削除しても、自動的に作成されたユーザーやグループ (UID/GID) は削除されません。これは仕様であり、たとえ既にソフトウェアがアンインストールされていても、使用していたときに作成されたファイルがセキュリティ上のリスクにならないようにするための挙動です。}}
   
 
=== ユーザーグループ ===
 
=== ユーザーグループ ===
   
ワークステーション/デスクトップユーザはしばしば root でないユーザーを以下のグループに追加することで周辺機器やハードウェアアクセスを許可したりシステム管理を楽にします:
+
ワークステーション/デスクトップの非 root ユーザはしばしばハードウェア周辺機器にアクセスできるようにしたりシステム管理を楽にしたりするために、以下のグループのどれかに追加する必要があります:
   
 
{| class="wikitable"
 
{| class="wikitable"
! グループ || 影響があるファイル || 目的
+
! グループ || 影響を受けるファイル || 目的
 
|-
 
|-
  +
| adm || || 管理者グループ。一般的に、保護されたログに読み込みアクセスするために使用されます。このグループは [[journal]] ファイルへの完全な読み込みアクセス権を持ちます。
| games || {{ic|/var/games}} || ゲームソフトウェアへのアクセス。
 
 
|-
 
|-
  +
| ftp || {{ic|/srv/ftp/}} || [[アプリケーション一覧/インターネット#FTP サーバー|FTP サーバ]]により提供されているファイルへのアクセス。
| rfkill || {{ic|/dev/rfkill}} || 無線デバイスのパワーステートをコントロールする権限 ({{Pkg|rfkill}} が使用)。
 
 
|-
 
|-
| users || || 標準ザーグループ
+
| games || {{ic|/var/games}} || 一部ムソフトウェアへのアクセス
 
|-
 
|-
  +
| http || {{ic|/srv/http/}} || [[アプリケーション一覧/インターネット#ウェブサーバー|HTTP サーバ]]によって提供されているファイルへのアクセス。
| uucp || {{ic|/dev/ttyS[0-9]}}, {{ic|/dev/tts/[0-9]}}, {{ic|/dev/ttyACM[0-9]}} || モデムやハンドヘルド、RS-232 シリアルポートなどのシリアル・USB デバイス。
 
 
|-
 
|-
  +
| log || || [[syslog-ng]] によって作成された {{ic|/var/log/}} にあるログファイルへのアクセス。
| wheel || || 管理作業用グループ、通常 [[sudo|sudo]] や [[su|su]] コマンドに権限をわたすのに使われます (デフォルトではどちらも wheel を使いません、{{ic|/etc/pam.d/su}} や {{ic|/etc/pam.d/su-l}} で設定ができます)。[[systemd#Journal|journal]] ファイルへの完全な読み込みアクセスを取得するのにも使うことができます。
 
  +
|-
  +
| rfkill || {{ic|/dev/rfkill}} || ワイヤレスデバイスの電源状態の制御権 ([[rfkill]] によって使用されます)。
  +
|-
  +
| sys || || [[CUPS]] でのプリンタの管理権。
  +
|-
  +
| 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]] シリアルポートや、それらに接続されているデバイス。
  +
|-
  +
| wheel || || 管理者グループ。一般的に、管理者アクションを実行する権限を与えるために使用されます。このグループは [[journal]] ファイルへの完全な読み取りアクセス権と、[[CUPS]] でプリンタを管理する権限を持ちます。また、[[sudo]] や [[su]] ユーティリティへのアクセス権を与えるためにも使用されます (どちらのユーティリティもデフォルトではこのグループを使用しません)。
 
|}
 
|}
   
 
=== システムグループ ===
 
=== システムグループ ===
   
以下のグループはシステムのために使るものです。駆け出し Arch ユーザーに使う必要がありません:
+
以下のグループはシステムのために使用さす。これらのグループへのユーザの割り当て、限られた目的においてのみ必要になりま:
   
 
{| class="wikitable"
 
{| class="wikitable"
! グループ || 影響があるファイル || 目的
+
! グループ || 影響を受けるファイル || 目的
|-
 
| bin || なし || 歴史的な要因で残っているグループ。
 
|-
 
| daemon || ||
 
 
|-
 
|-
 
| dbus || || {{Pkg|dbus}} によって内部的に使用されます。
 
| dbus || || {{Pkg|dbus}} によって内部的に使用されます。
 
|-
 
|-
  +
| kmem || {{ic|/dev/port}}, {{ic|/dev/mem}}, {{ic|/dev/kmem}} ||
| ftp || {{ic|/srv/ftp}} || [[Proftpd]] などの [[Wikipedia:ja:File Transfer Protocol|FTP]] サーバーによって使われます。
 
 
|-
 
|-
  +
| locate || {{ic|/usr/bin/locate}}, {{ic|/var/lib/locate}}, {{ic|/var/lib/mlocate}}, {{ic|/var/lib/slocate}} || [[Locate]] を見てください。
| fuse || || ユーザーマウントを許可するために fuse によって使われます。
 
 
|-
 
|-
  +
| lp || {{ic|/dev/lp[0-9]*}}, {{ic|/dev/parport[0-9]*}} || パラレルポートのデバイスへのアクセス (プリンタなど)。
| http || ||
 
|-
 
| kmem || {{ic|/dev/port}}, {{ic|/dev/mem}}, {{ic|/dev/kmem}} ||
 
 
|-
 
|-
 
| mail || {{ic|/usr/bin/mail}} ||
 
| mail || {{ic|/usr/bin/mail}} ||
|-
 
| mem || ||
 
 
|-
 
|-
 
| nobody || || 非特権グループ。
 
| nobody || || 非特権グループ。
 
|-
 
|-
  +
| proc || {{ic|/proc/''pid''/}} || [https://docs.kernel.org/filesystems/proc.html proc ファイルシステム]の {{ic|1=hidepid=}} マウントオプションによって制限されているプロセス情報の取得を許可されているグループ。このグループは {{ic|1=gid=}} マウントオプションによって明示的に設定されなければなりません。
| polkitd || || [[polkit|polkit]] グループ。
 
 
|-
 
|-
| root || {{ic|/*}} || 完全なシステム管理とコントロール (root, admin)。
+
| root || {{ic|/*}} || 完全なシステム管理と制御 (root, admin)。
 
|-
 
|-
| smmsp || || [[Wikipedia:ja:Sendmail|sendmail]] グループ。
+
| smmsp || || [[sendmail]] グループ。
 
|-
 
|-
  +
| tty || {{ic|/dev/tty}}, {{ic|/dev/vcc}}, {{ic|/dev/vc}}, {{ic|/dev/ptmx}} ||
| systemd-journal || {{ic|/var/log/journal/*}} || systemd の完全なログへのアクセス。これがないと、ユーザーが生成したメッセージだけが表示されます。
 
  +
|-
  +
| utmp || {{ic|/run/utmp}}, {{ic|/var/log/btmp}}, {{ic|/var/log/wtmp}} ||
 
|-
 
|-
| tty || {{ic|/dev/tty}}, {{ic|/dev/vcc}}, {{ic|/dev/vc}}, {{ic|/dev/ptmx}} || 例: {{Ic|/dev/ACMx}} へのアクセス。
 
 
|}
 
|}
   
=== ソフトウェアグループ ===
+
=== systemd 以前のグループ ===
  +
以下のグループは特定のソフトウェアによって使われます。内部的に使用される場合もあり、その場合、ユーザーをグループに追加してはいけません。詳しくはソフトウェアのページを見て下さい。
 
  +
Arch が [[systemd]] に移行する前は、デバイスにアクセスできるようにするためにユーザを以下のグループに手動で追加する必要がありました。この方法は非推奨となっており、現在は [[udev]] がデバイスに {{ic|uaccess}} [https://github.com/systemd/systemd/blob/main/rules.d/70-uaccess.rules.in タグ]を付け、現在どのセッションがアクティブであるかに応じて ''logind'' が [[ACL]] を使って動的にユーザに権限を割り当てています。この仕組みを機能させるにはセッションが破壊されないようにしなければなりません ([[一般的なトラブルシューティング#セッションのパーミッション]]を参照)。
  +
  +
グループによってはユーザーを追加しなくてはいけない例外も存在します: 例えば、ログインしていない状態でユーザーからデバイスにアクセスしたい場合など。ただし、グループにユーザーを追加すると機能が破壊されることもあるので注意してください (例えば {{ic|audio}} グループを使用するとユーザーの高速切り替えが無効化されソフトウェアミキシングができなくなります)。
   
 
{| class="wikitable"
 
{| class="wikitable"
! グループ || 影響のあるファイル || 目的
+
! グループ || 影響を受けるファイル || 目的
 
|-
 
|-
  +
| audio || {{ic|/dev/audio}}, {{ic|/dev/snd/*}}, {{ic|/dev/rtc0}} || 全てのセッションでのサウンドハードウェアへの直接アクセス。リモートセッションで [[ALSA]] と [[OSS]] を動作させるために未だに必要になりますが ([[ALSA#ユーザー権限]] を参照)、そうするつもりでない場合にはこのグループを使用することは推奨されません。他の特定のディストリビューションとは異なり、このグループは[[リアルタイムプロセス管理#PAM の設定|リアルタイム権限]]を与えるために使用されていません。
| adbusers || {{ic|/dev/}} 下のデバイスノード || [[Android|Android]] Debugging Bridge にアクセスする権限。
 
 
|-
 
|-
  +
| disk || {{ic|/dev/sd[a-zA-Z]*[1-9]*}} || {{ic|optical}}、{{ic|floppy}}、{{ic|storage}} など他のグループによる影響を受けないブロックデバイスへのアクセス。
| avahi || ||
 
 
|-
 
|-
  +
| floppy || {{ic|/dev/fd[0-9]*}} || フロッピードライブへのアクセス。
| bumblebee || {{ic|/run/bumblebee.socket}} || [[Bumblebee|Bumblebee]] で NVIDIA Optimus GPU を利用してアプリケーションを起動する権限。
 
 
|-
 
|-
  +
| 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]。
| cdemu || {{ic|/dev/vhba_ctl}} || [[cdemu]] ドライブエミュレーションを使う権限。
 
 
|-
 
|-
| clamav || {{ic|/var/lib/clamav/*}}, {{ic|/var/log/clamav/*}} || [[ClamAV|Clam AntiVirus]] によって使われます。
+
| kvm || {{ic|/dev/kvm}} || [[KVM]] 使る仮想マシンへのアクセス
 
|-
 
|-
  +
| optical || {{ic|/dev/sr[0-9]}}, {{ic|/dev/sg[0-9]}} || CD や DVD ドライブなどの光学デバイスへのアクセス。
| gdm || X サーバーの認証ディレクトリ (ServAuthDir) || [[GDM|GDM]] グループ。
 
 
|-
 
|-
  +
| scanner || {{ic|/var/lock/sane}} || スキャナーハードウェアへのアクセス。
| locate || {{ic|/usr/bin/locate}}, {{ic|/var/lib/locate}}, {{ic|/var/lib/mlocate}}, {{ic|/var/lib/slocate}} || [[Wikipedia:updatedb|updatedb]] コマンドを使う権利。
 
 
|-
 
|-
  +
| 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]
| mpd || {{Ic|/var/lib/mpd/*}}, {{Ic|/var/log/mpd/*}}, {{Ic|/var/run/mpd/*}}, 任意の音楽ディレクトリ || [[Music Player Daemon|MPD]] グループ。
 
  +
現在では、カスタムの 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]。
|-
 
  +
| networkmanager || || [[NetworkManager|NetworkManager]] でワイヤレス接続するユーザーに必要。Arch ではこのグループはデフォルトで含まれていないので手動で追加する必要があります。
 
  +
また、[[Udisks|udisks/udisksctl]] を通して一部のデバイスを操作するために必要です。
|-
 
| ntp || {{Ic|/var/lib/ntp/*}} || [[Network Time Protocol daemon|NTPd]] グループ。
 
|-
 
| thinkpad || {{ic|/dev/misc/nvram}} || ThinkPad ユーザーによって [[tpb]] などのツールのアクセスのために使われます。
 
|-
 
| vboxsf || 仮想マシンの共有フォルダ || [[VirtualBox|VirtualBox]] によって使われます。
 
|-
 
| vboxusers || {{ic|/dev/vboxdrv}} || VirtualBox ソフトウェアを使う権利。
 
|-
 
| vmware || || [[VMware|VMware]] ソフトウェアを使う権限。
 
 
|-
 
|-
  +
| video || {{ic|/dev/fb/0}}, {{ic|/dev/misc/agpgart}} || ビデオキャプチャデバイス、2D/3D ハードウェアアクセラレーション、フレームバッファへのアクセス ([[X]]は、このグループに''属さなくとも''使用可能です)。
| wireshark || || [[Wireshark]] でパケットをキャプチャする権限。
 
 
|}
 
|}
   
 
=== 使われなくなったグループ ===
 
=== 使われなくなったグループ ===
  +
 
以下のグループは現在利用されていません:
 
以下のグループは現在利用されていません:
   
 
{| class="wikitable"
 
{| class="wikitable"
! グループ || 目的
+
! グループ || 影響を受けるファイル || 目的
 
|-
 
|-
  +
| bin || なし || 歴史的に存在していました。
| log || [[syslog-ng|syslog-ng]] によって作成された {{ic|/var/log}} のログファイルへのアクセス。
 
 
|-
 
|-
  +
| daemon || ||
| ssh || このグループのメンバーだけをログイン可能にするよう [[Secure Shell|Sshd]] を設定できます。
 
 
|-
 
|-
  +
| lock || || ロックファイルのアクセスのために使用されました。{{AUR|gnokii}} などがこれを必要とします。
| stb-admin || [http://system-tools-backends.freedesktop.org/ system-tools-backends] にアクセスする権限。
 
 
|-
 
|-
  +
| mem || ||
| kvm || 以前は root 以外のユーザーが [[KVM|KVM]] を使って仮想マシンにアクセスできるようにするために {{ic|kvm}} グループが使われていました。[[udev|udev]] ルールに取って代わって廃止され、自動的に行われるようになっています。
 
|}
 
 
==== systemd 以前のグループ ====
 
 
以下のグループは arch が [[systemd|systemd]] に移行したことで必要なくなったグループです。''logind'' セッションが破壊されないかぎり、必要になることはありません ([[一般的なトラブルシューティング#セッションのパーミッション]]を参照)。グループに追加すると逆に機能不全に陥る可能性もあります。詳しくは [[SysVinit#systemd への移行|SysVinit#systemd への移行]] を見て下さい。
 
 
{| class="wikitable"
 
! グループ || 影響のあるファイル || 目的
 
 
|-
 
|-
  +
| network || || デフォルトで使用されません。NetworkManager を使用する権限を与える場合などに使えます ([[NetworkManager#PolicyKit のパーミッションをセットアップする]]を参照)。
| audio || {{ic|/dev/audio}}, {{ic|/dev/snd/*}}, {{ic|/dev/rtc0}} || 全てのセッションでのサウンドハードウェアへの直接アクセス ([[Advanced Linux Sound Architecture|ALSA]] と [[OSS|OSS]] の両方で必要)。ローカルセッションはサウンドを再生したりミキサーを操作することができます。
 
 
|-
 
|-
  +
| power || ||
| camera || || [[デジタルカメラ]]へのアクセス。
 
 
|-
 
|-
  +
| uuidd || ||
| disk || {{ic|/dev/sda[1-9]}}, {{ic|/dev/sdb[1-9]}} || ''optical'', ''floppy'', ''storage'' など他のグループによる影響を受けないブロックデバイスへのアクセス。
 
 
|-
 
|-
  +
| users || || ({{ic|/etc/login.defs}} で {{ic|USERGROUPS_ENAB no}} を設定したり、''useradd'' の {{ic|-N}}/{{ic|--no-user-group}} オプションを使用したりしてユーザを作成する場合など) ユーザープライベートグループを使用しない場合 (通常、推奨されません) のユーザのプライマリグループです。
| floppy || {{ic|/dev/fd[0-9]}} || フロッピーディスクへのアクセス。
 
|-
 
| lp || {{ic|/etc/cups}}, {{ic|/var/log/cups}}, {{ic|/var/cache/cups}}, {{ic|/var/spool/cups}}, {{ic|/dev/parport[0-9]}} || プリンターハードウェアへのアクセス。プリンタージョブの管理を有効にします。
 
|-
 
| network || || [[NetworkManager|NetworkManager]] を使うときなどにネットワーク設定を変更する権限。
 
|-
 
| optical || {{ic|/dev/sr[0-9]}}, {{ic|/dev/sg[0-9]}} || CD や DVD ドライブなど[[光学ディスクドライブ]]へのアクセス。
 
|-
 
| power || || [[Pm-utils]] (サスペンド, ハイバネート...) などの電源管理コントロールを使う権限。
 
|-
 
| scanner || {{ic|/var/lock/sane}} || スキャナーハードウェアへのアクセス。
 
|-
 
| storage || || USB ハードドライブ、フラッシュ・ジャンプドライブ、MP3 プレイヤーなどリムーバルドライブへのアクセス。ユーザーによるストレージデバイスのマウントを有効にします。
 
|-
 
| sys || || [[CUPS|CUPS]] でプリンターを管理する権限。
 
|-
 
| video || {{ic|/dev/fb/0}}, {{ic|/dev/misc/agpgart}} || ビデオキャプチャデバイスや、2D/3D ハードウェアアクセラレーション、フレームバッファへのアクセス (このグループに''属さなくても'' [[Xorg|X]] は使えます)。ローカルセッションはハードウェアアクセラレーションやビデオキャプチャが利用できます。
 
 
|}
 
|}
  +
  +
== これらのデータベースに関連した他のツール ==
  +
  +
{{Accuracy|Arch Linux は本当に {{ic|vipw -s}} や {{ic|vigr -s}} よりも ''chage'' を推奨しているのか?}}
  +
  +
{{man|1|getent}} を使用することで特定のレコードを読み出すことができます。
  +
  +
$ getent group tty
  +
  +
[[#ユーザーデータベース]]で警告されているように、このようなデータベースを変更する際には、{{ic|passwd}} や {{ic|chfn}} といった特定のユーティリティを使うほうが良いです。それでもやはり、直接編集するほうが良い場合もあります。そのような場合のために {{ic|vipw}} や {{ic|vigr}} が提供されています。これらのツールはデータベースをロックして同時に編集されるのを防ぐので、一般的なテキストエディタよりもこれらの専用のエディターを使うことが強く推奨されます。また、これらのツールは無効なエントリや構文エラーを防止します。Arch Linux ではシャドウデータベースの変更するために {{pkg|util-linux}} の {{ic|vipw -s}} や {{ic|vigr -s}} よりも特定のツール (''chage'' など) の使用を推奨していることに注意してください。{{bug|31414}} も参照してください。
  +
  +
{{TranslationStatus|Users and groups|2024-07-28|812768}}

2024年7月28日 (日) 23:11時点における最新版

関連記事

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_shells(8) はログイン要求を拒否します。
ノート: 新しく作成されたユーザには、#ユーザーを追加する例 で説明されているように 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/shell を設定すると、デフォルトのシェルをグローバルに変更できます。また、-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#ユーザー権限 を参照)、そうするつもりでない場合にはこのグループを使用することは推奨されません。他の特定のディストリビューションとは異なり、このグループはリアルタイム権限を与えるために使用されていません。
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-07-28 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。