ps -U
なぜコマンドはユーザー名のプロセスをリストせず0x00
、逆にルートのプロセスをリストするのでしょうか。
$ id
uid=1000(0x00) gid=1000(0x00) groups=1000(0x00),3(sys),90(network),98(power),108(vboxusers),952(libvirt),956(docker),991(lp),998(wheel)
$ whoami
0x00
$ ps -fu 0x00 | grep -i vbox | grep -v grep
root 468 2 0 09:02 ? 00:00:00 [iprt-VBoxTscThread]
$ ps -fu 1000 | grep -i vbox | grep -v grep
0x00 35855 1332 0 10:44 ? 00:00:02 /usr/lib/virtualbox/VBoxXPCOMIPCD
0x00 35861 1332 0 10:44 ? 00:00:05 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
数字で始まるユーザー名をエラーなく作成できます。
$ sudo useradd -M -s /usr/bin/nologin 0x01
$ id 0x01
uid=1001(0x01) gid=1001(0x01) groups=1001(0x01)
Linux のユーザー名を数字で始めるのは推奨されないのでしょうか?
カーネルに関する追加情報:
$ uname -a
Linux 0xff1 6.7.4-2-MANJARO #1 SMP PREEMPT_DYNAMIC Sat Feb 10 09:41:20 UTC 2024 x86_64 GNU/Linux
答え1
数字で始まるユーザー名をエラーなく作成できます。
Linuxディストリビューションの中には、ユーザー名がアルファベット文字で始まるというルールを強制しないものもあります。あるいは、特殊文字を禁止しているものもあります。Linux のユーザー名はなぜ数字で始められないのですか?
ある回答では、Ubuntu はユーザー名を受け入れると報告されています&#%^()!@~*?<>=|
。
Linux のユーザー名を数字で始めるのは推奨されないのでしょうか?
数字 (10 進数) で始まるユーザー名は推奨されません。アルファベット文字が推奨されます。そうすれば、ユーザー名はユーザー ID (数値) と簡単に区別できます。
奇妙なユーザー名 (特にユーザー ID に似た、つまり数値) を作成すると、一部のコマンドが機能しなくなったり、奇妙な結果になったりすることがあります。
ご存じのとおりps -u
、コマンドは必ずしも希望どおりの結果をもたらすとは限りません。このu
オプションはユーザー名またはユーザー ID のいずれかを受け入れます。ユーザー ID に似たユーザー名 (つまり数値) を指定すると、このオプションは誤った選択を行い、引数を実際のユーザー ID ではなくユーザー ID として扱う場合があります。
厳格な規則に従わない型破りなユーザー名にこだわる場合は、その結果に対処する必要があります。
回避策の 1 つは、選択肢がある場合は、(あいまいな) ユーザー名ではなく、常にユーザー ID を提供することです。