Tên nhóm được phép cho groupadd là gì?


13

Tôi đã làm theo các hướng dẫn này để xây dựng Shadow, cung cấp groupaddlệnh. Bây giờ tôi gặp lỗi khi thử điều này:

$ groupadd automake1.10
groupadd: 'automake1.10' is not a valid group name

Tôi đã kiểm tra tên chữ và số, và chúng hoạt động tốt.

Câu trả lời:


20

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_LENGTHdà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 # 264879lỗ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/passwdhoặc /etc/group.
  • Tên chỉ bao gồm các chữ số là một ý tưởng tồi - chownchgrpđượ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.$groupsang 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.$groupcho 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.


Re chownluận: cú pháp hiện tại, ít nhất là trong coreutils GNU, được user:group, với dấu chấm được chấp nhận chỉ để tương thích. Người ta có thể sử dụng j.smith:j.smith.
dùng1686

1
@grawity: Không chỉ là lõi GNU, mà vấn đề không phải là chownchính nó, đó là các tập lệnh hiện có và các chương trình khác gọi chown $user.$groupthay vì chown $user:$group- ngay cả khi việc chowntriển khai cố gắng thực hiện đúng, một số trường hợp thực sự mơ hồ.
Gilles 'SO- ngừng trở nên xấu xa'

1

Nếu bạn thích phiêu lưu, bạn có thể chỉnh sửa /etc/grouptrực tiếp và đặt bất kỳ tên nhóm nào bạn thích. Ngoài ra, điều này có thêm phần thưởng khi bạn gặp phải một trong những vấn đề mà @Gilles đã đề cập, bạn không thể tải trình chỉnh sửa để khắc phục sự cố hoặc thậm chí đăng nhập - mang lại cho bạn kinh nghiệm quý báu trong việc khôi phục hệ thống bị hỏng!


5
Đừng quên chỉnh sửa /etc/gshadowkhi thêm nhóm. Ngoài ra, sử dụng vigr(8)thay vì trực tiếp chỉnh sửa các tập tin.
camh
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.