তৈরি এবং একটি পঠন শুধুমাত্র ফাইল লিখুন অনুকরণ


1

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

open("/git/project.git/objects/12/tmp_obj_FNNWoD", O_RDWR|O_CREAT|O_EXCL, 0444) = 5
write(5, "x\1%\3121\16\3020\f@QfK\276\203\325=\250]\30\262q\222(\5\27,\245\216U\233\242"..., 109) = 109
close(5)                                = -1 EPERM (Operation not permitted)

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

আমি ভাগ করে নেওয়ার ফোল্ডারে কোন লেয়ারটি সমস্যা সৃষ্টি করে তা খুঁজে বের করতে হবে তাই আমি অনুক্রমের বিভিন্ন স্তরে এটি চেষ্টা করতে চাই। সমস্যা এই ত্রুটি অনুকরণ করা কঠিন। এটি গিট ইনস্টল করা প্রয়োজন, আমাকে নতুন গিট রিপোজিটরি শুরু করতে হবে এবং এতে ফাইল যোগ করতে হবে।

কিছু সাধারণ লিনাক্স সরঞ্জামগুলির সাথে সিস্টেম কলগুলির এই ক্রমটি করার উপায় আছে কি? স্ট্যান্ডার্ড প্রোগ্রাম দ্বারা আমি কিছু ভালো মানে sed, vim, cat, echo, awk... হয়তো একটি পাইথন স্ক্রিপ্টও করবে।

আমি চেষ্টা প্রতিটি কমান্ড মাত্র 0644 অনুমতি সঙ্গে একটি নতুন ফাইল তৈরি করে।

উত্তর:


0

আমি কেবলমাত্র পঠনযোগ্য অনুমতিগুলির সাথে একটি পাঠ্য-লেখার ফাইল ডিস্ক্রিপ্টর তৈরি করার যে কোনও সরঞ্জাম সম্পর্কে জানি না, তাই আমি এটি ব্যবহার করে একটি স্ট্যাব গ্রহণ করেছি python3.4। আমি মনে করি যে এটি আপনার Git এর সোর্স কোডে উল্লেখ করা আচরণটির পুনঃবৃত্তি করা উচিত।

#!/usr/bin/env python3.4
import os

if __name__ == '__main__':
    fd = os.open('file.txt', os.O_CREAT | os.O_EXCL | os.O_RDWR, 0o444)
    os.write(fd, 'this is a test\n'.encode())
    os.close(fd)

স্ক্রিপ্ট চালানোর পর:

$ ls -al file.txt 
-r--r--r-- 1 karl karl 15 Dec  3 12:00 file.txt
$ cat file.txt 
this is a test 

0

আমার কাছে একটি সদৃশ হিসাবে পতাকাঙ্কিত করার জন্য যথেষ্ট প্রতিনিধি নেই, তবে এটিকে একবারে দেখুন: কমান্ড লাইন সেট করা অনুমতি সঙ্গে ফাইল তৈরি করা যাবে?

আমি মনে করি install -m 444 /dev/null newfile আপনি কি প্রয়োজন হবে।


অন্যান্য প্রশ্ন অনুরূপ কিন্তু একই নয়। ফাইলটিকে শুধুমাত্র পড়ার জন্য তৈরি করতে হবে এবং chmod না করে একই সময়ে এটি লিখতে হবে (কারণ এটি সমস্যাযুক্ত গিট কমান্ড যা করে)। আমি চেষ্টা করেছিলাম install এবং git কমান্ড ব্যর্থ হলে এটি ভাঙা ভলিউমের উপর কাজ করে।
Prvaak

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