এটি সামান্য বহিরাগত প্রশ্ন, তবে নেট সম্পর্কে এ সম্পর্কে খুব বেশি তথ্য আছে বলে মনে হয় না। আমি সবেমাত্র জিপ ফর্ম্যাটটির বাহ্যিক ফাইল বৈশিষ্ট্য সম্পর্কে একটি প্রশ্নের উত্তর যুক্ত করেছি । আমার উত্তর থেকে আপনি দেখতে পাচ্ছেন, আমি উপসংহারে পৌঁছেছি যে ইউনিক্সের জন্য কেবলমাত্র দ্বিতীয় বাইট (4 বাইটের) ব্যবহার করা হয়। দৃশ্যত এটিতে পর্যাপ্ত তথ্য রয়েছে যখন অবজেক্টটি কোনও ফাইল বা ডিরেক্টরি কিনা তা অনুমান করার জন্য, এবং অন্যান্য অনুমতি এবং বৈশিষ্ট্য সম্পর্কিত তথ্যেরও স্থান রয়েছে। আমার প্রশ্ন হ'ল, এই মানচিত্রটি কীভাবে সাধারণ ইউনিক্স অনুমতি নিয়ে যায়? সাধারণ ইউনিক্স অনুমতিগুলি (উদাহরণস্বরূপ নীচে) যা ls
ঠিক এক বাইটে ফিট করে এবং যদি তাই হয় তবে কেউ লেআউটটি বর্ণনা করতে পারে বা রেফারেন্স দিতে পারে, দয়া করে?
$ ls -la
total 36
drwxr-xr-x 3 faheem faheem 4096 Jun 10 01:11 .
drwxrwxrwt 136 root root 28672 Jun 10 01:07 ..
-rw-r--r-- 1 faheem faheem 0 Jun 10 01:07 a
drwxr-xr-x 2 faheem faheem 4096 Jun 10 01:07 b
lrwxrwxrwx 1 faheem faheem 1 Jun 10 01:11 c -> b
আমাকে একটি নির্দিষ্ট প্রশ্ন জিজ্ঞাসা করে এটি আরও কংক্রিট করতে দিন। প্রতি ট্র্যাক প্যাচ উপরে আমার উত্তর উদ্ধৃত, আপনি নীচের Python- র স্নিপেট সঙ্গে একটি জিপ ফাইল তৈরি করতে পারেন।
040755 << 16L
মান অনুমতিসহ একটি খালি ডিরেক্টরি সৃষ্টি অনুরূপ drwxr-xr-x
। (আমি এটি পরীক্ষা করেছি)। আমি প্যাটার্নের 0755
সাথে মিলে যায় তা চিনতে পারি rwxr-xr-x
তবে কী হবে 04
এবং পুরো মানটি কীভাবে বাইটের সাথে মিলবে? আমি << 16L
16 টি স্থানের খানিকটা বাম পাশের শিফ্টের সাথেও মিল রাখি যা এটি শীর্ষ বাইট থেকে দ্বিতীয় হিসাবে শেষ করবে।
def makezip1():
import zipfile
z = zipfile.ZipFile("foo.zip", mode = 'w')
zfi = zipfile.ZipInfo("foo/empty/")
zfi.external_attr = 040755 << 16L # permissions drwxr-xr-x
z.writestr(zfi, "")
print z.namelist()
z.close()
সম্পাদনা: এটিকে পুনরায় পড়ার পরে, আমি মনে করি যে ইউনিক্স অনুমতিগুলি কেবল একটি বাইটের সাথে মিলে যায় এমন আমার উপসংহারটি ভুল হতে পারে তবে সঠিক উত্তরটি কী তা আমি নিশ্চিত নই বলে আমি আপাতত উপরের অবস্থানটি উপস্থিত করব।
সম্পাদনা 2: আমি কেবল 1 বাইটের সাথে সম্পর্কিত ইউনিক্স মান সম্পর্কে সত্যই ভুল ছিল। @ র্যান্ডম 832 যেমন ব্যাখ্যা করেছে, এটি শীর্ষ দুটি বাইট উভয়ই ব্যবহার করে। @ র্যান্ডম 832 এর উত্তর অনুসারে, 040755
তিনি নীচে প্রদত্ত টেবিলগুলি থেকে আমরা পছন্দসই মানটি তৈরি করতে পারি । যথা:
__S_IFDIR + S_IRUSR + S_IWUSR + S_IXUSR + S_IRGRP + S_IXGRP + S_IROTH + S_IXOTH
0040000 + 0400 + 0200 + 0100 + 0040 + 0010 + 0004 + 0001
= 40755
এখানে সংযোজন 8 বেসে ।