सवाल लिनक्स पर उपयोगकर्ता नामों में मुझे किन पात्रों का उपयोग या उपयोग नहीं करना चाहिए?


मैं डोमेन नाम के नाम पर उपयोगकर्ता खाते बनाना चाहता हूं। adduser शिकायत करता है कि उपयोगकर्ता नाम से मेल खाना चाहिए NAME_REGEX नियमित अभिव्यक्ति।

adduser: Please enter a username matching the regular expression configured
via the NAME_REGEX configuration variable.  Use the `--force-badname'
option to relax this check or reconfigure NAME_REGEX.

मैं शिकायत के बिना उपयोगकर्ता आईडी का उपयोग कर उपयोगकर्ताओं को जोड़ सकता हूं। क्या कोई कारण है कि मुझे अनुमति देने के लिए नियमित अभिव्यक्ति को संशोधित नहीं करना चाहिए ., - तथा _?

कौन से पात्र समस्याएं पैदा करेंगे और उपयोगकर्ता नामों में अनुमति नहीं दी जानी चाहिए?

यह डिफ़ॉल्ट है NAME_REGEX

NAME_REGEX="^[a-z][-a-z0-9]*\$"

37
2017-10-09 20:06


मूल


ध्यान दें कि NAME_REGEX पहले से ही स्वीकार करता है - जब तक यह पहला चरित्र नहीं है। - Ring Ø
क्यों नहीं जोड़ना .? नामित उपयोगकर्ता पर विचार करें . या ..। फिर, rm उस उपयोगकर्ता का नाम ..। - Jon
@ जोन के बाद से कोई मुद्दा नहीं है rm उपयोगकर्ता को हटाने पर उपयोग करने का आदेश नहीं है। मैं सहमत हूँ .. इसी कारणों के लिए एक समझदार नाम नहीं है, लेकिन rm उनमें से एक नहीं है। - toon81


जवाब:


मेरी सलाह है कि आप डिफ़ॉल्ट NAME_REGEX द्वारा अनुशंसित मानक का पालन करें। आप वास्तव में * NIX के तहत किसी उपयोगकर्ता नाम में लगभग कुछ भी डाल सकते हैं लेकिन आपको लाइब्रेरी कोड के साथ विषम समस्याएं आ सकती हैं जो धारणाएं बनाती हैं। इसका स्पष्ट उदाहरण:

http://blog.endpoint.com/2008/08/on-valid-unix-usernames-and-ones-sanity.html

मेरा सवाल है: क्या आपके पास बहुत से डोमेन नाम हैं जो एक दूसरे के साथ टकराएंगे यदि आपने असामान्य विराम चिह्न को हटा दिया है? उदाहरण के लिए, क्या आपके पास डोमेन नाम के रूप में "गुणवत्ता-आश्वासन" और गुणवत्ता दोनों "हैं? यदि नहीं, तो आप असामान्य वर्णों को अलग करने और उपयोगकर्ता नाम के रूप में जो कुछ भी छोड़ चुके हैं, उसका उपयोग करने की नीति को अपना सकते हैं।

इसके अलावा, आप के "वास्तविक नाम" खंड का उपयोग कर सकते हैं जीईसीओएस क्षेत्र मूल, असम्बद्ध डोमाइन नाम को स्टोर करने के लिए / etc / passwd जानकारी में, और स्क्रिप्ट इसे आसानी से निकालने में सक्षम हो सकती हैं।


26
2017-10-09 20:57



यह यादृच्छिक अप्रत्याशित बग्स भाग में चल रहा है कि मैं चिंतित हूं। मैं आसानी से अवधि को हटा सकता हूं और अभी भी नाम झड़पों का कोई मौका नहीं है, लेकिन - एक समस्या का कारण बन सकता है। फिर भी यह बहुत संभावना नहीं है। - Ed Haber
तो मैं जिस डेबियन सिस्टम का उपयोग कर रहा हूं वह उपयोगकर्ता www-data का उपयोग कर रहा है। तो ऐसा लगता है - उपयोगकर्ता नामों में उपयोग करना ठीक होना चाहिए। - Ed Haber
असल में, नियमित अभिव्यक्ति उपयोगकर्ता नामों में '-' परमिट करती है! पहला अक्षर ए-जेड होना चाहिए, लेकिन उपयोगकर्ता नामों के बाद के अक्षर '-', ए-जेड, या 0-9 हो सकते हैं। - steveha
ओह! आप सही हे। मैं अतिरिक्त चूक गया - जब मैं इसे देख रहा था। - Ed Haber


अधिक विशेष रूप से, पॉज़िक्स ("यूनिक्स के लिए पोर्टेबल ऑपरेटिंग सिस्टम इंटरफेस") मानक (आईईईई मानक 1003.1 2008) राज्यों:


3.431 उपयोगकर्ता का नाम

एक स्ट्रिंग जिसे उपयोगकर्ता की पहचान करने के लिए उपयोग किया जाता है; उपयोगकर्ता डेटाबेस भी देखें। POSIX.1-2008 के अनुरूप सिस्टम में पोर्टेबल होने के लिए, मान पोर्टेबल फ़ाइल नाम वर्ण सेट के वर्णों से बना है। <hyphen> एक पोर्टेबल उपयोगकर्ता नाम के पहले चरित्र के रूप में चरित्र का उपयोग नहीं किया जाना चाहिए।


3.278 पोर्टेबल फ़ाइल नाम कैरेक्टर सेट

The set of characters from which portable filenames are constructed.

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 . _ -

इस मानक का अनुपालन करने वाला कोई भी उपयोगकर्ता नाम POSIX-compliant है, और सुरक्षित होना चाहिए।


18
2018-02-25 21:21



हालांकि यह सच है कि आम तौर पर उपयोगकर्ता नामों में ऊपरी-केस वर्ण होने पर फेंक दिया जाता है - लोगों को केस-संवेदी पासवर्ड के साथ पर्याप्त परेशानी होती है, और उन्हें अपने उपयोगकर्ता नामों में मामला याद रखना पड़ता है, जब वे नीचे आते हैं तो उन्हें लात मारना पड़ता है। (अपवाद: जब आपका उपयोगकर्ता नाम सम्मेलन होता है ALL UPPERCASE CHARACTERS।) - voretaq7
POSIX.1-2017 के अनुसार, उन परिभाषाओं में थोड़ा सा स्थानांतरित हो गया है। 3.431 उपयोगकर्ता नाम अब है 3.437 उपयोगकर्ता का नाम और 3.278 पोर्टेबल फ़ाइल नाम कैरेक्टर सेट अब है 3.282 पोर्टेबल फ़ाइल नाम कैरेक्टर सेट - Chuck Wolber


NAME_REGEX से यह अनुमान लगाया जा सकता है कि सब कुछ ज़ेड के माध्यम से ऊपरी- और लोअरकेस में और संख्या 0 से 9 तक खराब होगा।


1
2017-10-09 20:24



जो शब्द आप खोज रहे हैं वह "घटाया गया" है। - wfaulk
सच है। :-) धन्यवाद, याद किया कि ... - wzzrd
फिर से regex देखो, - भी स्वीकार किया जाता है (बस पहले अक्षर के रूप में नहीं।) यह भी ध्यान रखें कि डिफ़ॉल्ट अपरकेस स्वीकार नहीं किया जाता है (नहीं है g झंडा, न ही है A-Z में शामिलNAME_REGEX  ओपी द्वारा प्रदान की गई regex। NAME_REGEX="^[a-z][-a-z0-9]*\$" - SherylHohman