Linuxユーザー名はなぜ数字で始めることができないのですか?

Linuxユーザー名はなぜ数字で始めることができないのですか?

技術的な理由はありますか?これはLinuxまたはUnixの初期のアーティファクトですか?それでは、維持され続ける理由はありますか?

答え1

一部のコマンド(例chown:)はユーザー名または数値ユーザーIDを受け入れることができるため、すべての数値ユーザー名を受け入れると、そのコマンドは中断されます。

名前が数字で始まり、一部の文字を含めることを許可する規則は、努力する価値がないと見なすことができ、代わりに名前をアルファベット文字で始める必要があります。

編集する:

この場合、一部のディストリビューションはこの制限を超えたもので、他の回答で表示されます。GNUコアユーティリティドキュメント:

POSIXでは、最初に指定された文字列を名前で解析し、失敗した場合にのみそれをIDとして解釈するためにこれらのコマンドが必要です。

$ useradd 1000   # on most systems this will fail with:
                 # useradd: invalid user name '1000'
$ mkdir /home/1000
$ chown -R 1000 /home/1000   # This will first try to map
    # to username "1000", but this may easily be misinterpreted.

「0」というユーザーを追加すると、問題のみが発生します(UID 0 == rootユーザー)。ただし、グループ/ユーザーIDパラメータの前に「+」を付けて整数として解釈することができます。

答え2

以下は、Ubuntu 14.04で数字を使用したテストです。

root@ubuntu:~# useradd 232
root@ubuntu:~# mkdir /home/232
root@ubuntu:~# chown 232.232 /home/232
root@ubuntu:~# passwd 232
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@ubuntu:~# login
c2 login: 232
Password: 
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 4.4.0-22-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

 System information disabled due to load higher than 2.0

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.


$ 
$ whoami
232

Unicode U+1F600を使用する -

答え3

* Nixユーザー名は通常、ユーティリティーによって生成された32文字のストリングですuseradd。あなたが言ったように、これは初期のUnix(技術的にはBSD)標準の直接的な結果です。 FreeBSDのマニュアルページによるとpasswd(5)

ログイン名はハイフン(「-」)で始めることはできず、8ビット文字、タブ、スペース、または次の記号を含めることはできません。 `,:+&#%^()!@~*?<> =| /"'. ドル記号 (`$') は Samba で最後の文字としてのみ使用できます。 。

一部の* Nixシステムでは、ユーザー名に特殊文字が表示されるとあいまいなエラーが発生し、最終的に特殊文字が禁止されています。ほとんどの最新の*Nixシステムでは、passwd特殊文字のユーザー名をサポートするために変更/使用するのは比較的簡単ですがuseradd、ほとんどの人はほとんど影響を受けず、以前のバージョンとの非互換性を引き起こすため、重要ではない変更は気になりません。

編集する:
Adonisが言ったように、実際に最新のLinuxディストリビューションでこれを行うことは可能ですが、これは賢明ではありません(特に標準化されたプログラムやレガシープログラムに触れる場合)。

答え4

答えで指摘したように、Linuxユーザー名できるすべてデジタルです。しかし、これは多くのソフトウェアツール(および人間のシステム管理者)を混乱させるので、悪い考えです。

このため、例えば、完全な数字のユーザー名とグループ名は、RHEL 7では廃止され、RHEL 8では禁止されています。

8.7.1shadow-utils完全な数字 ユーザー名とグループ名は使用できなくなります。

そして、useraddコマンドはgroupaddユーザー名とグループ名に数字のみを含めることはできません。これらの名前が許可されていない理由は、ユーザーとグループの名前、およびユーザーとグループのID(数字)を使用する多くのツールを混同する可能性があるためです。数字のみで構成されたユーザー名とグループ名は、Red Hat Enterprise Linux 7では廃止され、そのサポートはRed Hat Enterprise Linux 8から完全に削除されました。

関連情報