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