
Почему команда не выводит ps -U
список процессов пользователя username 0x00
, а наоборот, выводит список процессов root?
$ 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, начинающееся с цифры?
Имя пользователя, начинающееся с (десятичного) символа цифры, не рекомендуется. Предпочтительнее буквенный символ. Тогда имя пользователя будет легко отличимо от идентификатора пользователя (который является числовым значением).
Если вы создадите странное имя пользователя (особенно похожее на идентификатор пользователя, т. е. числовое значение), вы можете нарушить или получить странные результаты с некоторыми командами.
Как вы обнаружили, ps -u
команда не всегда может предоставить желаемые/ожидаемые вами результаты. Параметр u
принимает либо имя пользователя, либо идентификатор пользователя. Когда вы указываете имя пользователя, похожее на идентификатор пользователя (т. е. число), этот параметр может сделать неправильный выбор и обработать аргумент как идентификатор пользователя, а не как то, чем он является на самом деле.
Если вы настаиваете на нетрадиционном имени пользователя, которое не соответствует строгим правилам, то вам придется иметь дело с последствиями.
Одним из обходных путей является указание идентификатора пользователя, а не (неоднозначного) имени пользователя, если есть возможность выбора.