লিনাক্স ব্যবহারকারীর নাম সংখ্যা দিয়ে শুরু করা যাবে না কেন?


84

এর কোন প্রযুক্তিগত কারণ আছে কেন? এটি কি লিনাক্স বা ইউনিক্সের প্রথম দিকের কোনও শৈল্পিক, এবং যদি তাই থাকে তবে এটির অবিচল থাকার কোনও কারণ আছে কি?


22
যেহেতু উত্তরগুলিতে এটি ডিবাঙ্ক করা হয়েছিল, তাই এই বিবৃতিটির জন্য আপনার উত্স কী?
l0b0

19
@ l0b0 - প্রতি useradd(থেকে shadow-utils 4.2.1) ম্যানুয়াল পৃষ্ঠায় ( CAVEATS দেখুন ):Usernames must start with a lower case letter or an underscore [...] In regular expression terms: [a-z_][a-z0-9_-]*[$]?
don_crissti

30
@ l0b0 - ওহ, এবং কেবলমাত্র একটি ডিস্ট্রো (এই ধরণের জিনিসগুলির জন্য বিখ্যাত) এর অনুমতি দেয় বলে এর অর্থ এই নয় যে "এটি উত্তরগুলিতে নিমজ্জিত হয়েছিল" । প্রশ্ন ট্যাগ করা হয় linux, না ubuntu। এটি আর্চলিনাক্সে করার চেষ্টা করুন ।
don_crissti

1
@ don_crissti এটি সমস্ত লিনাক্স ডিস্ট্রোজে স্পষ্টভাবে প্রযোজ্য নয় এবং তাই এই সীমাবদ্ধতাটি কোথা থেকে আসবে তা জেনে রাখা আকর্ষণীয় ছিল।
l0b0

5
এমনকি উবুন্টুও যত্নশীল: আপনি যখন লাইভ সিডি / ইউবুইকিটির সাথে ইনস্টল করবেন তখন আপনার ব্যবহারকারীর নাম "ছোট হাতের অক্ষর দিয়ে শুরু করা আবশ্যক"
43

উত্তর:


136

কিছু কমান্ড (উদাঃ chown) হয় ব্যবহারকারীর নাম বা একটি সংখ্যার ব্যবহারকারী আইডি গ্রহণ করতে পারে, সুতরাং সমস্ত সংখ্যার ব্যবহারকারীর নাম ব্যবহার করলে তা ভেঙে যায়।

নামগুলির সাথে সংখ্যার সাথে শুরু হওয়া এবং কিছু আলফা যুক্ত করার অনুমতি দেওয়ার নিয়মটি সম্ভবত চেষ্টাটির পক্ষে উপযুক্ত নয় বলে বিবেচিত হয়েছিল; পরিবর্তে একটি আলফা অক্ষর দিয়ে শুরু করার প্রয়োজন আছে।

সম্পাদনা:

এটি অন্যান্য প্রতিক্রিয়া থেকে দেখা যায় যে কিছু ডিসট্রোস এই সীমাবদ্ধতাটিকে বিকৃত করেছে; এই ক্ষেত্রে, জিএনইউ কোর ইউটিলস ডকুমেন্টেশন অনুসারে :

পসিক্সের প্রয়োজন যে এই কমান্ডগুলি প্রথমে একটি নাম হিসাবে নির্দিষ্ট স্ট্রিংটি সমাধান করার চেষ্টা করবে এবং কেবল একবার এটি ব্যর্থ হলে, পরে এটি আইডি হিসাবে ব্যাখ্যা করার চেষ্টা করুন।

$ useradd 1000   # on most systems this will fail with:
                 # useradd: invalid user name '1000'
$ mkdir /home/1000
$ chown -R 1000 /home/1000   # This will first try to map
    # to username "1000", but this may easily be misinterpreted.

