এটি কীভাবে 8 টি ব্লক বরাদ্দ পাওয়া যায় তবে ফাইল আকার 0?


9

কেউ আমাকে অন্য সাইটে এই প্রশ্নটি সম্পর্কে জিজ্ঞাসা করে, যেমন "abc.dat" নামে একটি ফাইলের 0 টি ফাইল আকার রয়েছে তবে 8 টি ব্লক রয়েছে, এবং এটিই আমাকে দিতে অনুরোধ করে (কিছু পাঠ্য চীনা থেকে ইংরেজিতে অনুবাদ করা হয়েছে):

$ cp abc.dat abc2.dat; ls -ls abc2.dat #try to copy, it still 8 blocks but 0 byte
8 -rw-rw-r--  1 rokeabbey rokeabbey      0 Feb  27 19:39 abc2.dat 

8 -rw-rw-r-- 1 রোকেবি রোকেবেবি 0 সেপ্টেম্বর 18 19:11 abc.dat # সরি, এটি অতিরিক্ত ভুল আউটপুট হতে পারে

$ stat abc.dat
  File: 'abc.dat'
  Size: 0           Blocks: 16          IO Block: 4096   regular empty file
Device: 32h/50d      Inode: 3715853    Links: 1
Access: (0664/-rw-rw-r--)  Uid:( 1000/rokeabbey)   Gid:( 1000/rokeabbey)
Access: 2018-02-26 21:13:57.640639992 +0800
Modify: 2017-09-18 19:11:42.221533011 +0800
Change: 2017-09-18 19:11:42.221533011 +0800
 Birth: -

$ touch abc3.dat ; ls -sl | grep abc #try to create new empty file, it still 8 blocks by default
8 -rw-rw-r--  1 rokeabbey rokeabbey      0 Feb  27 19:39 abc2.dat
8 -rw-rw-r--  1 rokeabbey rokeabbey      0 Feb  27 19:40 abc3.dat
8 -rw-rw-r--  1 rokeabbey rokeabbey      0 Sep  18 19:11 abc.dat

আমি স্পার ফাইল, ফাইল মেটাডেটা, সিমলিংক কেস সম্পর্কে কিছুটা শিখেছি, তবে এর কোনটিই 8 টি ব্লকের সাথে 0 বাইট ফাইলের আকারের কারণ হয়ে উঠবে না। কোনও ফাইলের জন্য ন্যূনতম ব্লক আকারের মতো কোনও ফাইল সিস্টেম সেটআপ আছে ?

তিনি আমাকে বলেছিলেন যে তার সিস্টেমগুলি উবুন্টু 16.04 এবং ext4।

[হালনাগাদ]

$ df -Th /home/rokeabbey
/home/rokeabbey/.Private ecryptfs  138G   39G   92G   30% /home/rokeabbey

[আপডেট] আমি ইক্য্রিপটিফ সহ পুনরুত্পাদন করতে পারি

xb@dnxb:/tmp/test$ sudo mkdir /opt/data
xb@dnxb:/tmp/test$ sudo apt-get install ecryptfs-utils
...
xb@dnxb:/tmp/test$ sudo mount -t ecryptfs /opt/data /opt/data
Passphrase: 
...
Selection [aes]: 1
...
Selection [16]: 1
Enable plaintext passthrough (y/n) [n]: y
Enable filename encryption (y/n) [n]: y
...
Would you like to proceed with the mount (yes/no)? : yes
...
in order to avoid this warning in the future (yes/no)? : no 
Not adding sig to user sig cache file; continuing with mount.
Mounted eCryptfs
xb@dnxb:/tmp/test$ l /opt/data
total 8.0K
52953089 drwxr-xr-x 9 root root ? 4.0K Feb  27 23:16 ../
56369402 drwxr-xr-x 2 root root ? 4.0K Feb  27 23:16 ./
xb@dnxb:/tmp/test$ sudo touch /opt/data/testing
xb@dnxb:/tmp/test$ less /opt/data/testing      
xb@dnxb:/tmp/test$ sudo umount /opt/data
xb@dnxb:/tmp/test$ ls -ls /opt/data
total 8
8 -rw-r--r-- 1 root root 8192 Feb  27 23:42 ECRYPTFS_FNEK_ENCRYPTED.FWbECDhE0C37e-Skw2B2pnQpP9gB.b3yDfkVU5wk7WhvMreg8yVnuEaMME--
xb@dnxb:/tmp/test$ less /opt/data/ECRYPTFS_FNEK_ENCRYPTED.FWbECDhE0C37e-Skw2B2pnQpP9gB.b3yDfkVU5wk7WhvMreg8yVnuEaMME-- 
"/opt/data/ECRYPTFS_FNEK_ENCRYPTED.FWbECDhE0C37e-Skw2B2pnQpP9gB.b3yDfkVU5wk7WhvMreg8yVnuEaMME--" may be a binary file.  See it anyway? 
xb@dnxb:/tmp/test$ sudo mount -t ecryptfs /opt/data /opt/data
Passphrase: 
Select cipher: 
...
Selection [aes]: 1   
...
Selection [16]: 1
Enable plaintext passthrough (y/n) [n]: y
Enable filename encryption (y/n) [n]: y
...
Would you like to proceed with the mount (yes/no)? : yes
...
in order to avoid this warning in the future (yes/no)? : no 
Not adding sig to user sig cache file; continuing with mount.
Mounted eCryptfs
xb@dnxb:/tmp/test$ ls -ls /opt/data
total 8
8 -rw-r--r-- 1 root root 0 Feb  27 23:42 testing
xb@dnxb:/tmp/test$

