Tại sao giới hạn độ dài tên người dùng tối đa là 8 ký tự?


13

Trong suốt sự nghiệp khiêm tốn của tôi trong CNTT, tôi thường thấy chiều dài tên người dùng bị giới hạn (thường là 8 ký tự). Điều này xảy ra trên một loạt các hệ thống bao gồm Active Directory và các ứng dụng cơ sở dữ liệu.

Có một lý do cho điều này? Có thực hành tốt nhất liên quan đến việc tạo tên người dùng?


1
Câu hỏi hay nhưng tôi rùng mình mỗi khi thấy thuật ngữ "thực hành tốt nhất". Không có con vật nào như vậy.
John Gardeniers

Câu trả lời:


14

Đó là một hạn chế của các hệ thống Unix kế thừa và đặc biệt là dịch vụ thư mục NIS . Thông thường, hạn chế này chỉ được áp dụng nếu tổ chức đang cố gắng giữ cho tên người dùng nhất quán trên tất cả các ứng dụng (thường là một ý tưởng tốt).


1
+1, mẫu số chung thấp nhất gây ra rất nhiều hạn chế này. AD có thể hỗ trợ 256 tên người dùng char, nhưng máy chủ Solaris 7 trong lõi buộc tối đa 8 ký tự. Ngoài ra, các hạn chế tương tự áp dụng cho chiều dài mật khẩu.
sysadmin1138

Oh, hey, người viết blog tôi thỉnh thoảng đọc. Sup? :)
jgoldschrafe

1
Và trên các hệ thống MSWindows - được kế thừa từ giới hạn 8 ký tự MSDOS trong một tên tệp
symcbean

Không, điều đó đã bị loại bỏ - với Windows 95. Ngay cả Fat cũng có bản nâng cấp bao gồm cả chế độ tương thích;)
TomTom

6

Vấn đề chính tôi gặp phải gần đây là ps trên Solaris (10), nó tắt các ký tự thứ 9 +, vì vậy, ví dụ nếu bạn cần grep cho tên người dùng thì nó sẽ không khớp.

$ sudo -u longusername ps -fu longusername
     UID   PID  PPID   C    STIME TTY         TIME CMD
longuser 14012 11985   0 09:58:39 pts/2       0:00 ps -fu longusername

Nếu bạn thực hiện một ls -l trên một thư mục chứa các tệp thuộc về người dùng đó, các cột sẽ bị đẩy ra khỏi căn chỉnh.

$ ls -ld /export/home/l*
drwxr-xr-x   2 lauser   users        6 Mar 23 10:21 /export/home/lzuser
drwxr-xr-x   2 longusername users        6 May  4 10:02 /export/home/longusername
drwxr-xr-x   2 lzuser   users        6 Mar 12 11:21 /export/home/lzuser

Về cơ bản, bạn sẽ cần cảnh giác với bất kỳ công cụ nào xử lý tên đăng nhập và không chỉ UID. Điều đó có thể bao gồm những thứ đọc từ hoặc ghi vào tệp nhật ký hoặc cơ sở dữ liệu hoặc sử dụng đầu ra của các công cụ như cuối cùng, ai, ngón tay, ls, ps, v.v.

Google nhanh chóng xuất hiện trang này:

http://fixunix.com/sun/113647-username-lenght-more-then-8-char character.html

Mà thêm một số lý do.

Liên quan đến các thực tiễn tốt nhất để tạo tên người dùng, cũng có thể có các biến chứng từ việc sử dụng thông tin đăng nhập trong thủ đô thay vì chữ thường, do đó cũng nên tránh.

Khi một số hệ thống (cũ hơn), khi thấy thông tin đăng nhập chỉ bằng chữ hoa, chúng sẽ mặc định giả định rằng thiết bị đầu cuối của người dùng không hỗ trợ chữ thường, vì vậy hãy đặt MỌI THỨ thành chữ hoa (có thể ngăn nhập mật khẩu và có thể nhập Các lệnh Unix khi bạn đăng nhập!)

Chỉnh sửa (16/04/2019):

Tôi vừa nhận thấy trên RHEL 7.5, rằng đầu ra của ps cũng không chơi tốt:

$ ps -fulongusername
UID        PID  PPID  C STIME TTY          TIME CMD
longuse+  1230 27243  0 Apr13 pts/0    00:00:00 vim somescript.sh
longuse+  1701 27243  0 Apr05 pts/0    00:00:00 vim another-script.sh
longuse+  3116 27243  0 Apr12 pts/0    00:00:01 vim test_script.sh

Nó cắt tên người dùng bằng '+', điều này không hữu ích nếu bạn không biết người dùng đó sẽ là ai và có nghĩa là bạn không thể dựa vào đầu ra của ps, ví dụ như nhập vào tập lệnh cần biết ai sở hữu một quy trình.

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.