Xem mã nguồn, cụ thể libmisc/chkname.c
. Shadow khá bảo thủ: tên phải khớp với biểu thức chính quy [_a-z][-0-9_a-z]*\$?
và có thể GROUP_NAME_MAX_LENGTH
dài tối đa ký tự (tùy chọn cấu hình, mặc định 16; tên người dùng thường có thể lên tới 32 ký tự, tùy theo xác định thời gian biên dịch).
Debian thư giãn kiểm tra rất nhiều. Như bóp, bất cứ điều gì trừ khoảng trắng và :
được cho phép. Xem lỗi # 264879 và lỗi # 377844 .
POSIX yêu cầu cho phép các chữ cái của một trong hai trường hợp, chữ số và ._-
( như trong tên tệp ). POSIX không đặt ra bất kỳ hạn chế nào nếu bạn không quan tâm đến tính di động. Một số hạn chế được đề xuất đến từ việc sử dụng:
- Colons, newlines và nulls là đúng; bạn không thể sử dụng chúng trong
/etc/passwd
hoặc /etc/group
.
- Tên chỉ bao gồm các chữ số là một ý tưởng tồi -
chown
và chgrp
được coi là coi một chuỗi chữ số là tên nếu trong cơ sở dữ liệu người dùng / nhóm, nhưng các ứng dụng khác có thể coi bất kỳ số nào là id số.
- Không nên sử dụng tên ban đầu
-
hoặc .
tên người dùng, vì nhiều ứng dụng mong muốn có thể chuyển $user.$group
sang tiện ích bên ngoài (ví dụ chown $user.$group /path/to/file
). Một tên .
trong nhóm sẽ gây ra ít rắc rối hơn, nhưng tôi vẫn khuyên bạn nên chống lại nó.
/
cũng có khả năng gây rắc rối, vì một số chương trình dự kiến có thể sử dụng tên người dùng trong tên tệp.
- Bất kỳ nhân vật nào mà vỏ sẽ mở rộng có lẽ là rủi ro.
- Các ký tự không phải ASCII sẽ ổn nếu bạn không quan tâm đến việc chia sẻ với các hệ thống có thể sử dụng các bảng mã khác nhau.
¹ Tất cả việc triển khai hiện đại mong đợi chown $user:$group
, nhưng hỗ trợ chown $user.$group
cho khả năng tương thích ngược, và có quá nhiều ứng dụng ra khỏi đó mà vượt qua một dấu chấm để loại bỏ hỗ trợ khả năng tương thích.
chown
luận: cú pháp hiện tại, ít nhất là trong coreutils GNU, đượcuser:group
, với dấu chấm được chấp nhận chỉ để tương thích. Người ta có thể sử dụngj.smith:j.smith
.