Tại sao dấu gạch dưới không được phép trong tên người dùng trong một số bản phát hành (ví dụ Debian)


8

Vậy tại sao dấu gạch dưới được coi là một ký tự xấu cho tên người dùng trong Debian (và có thể là các bản phân phối khác) trong khi nó đã bị xóa khỏi adduserNAME_REGEX trong Ubuntu?

Câu trả lời:


7

POSIX chỉ định việc sử dụng một bộ ký tự di động cho tên người dùng và nhóm.
_ - .được cho phép các ký tự, NAME_REGEXkiểm tra nếu tên người dùng chỉ chứa các ký tự được chỉ định. Các nhà phát triển phân phối xác định, nếu các ký tự tiếp theo bị từ chối. Ubuntu, ví dụ, cấm sử dụng .theo mặc định.

Thêm hạn chế này sẽ tránh nhiễu với các công cụ hệ thống khác, có thể diễn giải các ký tự đặc biệt. Hãy nghĩ về biến $PATH, khi bạn có một người dùng có tên my:uservà thêm thư mục chính của bạn vào $PATH:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/my:user/bin

Các thư mục /home/myuser/binsẽ (có thể) không tồn tại. Hơn nữa, /etc/passwdsẽ có hai :nhiều hơn cần thiết.

Chỉnh sửa:
Debian adduser(phiên bản 3.110) sử dụng /^[_.A-Za-z0-9][-\@_.A-Za-z0-9]*\$?$/để kiểm tra tên người dùng, _ được cho phép miễn là NAME_REGEXkhông cấm nó.


1
Nhưng câu hỏi _không phải là :...
Josh

Không phải là @ cũng được cho phép trong posix, ít nhất là theo người nghiện
Sam

Và vâng trong khi điều đó giải thích tại sao bạn không nên cho phép: nó không giải thích tại sao _ là xấu.
Sam

1
_được cho phép theo mặc định, xem chỉnh sửa. Tôi đã đưa ra một ví dụ về nhân vật bị cấm :để chỉ ra những vấn đề có thể xảy ra với nó.
vẫy

@Sam, @ không được phép trong POSIX, hãy xem Askubfox.com/a/405668/13482
Daniel Serodio 26/07/18

3

Một câu hỏi tương tự đã được trả lời ở đây

Về mặt lý thuyết, bạn có thể sử dụng hầu hết mọi ký tự ASCII mà bạn muốn làm tên người dùng, nhưng, để tránh một số loại lỗi, như một lỗi được đề cập trong bài viết trên, bạn có thể đặt biểu thức chính quy đó để tránh một số vấn đề nhất định.


Bạn sẽ không thể sử dụng :, một dòng mới hoặc ký tự null trong tên người dùng ngay cả khi bạn chỉnh sửa /etc/passwd(hoặc hầu hết các cơ sở dữ liệu người dùng khác) bằng tay.
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles đúng rồi, tôi đã sửa câu trả lời, nhưng phần gạch dưới vẫn ổn, để trả lời cho câu hỏi NAME_REGEX có ở đó để ngăn một số loại lỗi, nhưng nó không được đặt làm mặc định vì thông thường một số ký tự này được cho phép.
tmow

0

Tôi đang sử dụng Debian Squeeze và tôi đã quản lý để tạo một người dùng có dấu gạch dưới , adduser user_1. Tại sao bạn nói họ không được phép?


Có lẽ tôi đã giải thích sai về nó. Tôi chỉ nhớ chỉnh sửa /etc/adduser.conf trên máy chủ Debian và NAME_REGEX (tức là tên regex không được phép) có dấu gạch dưới. Tuy nhiên, nó đã được nhận xét, nhưng tôi đoán rằng tôi giả sử rằng nó đại diện cho NAME_REGEX mặc định.
Sam

NAME_REGEXlà regex tên được phép , không phải là regex tên không được phép ... tức là nếu một tên trùng khớp NAME_REGEXthì nó hợp lệ.
Josh

Lenny Debian (ổn định như tôi ghi) không có NAME_REGEXtrong /etc/adduser.conf, và được xây dựng trong cấm mặc định _.
Gilles 'SO- ngừng trở nên xấu xa'
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.