আমি বিভ্রান্ত কি abc.datএবং abc2.datডিরেক্টরি? ls -ls abc2.datআউটপুট নির্দেশ করে যে এটি দুটি এন্ট্রি সঙ্গে একটি ডিরেক্টরির, এবং stat abc.datনির্দেশ করে যে যে খুব একটি ডিরেক্টরি। নাকি আপনি আউটপুট সম্পাদনা করেছেন?
কুসালানন্দ

@ কুসালানন্দ দুঃখিত, আমি চীনা থেকে অনুবাদ করেছি এবং ডিরেক্টরিটির অনুবাদ মিস করছি।
ফল 14

@ কুসালানন্দ ls -ls abc2.dat, তিনি আমাকে এই 2 টি লাইন দেখিয়েছেন, বেশিরভাগ মতই তিনি ভুল আউটপুটটি আটকে দিয়েছেন। এবং 3 য় আউটপুট সঠিক আউটপুট দেখায়।
ফল

কেবলমাত্র আমি ভাবতে পারি বর্ধিত বৈশিষ্ট্য ব্লক। সে সেলইনক্স ব্যবহার করছে?
psusi

উত্তর:


16

ফাইল সিস্টেম এনক্রিপ্ট করা থাকলে এটি ঘটে; এফএসকে ফাইলের জন্য অতিরিক্ত মেটাডেটা সঞ্চয় করা দরকার, খালি থাকলেও।

আমি যখন ভ্যানিলা ইক্য্রিপ্টস মাউন্ট (উবুন্টু 12.04-এলটিএস) এর সাথে একটি মেশিন হাতে রাখার ঘটনা ঘটলাম, আমি নিশ্চিত করতে পারি যে একটি খালি ফাইল আটটি ব্লক পাবে:

$ touch test
$ ls -ls test

8 -rw-rw-r-- 1 admin admin 0 feb 27 16:45 test

3
32 কেবি মূল্য? বেশ কিছুটা।
hobbs

6

আপনি যদি ইনোডের অভ্যন্তরের ভিতরে ফিট করতে পারেন তার চেয়ে বেশি আপনি যদি ফাইলটিতে অ্যাট্রিবিউটগুলি বাড়িয়ে থাকেন তবে আপনি ব্লকগুলির সাথে একটি শূন্য আকারের ফাইল পেতে পারেন:

$ touch abc
$ setfattr -n user.test -v xyz abc        # this doesn't do it
$ ls -s abc                               # since the data fits in the inode
0 abc
$ setfattr -n user.test -v "$(printf %100s " ")"  abc
$ ls -s abc
4 abc

তবে, আমি দেখতে পাচ্ছি না আপনি কীভাবে 8 কিলোবাইট পাবেন, xattrম্যান পৃষ্ঠা অনুসারে , আকার 2/3/4 এ ব্লকের আকারের মধ্যে সীমাবদ্ধ এবং ব্লক আকারটি সিস্টেম পৃষ্ঠার আকার দ্বারা সীমাবদ্ধ , তাই x86 এ 4 কেবি। এছাড়াও, নতুন তৈরি হওয়া ফাইলটির কোনও বর্ধিত বৈশিষ্ট্য থাকতে হবে না, যদি না আপনি সেলইনাক্স চালাচ্ছেন, তবে ls -lসেক্ষেত্রে এসইলিনাক্স ট্যাগের উপস্থিতি নির্দেশ করার জন্য অনুমতি বিটের শেষে বিন্দুটি প্রদর্শন করা উচিত।


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