ユーザー アカウントにはユーザー名以上の意味があります。 Linux ユーザー アカウントに関連付けられたすべてのメタデータをコマンド ラインから設定および変更する方法を学びます。
名前って何?
Linux または Unix 系のコンピュータを使用している場合は、ユーザー アカウントを持っています。アカウントに付けられた名前は、ユーザー アカウント名です。これはログインに使用する名前です。 (デフォルトでは) ログイン グループの名前とホーム ディレクトリの名前でもあります。これらはすべて同じ識別子を使用します。
ユーザー アカウントごとに保存できる別の情報セットがあります。たとえば、個人のフルネーム、オフィス番号、職場の電話番号などの実世界のデータを定義して、それらのデータに添付できます。実際、完全に任意の情報の断片をユーザー アカウントにタグ付けすることができます。
実際には、これは、多数のユーザー アカウントが構成されているコンピュータを管理するシステム管理者にとってより便利です。しかし、シングルユーザーの Linux コンピューターであっても、内部で何が起こっているのかを知るのは常に興味深いことです。
GECOSフィールド
かつて、Unix の先駆者たちは独自のプリンタを持っていませんでした。彼らは 、ゼネラル・エレクトリック 総合オペレーティング・システム (GECOS) を実行しているゼネラル・エレクトリック のメインフレームに印刷ジョブをスプールする必要がありました。これを実現するには、Unix システム上のユーザーは、GECOS システム上のアカウントの資格情報を保存して使用する必要がありました。
GECOS フィールドは、これらの資格情報を保存するために作成されました。この非常にニッチな要件はとうの昔に歴史の中に消えており、GECOS フィールドはユーザー アカウントの所有者に関連する他のデータを保存するために再利用されています。新しい仕事があるかもしれませんが、古い名前は残ります。それは今でも GECOS フィールドと呼ばれています。
このフィールドは、ユーザー アカウントに関するその他の情報とともに
/etc/passwd
ファイルに保存されます。
- アカウントのユーザー名。
- ユーザーID。
- グループID。
- ユーザー アカウントのホーム ディレクトリへのパス。
- ユーザーのログイン時に起動されるシェル。
ここで、 finger コマンドと pinky コマンドが表示する情報を取得します。
chfn コマンド
chfn
(指情報の変更)
を使用すると、GECOS フィールド内に保存されている情報を設定および変更
できます。情報はフィールド内にカンマ区切りのリストとして保存されます。
chfn
コマンドは、Ubuntu 18.04.1 と Manjaro 18.1.0 にすでに存在していました。これは Fedora 31 にインストールする必要がありました。次のコマンドを使用してインストールします。
sudo dnf インストール util-linux-user
ユーザー アカウント「dave」の所有者についてどの
finger
が見つけられるかを見てみましょう。最大限の情報を取得するには、
-l
(ロングフォーマット) オプションを使用します。
指デイブ -l
見つけられるものは次のとおりです。
アカウントのユーザー名、ホーム ディレクトリ、およびデフォルトのシェルを取得します。これらはすべてユーザー アカウントに関連しています。これらは、そのアカウントを使用する実際の人物を指すものではありません。
chfn
コマンドを使用して、実際の人物に関する情報を保存できます。
シフンデイブ
このように
chfn
を使用すると、短い対話型プロセスが開始されます。 GECOS フィールドに保持できる各情報のデータ値を入力するように求められます。各データ値の現在値は括弧 [] 内に表示されます。現在のデータを保持したい場合は、「Enter」キーを押すと、括弧内の値が保持されます。
入力した情報は次のとおりです。
- 部屋番号 :512
- 職場の電話 : 555-4567
- 自宅の電話 : 555-5432
finger
その新しい情報を拾うことを確認してみましょう。
指デイブ -l
はい、そうです。ただし、フルネームの変更を求めるプロンプトが表示されなかったことに気づいたかもしれません。
sudo
使用する場合にのみこれが行われます。ただし、
sudo
を使用するのを忘れたからといって、
chfn
セッション全体を再度実行する必要はありません。データ値は個別に変更できます。
個々のデータ値の変更
-f
(フルネーム) オプションと
sudo
を併用することで、ユーザー アカウントの所有者のフルネームを設定できます。
sudo chfn -f "デイブ・マッケイ" デイブ
そしてもう一度
finger
で確認してみると:
フルネームが追加されていることがわかります。
部屋番号、自宅の電話番号、勤務先の電話番号を変更するオプションもあります。部屋 (オフィス) 番号を変更するには、
-r
(部屋番号) オプションを使用します。
sudo chfn -r 633 デイブ
一部のディストリビューションでは、
-r
オプションの代わりに
-o
(オフィスの部屋番号) オプションを使用する場合があることに注意してください。これについては後ほど詳しく説明します。現時点では、お使いの
chfn
のバージョンのオプションを確認するには、次のコマンドを使用します。
男シフン
オフィスの電話番号を変更するには、
-w
(職場の電話) オプションを使用します。
sudo chfn -w 555-1122 デイブ
最後に、自宅の電話番号を変更するには、
-h
(自宅の電話番号) オプションを使用します。
sudo chfn -h 555-6576 デイブ
もう一度
finger
を使用して、これらの変更がすべて受け入れられたかどうかを確認してみましょう。
指デイブ -l
成功。これらのコマンドはすべて機能し、データ値が更新されました。
他のユーザーアカウントでの chfn の使用
私たち自身の情報を変更することはこれまでにして、他のユーザーの GECOS 情報を変更する場合はどうでしょうか?それも同じくらい簡単です。その場合は
sudo
を使用する必要がありますが、違いはそれだけです。ユーザー アカウント mary にどのようなデータが設定されているかを確認してみましょう。
フィンガーメアリー -l
このユーザーアカウントには通常のデフォルト情報が設定されています。情報を追加しましょう。
須藤 chfn メアリー
以前と同じセッションを実行し、保存できる情報ごとにデータ値の入力を求められます。
sudo
を使用したため、フルネームのデータ値が求められます。
ちょっと待って、最後の「その他」という項目は何ですか?
これは
chfn
のすべてのバージョンでサポートされているわけではなく、
sudo
使用する場合にのみ表示されます。これが、以前に (意図的に)
sudo
を使用しなかったときにこれが表示されなかった理由です。
シフンデイブ
「その他」のデータ値には、任意のものを保持できます。いかなる使用法も想定されていません。
「Other」フィールドをサポートする
chfn
のバージョンでは、この値を直接変更する
-o
(other) オプションも提供します。一部のシステムでは「部屋番号」に
-r
を使用するのは、「オフィス番号」を表す
-o
と「その他」を表す
-o
が競合するためです。
less
使用すると、
/etc/paswd
ファイルにユーザー アカウント mary に保存されているデータを確認できます。
/etc/passwd を省略
これをサポートするシステム (
chfn
のバージョンの
man
ページを確認してください) では、
-o
(other) オプションを使用して「other」フィールドを直接設定できます。
sudo chfn -o "HTG フリーランサー" dave
そして、
less
コマンドを使用してユーザー アカウント dave のデータを確認できます。
/etc/passwd を省略
[ターミナル ウィンドウの asswd” width=”646″ height=”382″ />
そこで当然の疑問が生じます。
chfn
のバージョンが「その他」フィールドをサポートしていない場合、どうすれば変更できますか?
usermod
コマンドを使用してそれを行うことができます。
usermod コマンド
usermod
コマンドを使用すると、
グループ
へのユーザー アカウントの追加または削除、デフォルト シェルの変更などのアクションを通じて
、ユーザー アカウントの側面を変更
できます。 GECOS フィールドを直接操作するために使用することもできます。
/etc/passwd
ファイル内のユーザー アカウント mary の行を詳しく見てみましょう。
grep を使用してその行を分離します
。ユーザー名は一意である必要があるため、これは機能します。 mary という名前のユーザー アカウントは 1 つだけ存在できます。
grep mary /etc/passwd
etc/passwd
ファイル内のフィールドが表示されます。コロン「
:
」がフィールド区切り文字として使用されます。左から右に、フィールドは次のとおりです。
- アカウントのユーザー名。
-
このユーザー アカウントのパスワードを示す「x」は、
/etc/shadowファイルに暗号化されて保持されます。 - Mary ユーザー アカウントのユーザー ID。
- mary ユーザー アカウントのグループ ID。
- GECOS フィールド。
- mary ユーザー アカウントのホーム ディレクトリへのパス。
- Mary アカウントの所有者がログインするときに開始されるシェル。
コンマ「,」は、GECOS フィールド内のデータ値の区切り文字として使用されます。 GECOS フィールド内の値は、左から右に次のとおりです。
- フルネーム。
- 部屋(またはオフィス)番号。
- 職場の電話番号。
- 自宅の電話番号。
- その他の情報。
usermod
コマンドは、GECOS フィールド全体を指定した新しい値に設定することに注意してください。入力したのがその人のフルネームのみの場合、GECOS フィールドにはフルネームのみが表示されます。これは、保持したい既存のデータ値を提供する必要があることを意味します。
ここに例を示します。ユーザーのメアリーが昇進し、4階に異動することになりました。彼女は新しいオフィス番号と新しい職場の電話番号を取得し、ミドルネームを追加します。彼女の「その他」フィールドの値も変更されます。彼女の自宅の電話番号は変更されませんが、文字列で
usermod
に提供する必要があります。
-c
(コメント) オプションを使用し、
sudo
でコマンドを実行する必要があります。
sudo usermod -c "Mary Carol Quinn,405,5559654,555-7704,Linux Advocate" mary
grep
を使用して Mary の
/etc/passwd
ファイルの内容をレポートすると、新しい値が追加されたことがわかります。
grep mary /etc/passwd
すべては流動的であり、永続するものは何もない
不正確なデータには価値がありません。オフィスの移転、名前の変更、役職など、人物に関する情報が変更された場合、現在の役職を反映するようにメタデータを簡単に更新できます。
関連: 開発者と愛好家のための最高の Linux ラップトップ