'0' নামের একটি ব্যবহারকারী যুক্ত করা কেবল সমস্যার জন্য জিজ্ঞাসা করবে (ইউআইডি 0 == মূল ব্যবহারকারী)। তবে নোট করুন যে গোষ্ঠী / ব্যবহারকারী আইডি আর্গুমেন্টগুলির পূর্বে একটি পূর্ণসংখ্য হিসাবে তাদের ব্যাখ্যা জোর করার জন্য একটি '+' আগে করা যেতে পারে।


13
এটিই হ'ল একমাত্র পোস্ট যা আসলে প্রশ্নের উত্তর দেয়। আপনি মানুষ যে লিনাক্স ডিস্ট্রো উপর মূল প্রজেক্টের কোড চলমান ফল অঙ্গচ্ছেদ করা থেকে অভ্যাস আছে না যে দেখানোর জন্য একটি উদাহরণ যোগ করা উচিত useradd 253নয়useradd: invalid user name '253'
don_crissti

2
রেকর্ডের জন্য এখানে আপনার কোডটিতে যুক্ত করতে চাইলে উত্স কোড add
don_crissti

5
আপনি যদি ব্যবহারকারীর 1000 এর ইউআইডি 253 ব্যবহার করে বিভ্রান্তির সুযোগগুলি কল্পনা করতে পারেন? অথবা, সাধারণভাবে, সংখ্যার ব্যবহারকারীর নামগুলির জন্য যা ইউআইডি মেলে না? অবশ্যই গ্রুপ সহ, অবশ্যই।
জোনাথন লেফলার

5
আমার একটি এলডিএপি সিস্টেম রয়েছে যেখানে কিছু ব্যবহারকারীর ব্যবহারকারীর নাম হিসাবে ব্যবহারকারীর কোড / নিবন্ধকরণ নম্বর রয়েছে। আমি দ্রুত ব্যবহারকারীর আইডিগুলিতে ( chown -R $(id -u $username) ...) পরিচয় জানাতে শিখেছি ।
মুড়ু

2
আদর্শভাবে একটি ব্যবহারকারীর নামের স্ট্রিং, সংখ্যা বা বর্ণ যাই হোক না কেন একটি ইউআইডি-তে ম্যাপ করা হবে এবং নামগুলি সর্বদা ইউআইডি নির্ধারণ করার জন্য তাকিয়ে থাকবে, অলসতার বিপরীতে 'নামটি কি এই নামটি দিয়ে তৈরি? তারপরে আমি এটি আইডি হিসাবে বিবেচনা করব '
ম্যাট ওয়ারেন

83

নম্বরগুলি ব্যবহার করে এখানে ওবুন্টু 14.04 তে একটি পরীক্ষা রয়েছে:

root@ubuntu:~# useradd 232
root@ubuntu:~# mkdir /home/232
root@ubuntu:~# chown 232.232 /home/232
root@ubuntu:~# passwd 232
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@ubuntu:~# login
c2 login: 232
Password: 
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 4.4.0-22-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

 System information disabled due to load higher than 2.0

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.


$ 
$ whoami
232

এবং একটি ইউনিকোড ইউ + 1F600 ব্যবহার করে - 😀

root@c2:~# useradd 😀
root@c2:~# mkdir /home/😀
root@c2:~# chown 😀.😀 /home/😀
root@c2:~# passwd 😀
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@c2:~# login
c2 login: 😀
Password: 
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 4.4.0-22-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

 System information disabled due to load higher than 2.0

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

0 packages can be updated.
0 updates are security updates.



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

$ whoami
😀

এটি সম্ভবত আমার সবচেয়ে খারাপ ধারণা:

root@c2:~# useradd '&#%^()!@~*?<>=|'
root@c2:~# passwd '&#%^()!@~*?<>=|'
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@c2:~# mkdir '/home/&#%^()!@~*?<>=|'
root@c2:~# chown '&#%^()!@~*?<>=|.&#%^()!@~*?<>=|' '/home/&#%^()!@~*?<>=|'
root@c2:~# login
c2 login: &#%^()!@~*?<>=|     
Password: 
Welcome to Ubuntu 14.04.4 LTS (GNU/Linux 4.4.0-22-generic x86_64)
**** text removed ****
applicable law.

