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


39

मैं एक डोमेन नाम के नाम से उपयोगकर्ता खाते बनाना चाहता हूं। 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]*\$"

1
ध्यान दें कि NAME_REGEXपहले से ही स्वीकार है -जब तक कि यह पहला चरित्र नहीं है।
रिंग Ø

क्यों नहीं जोड़ा गया .? नामक उपयोगकर्ता पर विचार करें .या ..। फिर, rmउस उपयोगकर्ता नाम ..
जॉन

1
@ कोई समस्या rmनहीं है क्योंकि उपयोगकर्ता को हटाते समय उपयोग करने की आज्ञा नहीं है। मैं मानता हूं ..कि समान कारणों के लिए एक समझदार नाम rmनहीं है , लेकिन उनमें से एक नहीं है।
तून81

जवाबों:


26

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

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

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

इसके अलावा, आप GECOS फ़ील्ड के "वास्तविक नाम" अनुभाग / etc / passwd जानकारी का उपयोग मूल, अनमॉडिफाइड डोमैन नाम को संग्रहीत करने के लिए कर सकते हैं, और स्क्रिप्ट इसे बहुत आसानी से निकाल सकते हैं।


यह यादृच्छिक अप्रत्याशित बग भाग में चल रहा है जिसके बारे में मैं चिंतित हूं। मैं बहुत आसानी से पीरियड्स को आसानी से निकाल सकता हूं और अभी भी नाम की गड़बड़ी की कोई संभावना नहीं है, लेकिन - एक समस्या पैदा कर सकता है। फिर भी इसकी संभावना बहुत कम है।
एड हैबर

इसलिए मैं जिस डिबियन सिस्टम का उपयोग कर रहा हूं वह उपयोगकर्ता www-data का उपयोग कर रहा है। तो ऐसा लगता है - उपयोगकर्ता नाम में उपयोग किया जाना ठीक होना चाहिए।
एड हैबर

दरअसल, वह नियमित अभिव्यक्ति उपयोगकर्ता नामों में '-' की अनुमति देता है! पहले अक्षर को az होना चाहिए, लेकिन उपयोगकर्ता के नाम के बाद के अक्षर '-', az या 0-9 हो सकते हैं।
स्टीवेहा

ओह! आप सही हे। मुझे अतिरिक्त याद आया - जब मैं इसे देख रहा था।
एड हैबर

22

विशेष रूप से, POSIX ("यूनिक्स के लिए पोर्टेबल ऑपरेटिंग सिस्टम इंटरफ़ेस") मानक (IEEE मानक 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- अनुपालन, और सुरक्षित होना चाहिए।


6
हालांकि यह सच है कि यह आमतौर पर उपयोगकर्ता नाम में ऊपरी-मामले वाले पात्रों पर आधारित होता है - लोगों को केस-संवेदी पासवर्डों के साथ पर्याप्त परेशानी होती है, और उन्हें अपने उपयोगकर्ता नाम में याद रखने के लिए मामला बनाना पड़ता है जब वे नीचे आते हैं तो उन्हें लात मारते हैं। (अपवाद: जब आपका उपयोगकर्ता नाम सम्मेलन है ALL UPPERCASE CHARACTERS।)
voretaq7

1
POSIX.1-2017 के अनुसार, उन परिभाषाओं में थोड़ा बदलाव आया है। 3.431 उपयोगकर्ता नाम अब 3.437 उपयोगकर्ता नाम और 3.278 पोर्टेबल फ़ाइल नाम चरित्र सेट अब 3.282 पोर्टेबल फ़ाइल नाम चरित्र सेट है
चक वोबर

@ voretaq7 जो मुझे लगता है कि वैध है वह किसी उपयोगकर्ता नाम के मामले को संरक्षित करने के लिए है , लेकिन साइन-इन केस-असंवेदनशील बनाएं। तो एक उपयोगकर्ता नाम CatInTheHat हो सकता है लेकिन catinthehat या catintheHAT या जो भी निर्दिष्ट करने में साइन इन करें।
StackOverflowUser

1

NAME_REGEX से यह सब कुछ घटाया जा सकता है, लेकिन ऊपरी और निचले हिस्से में z के माध्यम से और 9 के माध्यम से संख्या 0 खराब होगी।


आप जिस शब्द की तलाश कर रहे हैं, वह "घटा" है।
wufulk

regex पर नज़र फिर से, -यह भी स्वीकार किया जाता है (। सिर्फ पहली चरित्र के रूप में नहीं) भी ध्यान रखें कि डिफ़ॉल्ट रूप से अपरकेस स्वीकार किया जाता है नहीं (कोई नहीं है gझंडा, और न ही है A-Zमें शामिल NAME_REGEX ओपी द्वारा प्रदान की regex।NAME_REGEX="^[a-z][-a-z0-9]*\$"
SherylHohman
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.