Những bất lợi của việc có một dấu chấm trong tên người dùng là gì?


27

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:


38

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.conftập tinBiểu tượng trang 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.

Tuy nhiên,

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_REGEXtrong Ubuntu là (từ /etc/adduser.conftrang chủ):

^[a-z][-a-z0-9]*$
  • Bắt đầu bằng một chữ cái viết thường sau đó bất kỳ số dấu gạch ngang, chữ thường hoặc chữ số. Không _, @hoặc ..

Vì thế,

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_REGEXchỉ 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.

Để kích hoạt một dấu chấm trong tên người dùng

  1. Chạy lệnh này trong một thiết bị đầu cuối:

    sudo nano /etc/adduser.conf
    
  2. 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.

  3. Nhấn Ctrl+ X, sau đó Y, sau đó Enter.


Tài liệu tham khảo:


@ vasa1 Cảm ơn bạn đã chỉ ra rằng, đã sửa.
kiri

2
Xin chào minerz029, trước khi chấp nhận câu trả lời mà theo như tôi thấy, đây là một câu hỏi tuyệt vời, bạn có thể vui lòng cung cấp lý do tại sao Ubuntu sẽ đưa ra quyết định này.
Luis Alvarado

2
@LuisAlvarado: Có thể đó là khả năng tương thích với các chương trình [không POSIX] có tên người dùng sử dụng bộ ký tự giới hạn hơn. Các ký tự mà Ubuntu cho phép theo mặc định hầu như được đảm bảo để hoạt động trong hầu hết các chương trình. Trang quản trị người dùng mô tả regex mặc định là "bảo thủ nhất", nằm ở phía an toàn hơn của tên người dùng.
kiri

1
Điều này đã không làm việc cho tôi, nhưng thêm NAME_REGEX="^[a-z][-a-z0-9_.]*\$?$"vào /etc/adduser.confđã làm.
Mario

1
Đừng thay đổi regex. Chỉ cần gọi useraddthay 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.
Jamieson Becker

3

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.


Nhưng bằng nhau, sau đó họ có thể đưa ra các giả định va chạm với các giả định được tạo bởi distro, phải không?
0xC0000022L

3

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ếu chownvẫ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 chownngừng chấp nhận dấu chấm làm dấu phân cách.

chownvẫ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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.