মাউন্ট করা সিআইএফ ড্রাইভ ভাগ করে নেওয়ার সময় ফাইল হিসাবে প্রদর্শিত ডিরেক্টরিগুলি


8

আমার একটি সমস্যা আছে যেখানে উইন্ডোজ মেশিন থেকে সাম্বা শেয়ার (উবুন্টু 12.10 এ) অ্যাক্সেস করার সময় একটি ডিরেক্টরি ফাইল হিসাবে দেখানো হয়।

লিনাক্সবক্সের ফোল্ডারে ls -ll থেকে আউটপুট নিম্নরূপ:

chubby@chubby:/media/blackhole/_Arkiv$ ls -ll
total 0
drwxrwxrwx 0 jv users 0 Jun 18  2012 _20
drwxrwxrwx 0 jv users 0 Apr 17  2012 _2006
drwxrwxrwx 0 jv users 0 Apr 17  2012 _2007
drwxrwxrwx 0 jv users 0 May 12  2011 _2008
drwxrwxrwx 0 jv users 0 Feb 19 09:53 _2009
drwxrwxrwx 0 jv users 0 Dec 20  2011 _2010
drwxrwxrwx 0 jv users 0 May  8  2012 _2011
drwxrwxrwx 0 jv users 0 Mar  5 11:37 _2012
drwxrwxrwx 0 jv users 0 Feb 28 10:09 _2013
drwxrwxrwx 0 jv users 0 Feb 28 11:18 _Mailarkiv
drwxrwxrwx 0 jv users 0 Jan  3  2011 _Praktikanter

/ ইত্যাদি / fstab এ প্রবেশাধিকারী হ'ল:

# Mounting blackhole
//192.168.0.50/kunder/ /media/blackhole cifs uid=jv,gid=users,credentials=/home/chubby/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0

আমি যখন আমার উইন্ডোজ বাক্সে সরাসরি এনএএস থেকে ভাগটি অ্যাক্সেস করি তখন কোনও সমস্যা নেই।

সাম্বার সংস্করণটি 6..6.,, তবে আমি প্রচ্ছন্ন বলে মনে হয় এমন কিছুই খুঁজে পেলাম না।

আমি বিভিন্ন অনুমতি, ব্যবহারকারী এবং গোষ্ঠী সহ এটি বিভিন্ন স্থানে মাউন্ট করার চেষ্টা করেছি কিন্তু আমি কোনও অগ্রগতি করি নি

সার্ভারফল্টে আমার কম খ্যাতির কারণে (বেশিরভাগ স্ট্যাকওভারফ্লো ব্যবহারকারী) আমি একটি স্ক্রিনশট পোস্ট করতে পারিনি যা দেখায় যে ডিরেক্টরিগুলি ফাইল হিসাবে প্রদর্শিত হয়।

যদি আমি এক্সপ্লোরারটিতে পুরো পথটি টাইপ করি তবে ডিরেক্টরি হিসাবে তালিকাভুক্তি ফাইল হিসাবে প্রদর্শিত কোনও সাব-ডাইরেক্টরি বাদে চমত্কারভাবে কাজ করে।

এই সমস্যাটির জন্য যে কোনও আক্রমণকারী ভেক্টর প্রশংসিত হবে।

আমি যদি অপর্যাপ্ত বিবরণ সরবরাহ করে থাকেন তবে দয়া করে আমাকে জানান।

সম্পাদনা: যখন ওএস এক্স থেকে অ্যাক্সেস করা হয় তখন একই ভাগ ডিরেক্টরিকে ডিরেক্টরি হিসাবে তালিকাভুক্ত করতে পুরোপুরি কাজ করে। শুভেচ্ছান্তে!

উত্তর:


7

শেষ পর্যন্ত সমস্যার সমাধান করেছি।

আমি সময় পেলে এই উত্তরটি আরও লেখার চেষ্টা করব।

ইস্যুটি সিআইএফএস ফাইল সিস্টেম পুনরায় ভাগ করার সাথে সংযুক্ত এবং তারপরে এটি একটি উইন্ডোজ 7 কম্পিউটার থেকে অ্যাক্সেস করার জন্য সংযুক্ত।

সাম্বা বাগটি এখানে রয়েছে: https://bugzilla.samba.org/show_bug.cgi?id=9346

সিআইফস-এর ইনোডে যেভাবে তথ্য সেট করা হয় তার থেকে স্পষ্টতই এটি ঘটে।

বাগটি এখানে দেখুন: https://bugzilla.kernel.org/show_bug.cgi?id=52791