$ whoami
&#%^()!@~*?<>=|

স্পষ্টতই আপনি এই জাতীয় ব্যবহারকারীর যোগ করতে পারেন, যদিও আমি নিশ্চিত নই যে এটি দীর্ঘকালীন একটি ভাল ধারণা।


1
useradd '*'মজা হবে - cd /home/*/আশানুরূপ কাজ করবে না এবং যারা $HOMEব্যবহারকারীর মান ব্যবহার করার সময় অন্যান্য ইউটিলিটিগুলি কীভাবে প্রতিক্রিয়া জানায় তা কে জানে ।
লিয়াম ডসন

9
বাহ উবুন্টু যে অনুমতি দেয়? আমি অবাক হয়েছি আপনি যদি চেষ্টা করেন useradd 1000(ধরে
নিলেন

8
কেবলমাত্র নিষিদ্ধ চিহ্নগুলির জন্যই +1!
ইকনস

3
ওহ, আমি আরও খারাপ চিন্তা করতে পারি ...
অরেঞ্জডগ

4
@ ইসমাইল মিগুয়েল: \0/ ইত্যাদি / পাসডাব্লুডিতে একটি আক্ষরিক সম্ভবত এটির অনেকগুলি প্রোগ্রাম ভাঙবে যা পার্স করে। তবে আপনি সম্ভবত প্রথমে স্ট্যান্ডার্ড সরঞ্জাম ব্যবহার করে সেই নামটি দিয়ে কোনও ব্যবহারকারী যুক্ত করতে পারেন নি। সিস্টেম কলগুলির মতো mkdir(2)0 টি-টার্মিনেটেড অন্তর্নিহিত দৈর্ঘ্যের স্ট্রিংগুলিও ব্যবহার করা হয়, সুতরাং আপনি তৈরি করতে পারবেন না /home/\0/কারণ সেই পথটি সঠিক /home
পিটার কর্ডস

9

একটি * নিক্স ব্যবহারকারী নাম ইউটিলিটি দ্বারা নির্মিত একটি 32 অক্ষরের দীর্ঘ স্ট্রিং useradd। এটি যেমনটি আপনি বলেছেন, প্রাথমিক ইউনিক্সের (বিএসডি প্রযুক্তিগতভাবে) মানের প্রত্যক্ষ ফলাফল। ফ্রিবিএসডি ম্যান পেজ অনুসারে passwd(5):

লগইন নামটি হাইফেন (`- ') দিয়ে শুরু হওয়া উচিত নয় এবং এতে 8-বিট অক্ষর, ট্যাব বা স্পেস বা এই জাতীয় কোনও চিহ্ন থাকতে পারে না:`,: + & #% ^ ()! @ ~ *? <> = | / "'। ডলার প্রতীক (` $') কেবল সাম্বার সাথে ব্যবহারের জন্য শেষ চরিত্র হিসাবে অনুমোদিত No কোনও ক্ষেত্রেই কোনও কোলন (`: ') থাকতে পারে না কারণ এটি ব্যবহারকারীর ক্ষেত্রগুলি পৃথক করতে historতিহাসিকভাবে ব্যবহৃত হয়েছে তথ্যশালা.

নির্দিষ্ট * নিক্স সিস্টেমগুলি ব্যবহারকারীর নামগুলিতে বিশেষ অক্ষরের সাথে উপস্থাপন করার সময় অস্পষ্ট ত্রুটি নিক্ষেপ করত, সুতরাং শেষ পর্যন্ত বিশেষ অক্ষরগুলি নিষিদ্ধ করা হয়েছিল। বেশিরভাগ আধুনিক * নিক্স সিস্টেমে বিশেষ অক্ষর ব্যবহারকারীর নাম সমর্থন করার জন্য passwd/ useraddইউটিলিটিগুলি পরিবর্তন করা তুলনামূলকভাবে সহজ হবে , তবে বেশিরভাগ লোক এ জাতীয় গুরুত্বহীন জিনিসটি পরিবর্তন করতে দ্বিধায় থাকেন, কারণ এর সামান্য প্রভাব পড়বে এবং পিছনের দিকে অসঙ্গতি সৃষ্টি করবে।

সম্পাদনা:
অ্যাডোনিস যেমন বলেছিল, আধুনিক লিনাক্স বিতরণে এটি করা সম্ভব, তবে এটি অসতর্কিত পরামর্শ দেওয়া হয় (বিশেষত যখন মানক বা উত্তরাধিকারসূত্রের প্রোগ্রামগুলির মুখোমুখি হয়)।


5
অবশ্যই তবে প্রশ্নটিতে বিশেষ চরিত্রের উল্লেখ নেই। এটি জিজ্ঞাসা করে যে ব্যবহারকারীর নামগুলি কেন অঙ্কগুলি দিয়ে শুরু করা যায় না (যা বিশেষ অক্ষর নয়)।
don_crissti

অবশ্যই @ ডন_ক্রিসটি, আপনি কি আমাকে আবার জিজ্ঞাসা করতে পছন্দ করবেন যে historতিহাসিকভাবে কোনও ব্যবহারকারীর নামটি কোনও স্থান দিয়ে শুরু করতে পারে না, তারপরে আলাদাভাবে জিজ্ঞাসা করুন কেন এটি ialতিহাসিকভাবে প্রতিটি প্রতীক দিয়ে শুরু হয় না, তাহলে জিজ্ঞাসা করুন & সি historতিহাসিকভাবে একটি with দিয়ে শেষ হবে কেন? এই "উত্তর" কোনও মন্তব্য হিসাবে খাপ খায় না এটি স্পষ্টতই, তবুও প্রশ্ন সম্পর্কিত দরকারী তথ্য রয়েছে।
ফ্রম্বার্ট

এই অনুচ্ছেদে 8-বিট চরিত্র বলতে কী বোঝায়? আইই: অবশ্যই কোনও এসকি চরগুলি 8-বিট হয়?
ম্যাট ওয়ারেন

feh! /etc/passwdএকটি পাঠ্য ফাইল। useradd? ইশ্-Tosh। রিয়েল সাসাদমিন ব্যবহার vi!
infixed

1
@MattWarren। এএসসিআইআই একটি 7-বিট এনকোডিং
এফএমপুরফি

1

এর কোন প্রযুক্তিগত কারণ আছে কেন? এটি কি লিনাক্স বা ইউনিক্সের প্রথম দিকের কোনও শৈল্পিক, এবং যদি তাই থাকে তবে এটির অবিচল থাকার কোনও কারণ আছে কি?

আমি কোনও প্রযুক্তিগত কারণ সম্পর্কে চিন্তা করতে পারি না - historতিহাসিকভাবে, এটি কেবল ASCII। এটি কীভাবে পড়ে এবং তারপরে টাইপ করা হয় তা কোডারের হাতে।

UNIX-ইতিহাস-রেপো / usr / src / cmd কমান্ড / passwd.c

char *uname;

insist = 0;
if(argc < 2) {
    if ((uname = getlogin()) == NULL) {
        printf ("Usage: passwd user\n");
        goto bex;
    } else {
        printf("Changing password for %s\n", uname);
    }
} else {
    uname = argv[1];
}

আমি যেহেতু আর্কাইভ ম্যান পৃষ্ঠাগুলি ব্রাউজ করতে কিছুটা সময় ব্যয় করেছি (উদাহরণস্বরূপ: 1BSD ছিল বিল জয়ের প্রথম বার্কলে সফটওয়্যার বিতরণ ), তাই আমি ব্যবহারকারীর নাম নির্দিষ্ট করে এমন কিছুই দেখিনি। এর অর্থ এটি নেই যে এটি বিদ্যমান নেই, তবে আমি এটি দেখিনি।

সুতরাং তারপর আমরা historicalতিহাসিক মানব প্রেক্ষাপটে বাকি আছে। ১৯৮০ সালে যখন আমি প্রযুক্তি শুরু করেছি, আমরা লগইনগুলির জন্য আমাদের আসল নামটি সর্বদা ব্যবহার করি। কিছু দৈর্ঘ্যের সীমা না থাকলে সাধারণত প্রথম প্রাথমিক এবং শেষ পুরো নাম। এটি গুরুত্বপূর্ণ ছিল কারণ আপনার লগইন নামটি আপনার ইমেল ঠিকানা হিসাবে ব্যবহৃত হয়েছিল। এরপরে আর কেউ ইমেল প্রেরণ করেননি যা অনামী ছিল। অবশ্যই কিছু ব্যতিক্রম অবশ্যই ছিল, আমি সেগুলি মনে করি না। যদিও পুরোপুরি, আমি বিশ্বাস করি এটি কেস হবে।

এবং rfc5321 # পৃষ্ঠা-63৩ অনুসারে, একটি সংখ্যার সাথে একটি ইমেল "নাম" শুরু করার ক্ষেত্রে কোনও বিধিনিষেধ নেই। gmail সমস্ত সংখ্যক ব্যবহারকারীর নাম তৈরি করবে। (এখনই এটি পান, তারা দ্রুত চলছে)

সুতরাং যদি এমন কোনও কোড থাকে যা ব্যবহারকারীর নামটিকে [0-9] দিয়ে শুরু করে দেয় তবে এটি পরে কিছু প্রোগ্রামার চিন্তাভাবনা করেই "আপনার নাম হিসাবে একটি নম্বর থাকবে কেন?" দিয়ে অস্তিত্ব লাভ করেছিল। আবারও, আমাকে বলতে হবে যে খুব ভাল historicতিহাসিক ইউনিক্স কোড থাকতে পারে যা একটি ব্যবহারকারীর নামটিকে একটি নম্বর দিয়ে শুরু করে প্রত্যাখ্যান করেছিল। আমি শুধু এটি দেখিনি। প্রারম্ভিক পাসওয়ার্ড টেবিলগুলি হাতে সম্পাদনা করা হয়েছিল, আমার অবশ্যই মনে আছে প্রায় 90 এর দশকে এমনকি এটি প্রায়শই করা।

যতদূর এটি অব্যাহত থাকে, আমি স্ট্রাস্ট্রপকে উদ্ধৃত করব, সি ++ ১১ এফএকিউ, নতুন মানক গ্রন্থাগার কখন উপলব্ধ হবে?

সমস্যাটিকে আরও কঠিন করার জন্য, মনে রাখবেন যে পুরানো বৈশিষ্ট্যগুলি অপসারণ করা সম্ভব নয়, যদিও কমিটি তারা খারাপ বলে সম্মত হয়: অভিজ্ঞতা দেখায় যে ব্যবহারকারীরা প্রতিটি প্রয়োগকারীকে সামঞ্জস্যতা সুইচগুলির (বা ডিফল্টরূপে) অবহিত এবং নিষিদ্ধ বৈশিষ্ট্যগুলি সরবরাহ করতে বাধ্য করে force কয়েক দশক ধরে.


0

হিসাবে উত্তর নির্দিষ্ট, লিনাক্স ব্যবহারকারীর নাম করতে সব-সাংখ্যিক হও। তবে এটি একটি খারাপ ধারণা কারণ এটি অনেকগুলি সফ্টওয়্যার সরঞ্জাম (এবং হিউম্যান সিসাদমিনগুলিকে বিভ্রান্ত করবে)।

এই কারণে, উদাহরণস্বরূপ, সমস্ত সংখ্যাসূচক ব্যবহারকারীর নাম এবং গোষ্ঠীর নামগুলি RHEL 7 এ অবমূল্যায়ন করা হয়েছে এবং RHEL 8 এ নিষিদ্ধ করা হয়েছে:

8.7.1। shadow-utilsআর সর্বসংখ্যক ব্যবহারকারী এবং গোষ্ঠীর নামের অনুমতি দেয় না

useraddএবং groupaddকমান্ড সাংখ্যিক বর্ণ বিশুদ্ধরূপে গঠিত ব্যবহারকারী এবং গ্রুপ নাম নামঞ্জুর। এই জাতীয় নাম না দেওয়ার কারণ হ'ল এটি সম্ভাব্য অনেক সরঞ্জামকে বিভ্রান্ত করতে পারে যা ব্যবহারকারী এবং গোষ্ঠীর নাম এবং ব্যবহারকারী এবং গ্রুপ আইডির সাথে কাজ করে (যা সংখ্যা)। দয়া করে নোট করুন যে সমস্ত-সংখ্যাসূচক ব্যবহারকারী এবং গোষ্ঠীর নামগুলি Red Hat Enterprise Linux 7-এ অবচয় করা হয়েছে এবং তাদের সমর্থন সম্পূর্ণরূপে Red Hat Enterprise Linux 8-এ মুছে ফেলা হয়েছে।


-2

আমি নিশ্চিত নই যে আমি এটিকে প্রযুক্তিগত কারণ বলব, তবে এই নিয়মটি "ব্যবহারকারী নামটি অবশ্যই একটি বৈধ প্রোগ্রামিং-ভাষা শনাক্তকারী হতে হবে" এ ফোটে। সনাক্তকারীদের তাদের সীমিত সিনট্যাক্সের কারণে কিছু দুর্দান্ত বৈশিষ্ট্য রয়েছে: চরিত্র অনুসারে বৈশিষ্ট্য পড়ার সময়ও তাদের সংখ্যার জন্য ভুল করা যায় না এবং পার্সার দিয়ে যাওয়ার সময় এগুলি উদ্ধৃত করার প্রয়োজন হয় না। সংক্ষেপে, তারা সহজেই নাম হিসাবে স্বীকৃত হয়, যা তাদের সাথে কাজ করার জন্য প্রয়োজনীয় প্রোগ্রামিংয়ের কাজ হ্রাস করে।

আমার সন্দেহ ছিল কি কখনো সত্যিই ব্যবহারকারীর নাম করে একটি অঙ্ক দিয়ে শুরু নামঞ্জুর করার জন্য প্রয়োজন হয় তাহলে, কিন্তু "একটি ব্যবহারকারীর নাম হতে হবে একটি আইডেন্টিফায়ার" একটি সাধারণ নিয়ম যে স্ফটিক তাড়াতাড়ি ইউনিক্স ব্যবহারকারীদের 100% স্পষ্ট হয়ে যেত হয়।

আপনি যদি আপনার ব্যবহারকারী নামটি টাইপ করেন তবে কেবলমাত্র জিইআইআই-এ লগইন প্রম্পটে থাকলে এটিতে কোন অক্ষর অন্তর্ভুক্ত রয়েছে তা (সম্ভবত নালাগুলি এবং নতুন লাইনের মতো জিনিসগুলি ছাড় দেওয়া হবে, যা এমনকি লগইন পদ্ধতিটিকে হিচাপ দেয়) কোনও পার্থক্য করে না। তবে আপনি যদি কমান্ডলাইন থেকে অনেক কাজ করেন তবে সহজে ব্যবহারকারীর নাম ব্যবহারের সুবিধা রয়েছে।


হুম, একটি লগইন (ব্যবহারকারীর নাম) একটি প্রোগ্রামিং ভাষা শনাক্তকারী সাথে একেবারে কিছুই করার নেই।
এফএমপুরফি

আর একটি বৈধ ব্যবহারকারী নাম সংজ্ঞা হল শনাক্তকারী হিসেবে একই, যে বিন্দু আছে।
অ্যালেক্সিস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.