Một sinh viên chỉ hỏi những gì có thể là nhược điểm của việc có một dấu chấm ( .
) trong tên của người dùng. Ví dụ:john.doe
Làm thế nào điều này sẽ ảnh hưởng đến hệ thống hoặc bất kỳ ứng dụng cho vấn đề đó?
Một sinh viên chỉ hỏi những gì có thể là nhược điểm của việc có một dấu chấm ( .
) trong tên của người dùng. Ví dụ:john.doe
Làm thế nào điều này sẽ ảnh hưởng đến hệ thống hoặc bất kỳ ứng dụng cho vấn đề đó?
Câu trả lời:
POSIX nói điều này về tên người dùng:
[...] Để có thể di động trên các hệ thống tuân thủ theo tiêu chuẩn IEEE Std 1003.1-2001, giá trị này bao gồm các ký tự từ bộ ký tự tên tệp di động. Không nên sử dụng dấu gạch nối làm ký tự đầu tiên của tên người dùng di động.
... Trong đó bộ ký tự tên tệp di động là:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
0 1 2 3 4 5 6 7 8 9 . _ -
Ngoài ra, trang hướng dẫn cho /etc/adduser.conf
tập tin nêu rõ:
VALID NAMES
adduser and addgroup enforce conformity to IEEE Std 1003.1-2001,
which allows only the following characters to appear in group
and user names: letters, digits, underscores, periods, at signs
(@) and dashes. The name may not start with a dash. The "$" sign
is allowed at the end of usernames (to conform to samba).
An additional check can be adjusted via the configuration
parameter NAME_REGEX to enforce a local policy.
Trong khi cả hai thông số kỹ thuật dường như bao gồm dấu chấm, Ubuntu (ít nhất là trên 13.04 của tôi) dường như không cho phép:
⊳ sudo adduser as.df
adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX[_SYSTEM] configuration variable. Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.
Mặc định NAME_REGEX
trong Ubuntu là (từ /etc/adduser.conf
trang chủ):
^[a-z][-a-z0-9]*$
_
, @
hoặc .
.cuối cùng, một dấu chấm .
có thể được sử dụng cho tên người dùng Ubuntu, NAME_REGEX
chỉ cần thay đổi /etc/adduser.conf
. Xem như nó phù hợp với POSIX, không nên có bất kỳ vấn đề nào khi có .
tên người dùng với bất kỳ chương trình tuân thủ POSIX nào.
Chạy lệnh này trong một thiết bị đầu cuối:
sudo nano /etc/adduser.conf
Xác định vị trí dòng này (gần cuối tập tin)
#NAME_REGEX="^[a-z][-a-z0-9]*$"
và thay thế nó bằng
NAME_REGEX='^[a-z][-.a-z0-9]*$'
Lưu ý rằng -
phải giữ ký tự đầu tiên trong biểu thức ngoặc [...]
, nếu không, nó được coi là chỉ định một phạm vi a-z
.
Nhấn Ctrl+ X, sau đó Y, sau đó Enter.
Tài liệu tham khảo:
NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"
vào /etc/adduser.conf
đã làm.
useradd
thay thế : sudo useradd -m my.user
. Đó là những gì chúng tôi làm trong Userify và nó cũng là nền tảng chéo.
Các ứng dụng đọc tên người dùng có thể sử dụng regex giả sử tên người dùng của bạn tuân theo các quy tắc và do đó không thể xử lý tên người dùng của bạn.
Marc Haber giải thích một nhược điểm có thể xảy ra trong lỗi Debian # 604242 (Cho phép các dấu chấm trong tên người dùng theo mặc định):
Có dấu chấm trong tên người dùng sẽ tạo ra một số vấn đề với các scip sử dụng
chown
, vẫn chấp nhận các dấu chấm làm dấu phân cách giữa tên người dùng và tên nhóm. Nếuchown
vẫn chấp nhận dấu chấm, sẽ có các tập lệnh sử dụng ký hiệu này, nó sẽ bị hỏng nếu tên người dùng chứa dấu chấm.Tôi khuyên bạn nên giữ mặc định hiện tại (có thể được ghi đè bằng cấu hình cục bộ) cho đến khi
chown
ngừng chấp nhận dấu chấm làm dấu phân cách.
Và chown
vẫn chấp nhận dấu chấm là dấu phân cách, mặc dù nó không được ghi lại nữa. Tôi đồng ý khả năng tương thích POSIX sẽ chiếm ưu thế và tôi thực sự sử dụng tên người dùng có chứa dấu chấm trên một số hệ thống mà không có bất kỳ tác động bất lợi nào.