সুতরাং সাম্বা যে পদ্ধতিটি নির্ধারণ করে (তার উইন্ডোজ ক্লায়েন্টদের জন্য) এটি বৈশিষ্ট্যের জন্য পরীক্ষা না করে হার্ডলিঙ্কগুলির সংখ্যা গণনা করে। যেমন সিআইএফ (কোনও অস্পষ্ট কারণে) সর্বদা এটি শূন্যে সেট করে, যেখানে একটি ডিরেক্টরিতে সর্বদা কমপক্ষে দুটি থাকে, ডিরেক্টরিটি উইন্ডোজ ক্লায়েন্টদের জন্য একটি ফাইল হিসাবে উপস্থিত হবে।

সুতরাং এটি "ঠিক" করতে আমি আমার বর্তমান কার্নেল-শিরোনাম এবং লিনাক্স উত্স কোডটি ইনস্টল করেছি:

sudo apt-get install linux-headers-$(uname -r) linux-source

আমি তখন সেখানে গিয়ে /usr/src/linux-source-3.5.0সংরক্ষণাগারটি বের করেছিলাম ।

ফোল্ডারটি সন্ধান করা /usr/src/linux-source-3.5.0/linux-source-3.5.0/fs/cifs আমি ফাইলে নিম্নলিখিত inode.cবিষয়গুলি পরিবর্তন করেছি (135 লাইন):

set_nlink(inode, fattr->cf_nlink);

প্রতি:

if(fattr->cf_cifsattrs & ATTR_DIRECTORY)
          set_nlink(inode, 2);
        else
          set_nlink(inode, fattr->cf_nlink);

আমি তখন সংকলনটি সহজ করার জন্য একটি মেকফিল তৈরি করেছি (এবং বিরক্তিকর ইনসোড ত্রুটিগুলি এড়ানোর জন্য) Makefile2:

obm-m := cifs.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

এটি আমাদের করতে দেয় (একই ফোল্ডারে): sudo make -f Makefile2

এটি আমাদের নামক একটি ফাইল দেয় cifs.ko

সুতরাং এখন আমরা সাম্বাকে থামাতে পারি, আমাদের যে কোনও শেয়ার আনমাউন্ট করতে পারি, বর্তমান সিআইএফগুলি সরিয়ে ফেলতে পারি এবং আমাদের পুনরায় সংযুক্ত একটি ইনস্টল করতে পারি।

sudo service smbd stop
sudo umount /path/to/share
sudo rmmod cifs
sudo insmod cifs.ko
sudo mount -a
sudo service smbd start

আমার জন্য এটি কৌশলটি করেছে, আপনি যদি বাক্সটি পুনরায় চালু করেন তবে এই পরিবর্তনটি স্থির থাকবে না। আমি এই পোস্টে যুক্ত করব যখন আমি এটি করার জন্য একটি ভাল উপায় আবিষ্কার করেছি।

আপনি আমার উপায় প্রয়োজন কোন প্রশ্ন বা স্পষ্টতা নিক্ষেপ করুন, আমি সম্ভবত এটি থেকে শিখতে হবে :)

ফ্রেইনোডে # সাম্বায় কুকসকেও ধন্যবাদ, আমি সেখানে প্রচুর জিনিস শিখেছি, যদিও আমি অন্য দিকে চলে এসেছি।


3
বাহ, এটি এমন এক বাগ যা আমাকে অবাক করে তোলে "তারা লেখার সময় তারা কী চিন্তা করছিল?" আপনি যদি কোনও বৈশিষ্ট্য সনাক্ত করতে চান, গুণকে জিজ্ঞাসা করুন, আলগা সংযোগের দিকে তাকান না। এটি কোনও পদ্ধতি লেখার মতো: বুল ইসপ্রেট () {রিটার্ন পেগলিজ == 1;}} আপনি বেশিরভাগ সময় ঠিকই থাকবেন তবে কিছু উল্লেখযোগ্য সময় আছে যখন আপনি যাবেন না।
কেনেট বেলেনকি

1
ধন্যবাদ, প্যাচটি আমার জন্য চলমান কাজ করেছে Ubuntu 12.04 kernel 3.11এবং samba 3.6.3। আমি বেশ কয়েকটি সমস্যা পেয়েছি: 1) apt-get source linux-image-$(uname -r)সঠিক উত্স পেতে আমাকে দৌড়াতে হয়েছিল। 2) আমি কপি করতে সফলভাবে চালাতে পারবেন হওয়ার উদ্দেশ্যে fs/cifsঅধীনে ডি হেডার একই subpath সঙ্গে ফোল্ডারে এবং হেডার রুট থেকে কম্পাইল ফোল্ডারের সূত্র make M=fs/cifs, যেমন এখানে ব্যাখ্যা করেছিলেন: http://www.debian-administration.org/article/640 / পুনর্নির্মাণ_এ_সিংল_কারেন_মডিউল
ড্রডসৌ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.