টাকার সংরক্ষণাগারটিতে থাকা ফাইলগুলির জন্য ফাইলের মালিকানা পরিবর্তন করুন


10

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

আমি খুঁজে পেয়েছি fakerootযা মনে হয় ঠিক তাই করছে। তবে আমার সংরক্ষণাগারটি তৈরি করতে আমার যে সিনট্যাক্সটি ব্যবহার করা দরকার তা আমি খুঁজে পাচ্ছি না।

আমি কীভাবে একটি টার.এক্সজেড সংরক্ষণাগার তৈরি করতে পারি, যাতে রুটগুলি আনপ্যাক করা না হলে ফাইলগুলির রুট মালিকানা থাকে?

do something with fakeroot ...
tar cfpJ foo.tar.xz foo/

উত্তর:


12

আমি কীভাবে একটি টার.এক্সজেড সংরক্ষণাগার তৈরি করতে পারি, যাতে রুটগুলি আনপ্যাক করা না হলে ফাইলগুলির রুট মালিকানা থাকে?

কে আনপ্যাক করে তা মূল পর্যন্ত:

tar --no-same-owner -xf ...

আপনি যদি সেগুলি দিয়ে শুরু করতে সমস্ত রুট করতে চান তবে আপনি ব্যবহার করতে পারেন

tar --owner=root --group=root -cf ...

এটি আমার পক্ষে কাজ করে না: tar --owner=root --group=root cfpJ files.tar.xz files/আমাকে ত্রুটি tar: You must specify one of the -অ্যাক্ট্রটাক্স --test-label' options Try 'বা তারtar --usage' for more information.
সাহায্যের

-আপনার সংক্ষিপ্ত বিকল্পগুলির স্ট্রিংয়ের আগে আপনার প্রয়োজন : tar --owner=root --group=root -cfpJ ...হ'ল -cfpJনা cfpJ
স্বর্ণলোক

tar --owner=root --group=root -cfpJ files.tar.xz files/আমাকে আরও একটি ত্রুটি দেয়: tar: files.tar.xz: Cannot stat: No such file or directory tar: Exiting with failure status due to previous errorsএবং তদুপরি, এটি একটি ফাইল তৈরি করে pJ
ব্যবহারকারী 1968963

3
ঠিক আছে. আমি সর্বদা প্রান্তটি রেখেছি f(কারণ এটি আরও জ্ঞাত করে তোলে, স্বজ্ঞাগতভাবে) এবং কম এবং দেখুন, তবে আমি -cfpJবিটি -cpJfকাজের সাথে একই ব্যর্থতা পেয়েছি ।
স্বর্ণলোক

@ user1968963: f ফাইলের নামের ঠিক আগে হওয়া উচিত, কারণ এর অর্থ "পরবর্তী পরামিতি ফাইলের নাম"। আপনি যদি এটি ফাইলের ঠিক আগে রাখেন না, তারার মনে করবে ফাইলের নাম "", এবং তারপরে এটি একটি ফাইল খোলার চেষ্টা করে, যা এটি স্থির করতে পারে না (অবশ্যই)।
অলিভিয়ার ডুলাক

8

Fakeroot

Fakeroot ইউটিলিটি, অথবা ঊর্ধ্বতন সংস্করণ ইউটিলিটি fakeroot-NG (একই উদ্দেশ্য, বিভিন্ন বাস্তবায়ন কৌশল) একটি প্রোগ্রাম এবং প্রোগ্রাম ভান এটি রুট হিসাবে চলমান রান এবং যে সিস্টেম থেকে এমন আহ্বান যেমন chownসফল হয়েছে। কেবল প্রোগ্রামটি বিশ্বাস করে যে এই কলগুলি সফল হয়েছে, কিছুই বাস্তবে ফাইল সিস্টেমে প্রতিফলিত হয় না (এটি fakerootকোনও অতিরিক্ত সুযোগ-সুবিধা না থাকায় হতে পারে না )। তবে, প্রোগ্রামটি যদি কোনও ফাইলের মালিকানা পরিবর্তন করে এবং তারপরে সেই ফাইলটির মালিকানার উপর ভিত্তি করে কিছু পদক্ষেপ নেয়, এটি প্রোগ্রামের আচরণ পরিবর্তন করতে পারে।

নিম্নলিখিতটি ঘটে এমন একটি ফেকরূট পরিবেশ চালিয়ে ফেকারূট থেকে কার্যকর কাজ পাওয়ার একটি সাধারণ উপায়:

  1. কিছু ফাইল তৈরি করুন, এগুলি চারপাশে সরান, তাদের মালিকানা এবং মোডগুলি পরিবর্তন করুন ইত্যাদি
  2. এই ফাইলগুলির একটি সংরক্ষণাগার তৈরি করুন।

উদাহরণ:

fakeroot sh -c '
    chown root:root usr/bin/foo
    tar cf foo.tar usr
'

আমন্ত্রণগুলির মধ্যে fakerootকোনও স্মৃতি নেই বলে আপনার একক অনুরোধটি ব্যবহার করা উচিত ।

লিনাক্স নেমস্পেস

কেবলমাত্র সম্পূর্ণতার জন্য, আমি উল্লেখ করব যে আপনার যদি একটি লিনাক্স কার্নেল -3.8 থাকে, তবে নেমস্পেসগুলি -রুট পরিবেশ তৈরির অন্য উপায়। ইউজারল্যান্ড সমর্থন এখনও তেমন নেই তাই আমি আরও বিশদে যাব না।

সংরক্ষণাগারটি মাউন্ট করুন

আপনার সমস্যা সমাধানের একটি ভিন্ন উপায় হ'ল সংরক্ষণাগারটিকে ডিরেক্টরি হিসাবে মাউন্ট করা। আপনি ব্যবহার করতে পারেন archivemount , যা মাধ্যমে বিভিন্ন সংরক্ষণাগার ফরম্যাটের পরিবর্তন করতে সক্ষম libarchive কম্প্রেসযুক্ত টার সহ।

mkdir mnt
archivemount foo.tar.xz mnt
chown root:root mnt/usr/bin/foo
fusermount -u mnt

চমৎকার কৌশলটি সহ archivemount, তবে এটির জন্য এখনও বিশেষাধিকারের উচ্চতা প্রয়োজন, এবং এমনকি ব্যবহারকারী কোনও বিশ্বাসযোগ্য গোষ্ঠীতে থাকলেও যা মাউন্ট এবং আনমাউন্ট করার অনুমতিপ্রাপ্ত, প্রক্রিয়াটি ব্যর্থ হয় chown, তাই কিছু ধরণের তৃতীয় পক্ষের সরঞ্জাম fakerootবা নামের স্থান ব্যবহার করা প্রয়োজন খুব।
আন্তন স্যামসনভ 15
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.