Users and Groups (日本語)

From ArchWiki

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
概括 help replacing me
この記事ではユーザーやグループアカウントの管理方法について説明します。ただしデスクトップ環境が提供するグラフィカルなユーザー・グループ管理ツールについてはここでは触れません。
概要
Template:Access control overview (日本語)
関連項目
DeveloperWiki:UID / GID Database
PolicyKit
chmod
Change username

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

概要

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

特定の方法でアクセスを制限することでセキュリティのためにユーザーの管理が行われます。

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

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

Note: The beginner should use these tools carefully and stay away from having anything to do with any other existing user account, other than their own.

パーミッションと所有権

In UNIX Everything is a File より:

The UNIX operating system crystallizes a couple of unifying ideas and concepts that shaped its design, user interface, culture and evolution. One of the most important of these is probably the mantra: "everything is a file," widely regarded as one of the defining points of UNIX.
This key design principle consists of providing a unified paradigm for accessing a wide range of input/output resources: documents, directories, hard-drives, CD-ROMs, modems, keyboards, printers, monitors, terminals and even some inter-process and network communications. The trick is to provide a common abstraction for all of these resources, each of which the UNIX fathers called a "file." Since every "file" is exposed through the same API, you can use the same set of basic commands to read/write to a disk, keyboard, document or network device.

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

A fundamental and very powerful, consistent abstraction provided in UNIX and compatible operating systems is the file abstraction. Many OS services and device interfaces are implemented to provide a file or file system metaphor to applications. This enables new uses for, and greatly increases the power of, existing applications — simple tools designed with specific uses in mind can, with UNIX file abstractions, be used in novel ways. A simple tool, such as cat, designed to read one or more files and output the contents to standard output, can be used to read from I/O devices through special device files, typically found under the /dev directory. On many systems, audio recording and playback can be done simply with the commands, "cat /dev/audio > myfile" and "cat myfile > /dev/audio," respectively.

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

$ ls /boot/ -l
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 kernel26-fallback.img
-rw-r--r-- 1 root root 1821573 Jan 12 00:31 kernel26.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 vmlinuz26

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

$ ls /media/ -l
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 [group]
# find / -user [user]

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

詳しくは man chown, man chmod, や Linux file permissions を見て下さい。

ファイル一覧

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

ユーザー管理

現在システムにログインしているユーザーを一覧するには who コマンドを使います。

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

# useradd -m -g [initial_group] -G [additional_groups] -s [login_shell] [username]
  • -m を使うとユーザーのホームディレクトリ /home/[username] を作成します; ホームディレクトリの中では、root でないユーザーがファイルの書き込み・削除、プログラムのインストールなどができます。
  • -g でユーザーの最初のログイングループのグループ名・ナンバーを定義します; グループ名が存在していなければなりません; グループナンバーが指定された時は、そのナンバーが既存のグループに参照されている必要があります; 指定されなかった場合は、useradd の挙動は /etc/login.defs 内の USERGROUPS_ENAB に基づきます。
  • -G introduces a list of supplementary groups which the user is also a member of; each group is separated from the next by a comma, with no intervening spaces; the default is for the user to belong only to the initial group.
  • -s defines the path and filename of the user's default login shell; Arch Linux init scripts use Bash; after the boot process is complete, the default login shell is the one specified here; ensure the chosen shell package is installed if choosing something other than Bash.

典型的なデスクトップの例として、bash をログインシェルに指定して archie という名前のユーザーを追加:

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

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

# chfn [username]

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

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

# passwd [username]

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

# userdel -r [username]

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

ユーザーデータベース

ローカルユーザー情報は /etc/passwd ファイルに保存されます。システム内の全てのユーザーアカウントを一覧するには:

$ cat /etc/passwd

一行毎にアカウントが表示され、そのフォーマットは:

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

それぞれの意味:

  • account はユーザーの名前
  • password はユーザーのパスワード
  • UID は数字のユーザー ID
  • GID はユーザーの数字のプライマリーグループ ID
  • GECOS は任意のフィールドでユーザーの情報を格納します; 通常ユーザーのフルネームを含めます
  • directory はユーザーの $HOME ディレクトリ
  • shell はユーザーのコマンドインタプリタ (デフォルトは /bin/sh)
Note: Arch Linux は暗号化したパスワードを使っています。passwd ファイルは誰からも読めるようになっており、(ハッシュ化されているかどうかにかかわらず)パスワードをこのファイルに保存するのは安全ではありません。代わりに、password にはハッシュ化されたパスワードがアクセスが制限されたファイル /etc/shadow に保存されていることを示すプレースホルダ文字 (x) が入ります。

グループ管理

/etc/group がシステム上のグループを定義するファイルです (詳しくは man group)。

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

$ groups [user]

user を省略すると、現在使っているユーザーのグループ名が表示されます。

id コマンドはユーザーの UID や関連付けられた GID などの詳細情報を表示します:

$ id [user]

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

$ cat /etc/group

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

