'চ্যাটার-আই'-এর পরেও কোনও ডিরকে' রুট 'হিসাবে মুছতে পারে না `


3

আমি একটি ডিরেক্টরি মুছে ফেলার চেষ্টা করছি foo, এবং চেষ্টা করার মতো জিনিস থেকে সম্পূর্ণ আউট।

দ্রষ্টব্য: আমি জানি, আমি এলএক্সডি পাত্রে মুছে ফেলার কথা বলি না rm, তবে আমি এই ডিরেক্টরিটির বিষয়বস্তুগুলি আগেই গণ্ডগোল করে ফেলেছি এবং তাই rmএখনই ঠিক আছে )

নীচে লক্ষ্য করুন, এর পিতামাতার foo(অর্থাৎ containersডিরেক্টরিটি) এতে লেখার অনুমতি রয়েছে।

[root@box /var/lib/lxd]$ ls -l
drwx--x--x 1 root root    74 Dec 24 09:09 containers
    <snip>

[root@box /var/lib/lxd]$ cd containers/
[root@box /var/lib/lxd/containers]$ ls -l
    <snip>
drwxr-xr-x+ 1 231072 231072     0 Dec 24 09:13 foo

[root@box /var/lib/lxd/containers]$ ls -l foo
total 0

[root@box /var/lib/lxd/containers]$ lsattr 
    <snip>
---------------- ./foo

[root@box /var/lib/lxd/containers]$ lsattr -d foo
---------------- foo

[root@box /var/lib/lxd/containers]$ /bin/rm -rf foo
/bin/rm: cannot remove 'foo': Operation not permitted

[root@box /var/lib/lxd/containers]$ chattr -R -ia foo
[root@box /var/lib/lxd/containers]$ lsattr -d foo
---------------- foo

[root@box /var/lib/lxd/containers]$ /bin/rm -rf foo
/bin/rm: cannot remove 'foo': Operation not permitted

[root@box /var/lib/lxd/containers]$ ls -l
    <snip>
drwxr-xr-x+ 1 231072 231072     0 Dec 24 09:13 foo

এমনকি একটি chown -R root.root fooসাহায্য না!

আশ্চর্যের বিষয়টি হ'ল কমান্ডটি দিয়ে এবং তারপরেই lsattrকোনও অতিরিক্ত বৈশিষ্ট্য সেট করা নেই । সুতরাং, কেন দেখাচ্ছিল - এবং প্রদর্শন চালিয়ে যাচ্ছি - এর পরের তালিকাটির পরবর্তী ?foochattrls -l foo+foo

আমি উবুন্টু ১.0.০৪ ব্যবহার করছি এক্সট্রিএফএস সহ, আজকের সর্বশেষ আপডেটের সাথে।

সম্পাদনা : ফাইলসিস্টেম হয় Btrfs , এবং ext4fs। এটি একটি বহিরাগত ইউএসবি হার্ড-ড্রাইভ যা আমি আমার হোস্টের উপরে মাউন্ট করছি /var/lib/lxd


আপনি কি "কাওন রুট: রুট ফু" এবং "chmod 555 foo" চেষ্টা করেছেন যাতে আপনি এটি মুছতে পারেন? আমার কাছে মনে হচ্ছে ফোল্ডারটি নষ্ট হয়ে গেছে। : পি এমন নয় যে এটি অনেক সাহায্য করে।
কেনগ্রেচট

@cengbrecht আমি এর chownআগে চেষ্টা করেছি , কিন্তু এবার চেষ্টা করাও কার্যকর chmodহয়নি। যাইহোক, আমার সম্পাদনাটি এক সেকেন্ডে দেখুন।
হ্যারি

এলএস
আলাহ

fsck সম্পর্কে কি, আপনি ডিস্ক চেক করেছেন? (কেবলমাত্র আমার সার্ভারগুলিতে
ইয়াতে

নাঃ। btrfsckকোন ত্রুটি রিপোর্ট। প্রতিবেদনের ls -lahপিতামাতার জন্য foo0 বাইট foo; এর ভিতরে fooএটির জন্য তালিকাভুক্ত অ্যাডিশনাল অনুমতি সহ কেবল .এবং ..ডায়ারগুলি +তালিকাবদ্ধ করে .
হ্যারি

উত্তর:


4

আমার বাজি আপনার ডিরেক্টরি আসলে একটি বিটিআরএফস সাবভলিউম। আমি একটা পরীক্ষা দিয়েছি। যখন আমি rmআমার পরীক্ষার সাবভলিউম চেষ্টা করি তখন আমি "অপারেশন অনুমোদিত নয়" পাই।

আমি যদি সঠিক হয়ে থাকি তবে নিম্নলিখিত ক্ষেত্রে আপনার ক্ষেত্রে কাজ করা উচিত:

sudo btrfs subvolume delete foo

আমি বুঝতে পারি যে আপনার ডিরেক্টরিটি ইতিমধ্যে খালি, তবে সাধারণ ক্ষেত্রে আপনাকে আগেই এটি খালি করতে হতে পারে।


অনুরোধ হিসাবে আরও ব্যাখ্যা:

একটি সাবভলিউম ফাইল সিস্টেমের একটি অংশ যার নিজস্ব এবং স্বাধীন ফাইল / ডিরেক্টরি শ্রেণিবদ্ধ। সাবভলিউমগুলি ফাইল এক্সটেন্টগুলি ভাগ করতে পারে।

আপনি বিটিআরএফএস উইকি থেকে আরও শিখতে পারেন । নিয়মিত ডিরেক্টরি বদলে সাবভলিউম তৈরি করতে কেউ চাইলে প্রধান কারণগুলি হ'ল:

  • একটি সাবভলিউম মাউন্ট করা যেতে পারে কারণ এটি নিজস্ব বিকল্পগুলির সাথে একটি পৃথক ফাইল সিস্টেম ছিল (তুলনা করুন: যদিও আপনি বাইন মাউন্ট দিয়ে একটি নিয়মিত ডিরেক্টরি মাউন্ট করতে পারেন তবে এটি ইতিমধ্যে মাউন্ট করা ফাইল সিস্টেমের মধ্যে উপস্থিত থাকতে হবে; বিটিআরএফএস সাবভলিউম সহজেই রুট ফাইল সিস্টেম হিসাবে মাউন্ট করা যেতে পারে /);
  • কেউ একটি সাবভলিউম স্ন্যাপশট তৈরি করতে পারে যা একটি পৃথক সাবভোলিউম যা প্রাথমিকভাবে উত্স সাবভলিউমের সাথে সমস্ত ফাইল এক্সটেন্ট শেয়ার করে।

ব্যবহারিক উদাহরণ:

আমার বিটিআরএফএস ফাইল সিস্টেমে নিম্নলিখিত অভ্যন্তরীণ কাঠামো রয়েছে (মনে রাখবেন এই কাঠামোটি সিস্টেমের দ্বারা প্রদর্শিত ডিরেক্টরি কাঠামোর চেয়ে আলাদা কিছু; মাউন্টপয়েন্টগুলি পরবর্তীগুলির অন্তর্গত):

/                        # btrfs root filesystem mounted as /mnt/ssd/
  @                      # a subvolume I use as the root filesystem (mounted as /)
  @backups
    @-20161215-1-working # a snapshot of @ just in case

ধরা যাক আমি আমার সিস্টেমের সাথে গোলযোগ করতে চাই। সতর্কতা হিসাবে আমি প্রথমে একটি স্ন্যাপশট তৈরি করি:

cd /mnt/ssd/@backups
sudo btrfs subvolume snapshot ../@ @-20161224-1-just_in_case

আমি আমার ওয়ার্কিং সিস্টেমের মধ্যে থেকে এটি করি এবং এতে কোনও সময় লাগে না। এটি প্রাথমিকভাবে কোনও ডিস্কস্পেসও নেয় না। সম্পর্কিত স্থান এবং ডিরেক্টরি গাছগুলি পৃথক হতে শুরু করলে অতিরিক্ত স্থানটি পরে বরাদ্দ করা হবে।

পরবর্তী আমি এমনকি @সাবভলিউমের অভ্যন্তরে থাকা আমার সিস্টেমটিও ভেঙে ফেলতে পারি । @backups/@-20161224-1-just_in_caseসাবভলিউম যতক্ষণ অক্ষত থাকে, ততক্ষণ আমি @এই ব্যাকআপটি দিয়ে এমনভাবে প্রতিস্থাপন করতে পারি যেন কিছুই হয়নি। সবচেয়ে খারাপ ক্ষেত্রে এটি করতে আমাকে লাইভ ডিস্ট্রো থেকে বুট করতে হবে। তবে যদি আমার বুটলোডার (GRUB2) এখনও কাজ করে তবে আমি বুটটাইমে এটিতে এন্ট্রি সম্পাদনা করতে পারি এবং অস্থায়ীভাবে আমার রুট ফাইল সিস্টেম হিসাবে সাবভলিউমের @backups/@-20161224-1-just_in_caseপরিবর্তে ব্যবহার করতে @পারি। তারপরে, পুনরায় ওয়ার্কিং সিস্টেমের মধ্যে থেকে আমি করি:

cd /mnt/ssd/
sudo btrfs subvolume delete @  # I may have to empty it first
sudo btrfs subvolume snapshot @backups/20161224-1-just_in_case @

তারপরে আমি রিবুট করি। সিস্টেমটি পুনরুদ্ধার করা হয়েছে।


এটি কাজ করেছে, ধন্যবাদ একটি টন। তবে আমি কীভাবে বিটিআরএফএস সাবভলিউম (যা নিজেই কেবল একটি ফাইল-সিস্টেম) rootএর আদেশ rm -fএবং chattr -iআদেশগুলি প্রতিহত করতে সক্ষম তা জানতে পেরে আমি হতবাক হয়েছি । আমি বিটিআরএফ এবং এই জাতীয় শককারীদের সম্পর্কে আরও বিশদ কোথায় পাব? আপনি নিজের উত্তরে এই বিষয়ে কিছুটা ব্যাখ্যা করতে পারলে খুশি হবেন, যা আমি ইতিমধ্যে চূড়ান্ত হিসাবে চিহ্নিত করেছি।
হ্যারি

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