চ্যালেঞ্জ
কোনও ফাইলের ইউনিক্স অনুমতি এবং তার মালিকানা (ব্যবহারকারী আইডি এবং গ্রুপ আইডি) এর প্রতীকী সূচক নির্দেশিত একটি স্ট্রিং দেওয়া, কোনও প্রদত্ত ব্যবহারকারীর A
এটি পড়ার / লেখার / সম্পাদন করার অনুমতি আছে কিনা তা সিদ্ধান্ত নিন ।
ইউনিক্স সিস্টেমে অনুমতি
ইউএনআইএক্সে, প্রতিটি ফাইলের মধ্যে তিনটি শ্রেণীর অনুমতি ( ব্যবহারকারী , গোষ্ঠী এবং অন্যান্য ) এবং মালিকানা রয়েছে, যার মধ্যে কোন ব্যবহারকারী এবং এটি কোন গ্রুপের অন্তর্ভুক্ত।
প্রতীকী স্বরলিপিটি দশটি অক্ষর নিয়ে গঠিত। এই চ্যালেঞ্জে প্রথম চরিত্রটি গুরুত্বপূর্ণ নয়। বাকী নয়টি অক্ষর তিনটি অক্ষরের তিনটি সেটে রয়েছে, যা ব্যবহারকারী, গোষ্ঠী এবং অন্যান্য শ্রেণীর অনুমতিগুলির প্রতিনিধিত্ব করে। প্রতিটি সেট-এর অক্ষরগুলি পড়ার / লেখার / সম্পাদনের অনুমতিপ্রাপ্ত কিনা তা নির্দেশ করে। যদি অনুমতি দেওয়া হয় তবে তা হবে r
, w
বা x
। অন্যথায়, এটি হবে -
।
লক্ষ্য করুন setuid , setgid এবং চটচটে বিট প্রতিটি সেট তৃতীয় চরিত্র পরিবর্তন হতে পারে s
, S
, t
বা T
। এখানে একটি সহজ নিয়ম: চরিত্রটি যদি ছোট হাতের অক্ষর হয় তবে তার অনুমতি নির্ধারণ করা হয়; অন্যথায়, এটি না।
(অনুমতিগুলির প্রতীকী স্বরলিপিগুলির বিশদগুলির জন্য, দয়া করে এখানে দেখুন ))
প্রত্যেক ব্যবহারকারীর নিজস্ব আইডি রয়েছে এবং প্রতিটি গ্রুপের গ্রুপ আইডি রয়েছে। সমস্ত আইডি অ-নেতিবাচক পূর্ণসংখ্যার হবে। একজন ব্যবহারকারী কমপক্ষে একটি গোষ্ঠীর অন্তর্ভুক্ত। যদি কোনও ব্যবহারকারী A
কোনও ফাইলে অ্যাক্সেস পেতে চান তবে সিস্টেমটি তাদের অনুমতিগুলি নীচের হিসাবে যাচাই করবে:
যদি ফাইলটি ব্যবহারকারীর অন্তর্ভুক্ত থাকে
A
তবে ব্যবহারকারী শ্রেণীর অনুমতি চেক করুন ।যদি ফাইলটি অন্তর্ভুক্ত না হয়
A
তবেA
ফাইলটি গ্রুপের অন্তর্ভুক্ত তবে গ্রুপ শ্রেণীর অনুমতি চেক করুন ।অন্যথায়, অন্য শ্রেণীর অনুমতি পরীক্ষা করুন ।
তবে, একটি ব্যতিক্রম আছে: যদি ব্যবহারকারী আইডি 0 (সুপারইউসার) হয় তবে তাদের কিছু করার অনুমতি রয়েছে !
বিশেষ উল্লেখ
- আপনার প্রোগ্রাম / ফাংশন এটিকে কোনও যুক্তিসঙ্গত বিন্যাসে ইনপুট হিসাবে নেওয়া উচিত:
- প্রতীকী স্বরলিপি মধ্যে অনুমতি ।
- ব্যবহারকারী আইডি এবং গ্রুপ আইডি যা ফাইলটি অন্তর্ভুক্ত।
- এর ব্যবহারকারী আইডি
A
এবং গ্রুপ আইডির একটি তালিকা যাA
এর সাথে সম্পর্কিত। - অ্যাক্সেসের ধরণ। আপনি পড়তে, লিখতে এবং সম্পাদন করতে যে কোনও তিনটি পৃথক এক-ডিজিট বা এক-বর্ণের মান ব্যবহার করতে পারেন।
A
ফাইলটি অ্যাক্সেস করার অনুমতি থাকলে সত্যবাদী মান বা আউটপুট আউটপুট , বা না থাকলে একটি মিথ্যা মান।- আপনি ধরে নিতে পারেন যে স্বরলিপিটির প্রথম অক্ষর সর্বদা থাকবে
-
(নিয়মিত ফাইল)। - এটি কোড-গল্ফ , তাই বাইটের মধ্যে সবচেয়ে সংক্ষিপ্ততম জয়!
পরীক্ষার কেস
এখানে ফর্ম্যাটটি [permissions, user ID of file, group ID of file, user ID of A, group IDs of A, type(r/w/x)]
।
[-rwx------, 13, 15, 13, [15, 24], r]: True # user
[-rwxr-xr-x, 13, 24, 24, [15, 24], w]: False # group
[-rwxr-Sr-T, 13, 15, 24, [15, 35], x]: False # group
[-rwsr-xr-t, 13, 15, 24, [24, 35], x]: True # others
[----------, 13, 15, 0, [0, 1, 2], r]: True # superuser
[----------, 13, 15, 1, [0, 1, 2], r]: False # others
[----rwxrwx, 13, 15, 13, [15, 24], r]: False # user