# groupadd [group]

そしてユーザーをグループに追加するには gpasswd コマンドを使います:

# gpasswd -a [user] [group]

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

# groupdel [group]

グループからユーザーを外すには:

# gpasswd -d [user] [group]

グループに追加・削除したいユーザーがログイン中の場合、一度ログアウトしないと変更が適用されません。

グループ一覧

ユーザーグループ

Note: グループの一部は systemd を使っている場合は必要ありません。ここを見て下さい。
Note: (ログインしたのとは別の VT で X を起動するなどして) logind (もしくは consolekit) セッションが壊されない限り、サウンド、3D、プリント、マウントなど普通のデスクトップで使うために必要なグループはありません。

Workstation/desktop users often add their non-root user to some of following groups to allow access to peripherals and other hardware and facilitate system administration:

グループ 影響があるファイル 目的
audio /dev/audio, /dev/snd/*, /dev/rtc0 Direct access to sound hardware, for all sessions (requirement is imposed by both ALSA and OSS). Local sessions already have the ability to play sound and access mixer controls.
camera Access to Digital Cameras.
disk /dev/sda[1-9], /dev/sdb[1-9] Access to block devices not affected by other groups such as optical, floppy, and storage.
floppy /dev/fd[0-9] Access to floppy drives.
games /var/games Access to some game software.
locate /usr/bin/locate, /var/lib/locate, /var/lib/mlocate, /var/lib/slocate Right to use updatedb command.
lp /etc/cups, /var/log/cups, /var/cache/cups, /var/spool/cups Access to printer hardware; enables the user to manage print jobs.
network Right to change network settings such as when using NetworkManager.
networkmanager Requirement for your user to connect wirelessly with NetworkManager. This group is not included with Arch by default so it must be added manually.
optical /dev/sr[0-9], /dev/sg[0-9] Access to optical devices such as CD and DVD drives.
power Right to use Pm-utils (suspend, hibernate...) and power management controls.
scanner /var/lock/sane Access to scanner hardware.
storage Access to removable drives such as USB hard drives, flash/jump drives, MP3 players; enables the user to mount storage devices.
sys Right to admin printers in CUPS.
uucp /dev/ttyS[0-9], /dev/tts/[0-9] Serial and USB devices such as modems, handhelds, RS-232/serial ports.
video /dev/fb/0, /dev/misc/agpgart Access to video capture devices, 2D/3D hardware acceleration, framebuffer (X can be used without belonging to this group). Local sessions already have the ability to use hardware acceleration and video capture.
wheel Administration group, commonly used to give access to the sudo and su commands (neither uses it by default). Will be used in the future by systemd to allow starting/stopping services as non-root.[1]

システムグループ

以下のグループはシステムのために使われるものです。駆け出しの Arch ユーザーには使う必要がありません:

グループ 影響があるファイル 目的
adm /var/log/journal/* Provides access to the complete systemd logs. Otherwise, only user generated messages are displayed.
avahi
bin /usr/bin/* Read-only access to the binary files in /usr/bin/
clamav /var/lib/clamav/*, /var/log/clamav/* Used by Clam AntiVirus.
daemon
dbus /var/run/dbus/*
ftp /srv/ftp used by FTP servers like Proftpd
gdm X server authorization directory (ServAuthDir) GDM group.
hal /var/run/hald, /var/cache/hald
http
kmem /dev/port, /dev/mem, /dev/kmem
log /var/log/* Access to log files in /var/log.
mail /usr/bin/mail
mem
mpd /var/lib/mpd/*, /var/log/mpd/*, /var/run/mpd/*, optionally music directories MPD group.
nobody Unprivileged group.
ntp /var/lib/ntp/* NTPd group.
policykit PolicyKit group.
root /* Complete system administration and control (root, admin).
smmsp sendmail group.
tty /dev/tty, /dev/vcc, /dev/vc, /dev/ptmx Eg. to acces /dev/ACMx
users Standard users group.
vboxsf virtual machines' shared folders Used by VirtualBox.
fuse Used by fuse to allow user mounts.

ソフトウェアグループ

以下のグループはメンバーに特定のソフトウェアの利用を許可します:

グループ 影響のあるファイル 目的
adbusers devices nodes under /dev/ Right to access Android Debugging Bridge.
cdemu /dev/vhba_ctl Right to use cdemu drive emulation.
kvm /dev/kvm Benefit from KVM's-Hardware-assisted virtualization speed if your Processor features either Intel's VT-x or AMD's AMD-V extension.
thinkpad /dev/misc/nvram Used by ThinkPad users for access to tools such as tpb.
vboxusers /dev/vboxdrv Right to use VirtualBox software.
vmware Right to use VMware software.
ssh Sshd can be configured to only allow members of this group to login.
wireshark Right to capture packets with Wireshark.

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

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

グループ 目的
rfkill Unused! Right to control wireless devices power state (probably should be used by rfkill).
stb-admin Unused! Right to access system-tools-backends