একটি সিমলিংক তৈরি হওয়ার পরে আপনি কী সেটিকে নির্দেশ করতে পারেন তা পরিবর্তন করতে পারেন?


122

পুরানোটিকে লিঙ্কযুক্ত করে এবং একটি নতুন তৈরি করা ব্যতীত কোনও অপারেটিং সিস্টেম কোনও প্রতীকী লিঙ্ক (সিমলিংক) দ্বারা উল্লেখ করা পথের নামটি পরিবর্তনের জন্য কোনও সিস্টেম (কল কল - কমান্ড লাইন প্রোগ্রাম নয়) সরবরাহ করে?

পসিক্স মানটি করে না। সোলারিস 10 না। MacOS X 10.5 (চিতাবাঘ) দেয় না। (আমি এআইএক্স বা এইচপি-ইউএক্স উভয়ই সহ্য করতে পারি না। লিনাক্স সিস্টেম কলগুলির এই তালিকাটি বিবেচনা করে, লিনাক্সেরও তেমন সিস্টেম কল নেই।)

কিছু আছে কি?

(আমি প্রত্যাশা করছি যে উত্তরটি "না"।)


যেহেতু একটি নেতিবাচক প্রমাণ করা শক্ত, তাই আসুন প্রশ্নটি পুনর্গঠিত করুন।

আপনি যদি জানেন যে ইতিমধ্যে তালিকাভুক্ত কিছু (ইউনিক্সের মতো) অপারেটিং সিস্টেমে readlink()পুরানো সিমলিংকটি সরিয়ে না দিয়ে এবং একটি নতুন তৈরি না করে একটি সিমিলিংকের (যে স্ট্রিংটি ফিরে এসেছে ) পুনরায় লেখার জন্য কোনও সিস্টেম কল নেই , দয়া করে এটি যুক্ত করুন - বা সেগুলি - একটি উত্তরে।


কেবল সংযোগ দিয়ে কী ভুল? lnপুরানো লিঙ্কটি ওভাররাইট করে কেবল কমান্ডটি (বা এপিআই সমীকরণ) জারি করবেন না কেন ? আপনার কি সমস্যা হচ্ছে?
এস.লোট

9
মজার - আমি জিজ্ঞাসা করছি যে কোনও প্রোগ্রামিংয়ের কাজ করার জন্য কোনও সিস্টেম কল রয়েছে এবং প্রশ্নটি 'অন্য সাইটে সম্পর্কিত' হিসাবে চিহ্নিত হচ্ছে।
জোনাথন লেফলার

3
মজাদার- এটি কোনও স্পষ্ট নয় যে আপনি একটি সিস্টেম কল খুঁজছিলেন এবং আপনি এই বিবরণটি যুক্ত করার জন্য প্রশ্নটি সম্পাদনা করেছেন। সুতরাং আপনি কীভাবে লোকেদের কিছু লেখার আগে কিছু কেটে নেবেন এমনটা আপনি আশা করতে পারেন?
পাস্কেল থিভেন্ট

2
@ এস.লোট: আমি সুরক্ষা এবং প্রতীকী লিঙ্কগুলিতে একটি কাগজ লিখছি। এক পর্যায়ে আমি দৃ "় প্রতিবেদনে "প্রকৃত মালিক, গোষ্ঠী, সিমলিংকের উপর অনুমতি নিজেই অপ্রতিরোধ্য" এবং যুক্তিটি হ'ল সিমিলিংকের মালিক কেবল এটিকে সরাতে পারবেন এবং মান পরিবর্তন করতে পারবেন না। আমি ডাবল পরীক্ষা করে দেখছি যে 'সিমলিংকের মানটি পুনর্লিখন' এর প্রভাব অর্জনের সিমলিংকটি সরিয়ে ছাড়া আর কোনও উপায় নেই। আমি কাঁচা ডিস্কটিতে সরাসরি অ্যাক্সেস উপেক্ষা করছি এবং এফএস হ্যাক করছি - এটির জন্য মূল অধিকার প্রয়োজন এবং আমার উদ্বেগগুলি মূল-নন ব্যবহারকারীদের সাথে রয়েছে, রুট কী করতে পারে তা নয়।
জোনাথন লেফলার

4
@ প্যাসাল: আমি দুঃখিত - আমি বুঝতে পারি না যে আমি সিস্টেম কলগুলির বিষয়ে কথা বলছিলাম যতক্ষণ না লোকেরা আমার উদ্দেশ্যগুলি (যা আমি বলেছিলাম তা থেকে স্পষ্টতই পৃথক ছিল) থেকে কোনও স্পর্শকাতর যাত্রা শুরু করে না। আমি বিভ্রান্ত হয়েছে বলে দুঃখিত; এটা অনিচ্ছাকৃত ছিল।
জোনাথন লেফলার

উত্তর:


106

আফাইক, না, আপনি পারবেন না। আপনাকে এটিকে সরিয়ে পুনরায় তৈরি করতে হবে। প্রকৃতপক্ষে, আপনি একটি সিমিলিংকে ওভাররাইট করতে পারেন এবং এভাবে নির্দেশিত পথের নামটি আপডেট করতে পারেন:

$ ln -s .bashrc test
$ ls -al test
lrwxrwxrwx 1 pascal pascal 7 2009-09-23 17:12 test -> .bashrc
$ ln -s .profile test
ln: creating symbolic link `test': File exists
$ ln -s -f .profile test
$ ls -al test
lrwxrwxrwx 1 pascal pascal 8 2009-09-23 17:12 test -> .profile

সম্পাদনা : ওপি যেমন একটি মন্তব্যে উল্লেখ করেছে, --forceবিকল্পটি ব্যবহার করে আগে lnএকটি সিস্টেম কল করা হবে । নীচে, আমার লিনাক্স বাক্সের আউটপুট এটি প্রমাণ করছে:unlink()symlink()strace

$ strace -o /tmp/output.txt ln -s -f .bash_aliases test
$ grep -C3 ^unlink /tmp/output.txt 
lstat64("test", {st_mode=S_IFLNK|0777, st_size=7, ...}) = 0
stat64(".bash_aliases", {st_mode=S_IFREG|0644, st_size=2043, ...}) = 0
symlink(".bash_aliases", "test")        = -1 EEXIST (File exists)
unlink("test")                          = 0
symlink(".bash_aliases", "test")        = 0
close(0)                                = 0
close(1)                                = 0

সুতরাং আমি অনুমান করি চূড়ান্ত উত্তরটি "না"।

সম্পাদনা : নিম্নলিখিতটি আর্টিক বেনডিকেনের উত্তর থেকে অনিক্স.সটাকেক্সচেঞ্জ.কম, সার্কা 2016- এ অনুলিপি করা হয়েছে ।

এই করতে প্রকৃতপক্ষে সঙ্গে atomically সম্পন্ন করা rename(2), প্রথম একটি অস্থায়ী নামে নতুন সিমবলিক লিঙ্ক তৈরি এবং তারপর পরিচ্ছন্নভাবে এক বারেই পুরাতন সিমবলিক লিঙ্ক মুছে যাওয়ার দ্বারা। হিসাবে man পৃষ্ঠা পদ বলে:

নতুনপথ যদি প্রতীকী লিঙ্ককে বোঝায় তবে লিঙ্কটি ওভাররাইট করা হবে।

শেলটিতে আপনি নীচের সাথে এটি করবেন mv -T:

$ mkdir a b
$ ln -s a z
$ ln -s b z.new
$ mv -T z.new z

straceএটি যে সত্যই rename(2)হুডের নীচে ব্যবহার করছে তা নিশ্চিত করার জন্য আপনি শেষ কমান্ডটি করতে পারেন :

$ strace mv -T z.new z
lstat64("z.new", {st_mode=S_IFLNK|0777, st_size=1, ...}) = 0
lstat64("z", {st_mode=S_IFLNK|0777, st_size=1, ...}) = 0
rename("z.new", "z")                    = 0

নোট করুন যে উপরেরটিতে mv -Tএবং উভয়ই straceলিনাক্স-নির্দিষ্ট।

ফ্রিবিএসডি-তে, mv -hপর্যায়ক্রমে ব্যবহার করুন ।

সম্পাদকের দ্রষ্টব্য: ক্যাপিস্ট্রানো এইভাবে বছরের পর বছর ধরে এটি করেছে, এখন থেকে ~ 2.15। দেখুন এই টান অনুরোধ


2
'-F' বিকল্পটি কী 'লিএন'কে আনলিংক () এর পরে সিমলিংক () সিস্টেম কল করতে বাধ্য করে না?
জোনাথন লেফলার

1
এটা করে. তবে প্রশ্নটি সম্ভবত "একটি পদক্ষেপে এটি কীভাবে করব" হিসাবে অনুধাবন করা যেতে পারে এবং তারপরে এটি "পদক্ষেপ" - কমান্ড লাইনের সংজ্ঞায় উঠে যায়? প্রাপ্ত syscall?
মাইকেল ক্রেলিন - হ্যাকার

1
আমি সবেমাত্র লক্ষ্য করেছি যে আপনি আপনার প্রশ্নের সাথে
স্কেল

2
@ পাসল: তা করে। সোলারিসে, 'ট্রাস এলএন-এসপিএক্স' এবং 'ট্রাস এলএন-এসপিপিএক্স' থেকে আউটপুট দ্বিতীয় ক্ষেত্রে সিমলিংক () কল করার আগে একটি লিঙ্কমুক্ত () কল দেখায় (এবং প্রথমটিতে একটি ব্যর্থ সিমলিংক () কল)। আমি আশা করব যে ইউনিক্সের সমস্ত ভেরিয়েন্ট না হলে বেশিরভাগ ক্ষেত্রে প্রযোজ্য হবে।
জোনাথন লেফলার

12
+1 থেকে @ তায়ে মন্তব্য - কোনও সিমলিংকের সাথে যদি ডিলিটরিওয়ের নির্দেশ করে (নির্দেশ করে), আপনাকে এই কৌশলটি কাজ করে কিনা তা নিশ্চিত করতে আপনাকে "-n" নির্দিষ্ট করতে হবে।
ওয়ালি

161

হ্যা, তুমি পারো!

$ ln -sfn source_file_or_directory_name softlink_name

9
তোমার উত্তরের জন্য ধন্যবাদ. -fবিকল্প উপায়ে নতুন তৈরি করার আগে 'বিদ্যমান গন্তব্যস্থল মুছে ফেলার'। সুতরাং, এই আদেশটি ফলাফল অর্জন করে তবে unlink(2)অনুসরণ করে symlink(2)। মূল প্রশ্নটি এটাই ছিল না। এছাড়াও মনে রাখবেন যে গৃহীত উত্তর এবং পরবর্তী সর্বাধিক ভোট দেওয়া উত্তর উভয়ই ln -sfকাজটি করতে ব্যবহার করে তবে straceআউটপুট হিসাবে দেখা যায় যে এটি ঘটে unlink()এবং symlink()কারণ কোনও সিমলিংক সংশোধন করার জন্য কোনও সিস্টেম কল নেই।
জোনাথন লেফলার

17
মূল লিঙ্কটি যখন কোনও ফাইলের পরিবর্তে কোনও ডিরেক্টরিতে যায় তখন -n প্রয়োজনীয় মনে হয়।

11
'এন' সুইচটি গুরুত্বপূর্ণ। আমি এই সমস্যার সাথে লড়াই করেছিলাম যে সিমলিংকটি আপডেট হয়নি তবে কমান্ডটি বিদ্যমান লিঙ্কটির ভিতরে আরও একটি লিঙ্ক তৈরি করেছে কারণ 'নো ডিফেন্সিং' বিকল্পটি সেট করা হয়নি।
জোনাথন গ্রুবার

14

পুরানো সিমিলিংক স্পষ্টভাবে লিঙ্কমুক্ত করা প্রয়োজন হয় না is তুমি এটি করতে পারো:

ln -s newtarget temp
mv temp mylink

(বা সমতুল্য সিমলিংক এবং কলগুলির নাম পরিবর্তন করুন)। এটি সুস্পষ্টভাবে আনলিংকের চেয়ে ভাল কারণ নামটি পারমাণবিক, তাই আপনারা নিশ্চিত হতে পারেন যে লিঙ্কটি সর্বদা পুরানো বা নতুন লক্ষ্যকে নির্দেশ করবে। তবে এটি আসল ইনোড পুনরায় ব্যবহার করবে না।

কিছু ফাইল সিস্টেমে, সিমলিংকের লক্ষ্যটি যদি সংক্ষিপ্ত পরিমাণে হয় তবে এটি নিজেই ইনোডে (ব্লক তালিকার জায়গায়) সংরক্ষণ করা হয়; এটি তৈরি হওয়ার সময় এটি নির্ধারিত হয়।

প্রকৃত মালিক এবং গোষ্ঠী অপ্রতিরোধ্য এই দাবির বিষয়ে, লিনাক্সের সিমলিংক ()) বলেছেন যে এটির তাত্পর্যপূর্ণ একটি কেস রয়েছে:

বিদ্যমান প্রতীকী লিঙ্কের মালিক এবং গোষ্ঠী lchown (2) ব্যবহার করে পরিবর্তন করা যেতে পারে। প্রতীকী লিঙ্কটির মালিকানা কেবল তখনই যখন লিঙ্কটি মুছে ফেলা হয় বা কোনও নাম পরিবর্তিত করা হয় এমন ডিরেক্টরিতে পুনরায় নামকরণ করা হয় যেখানে স্টিকি বিট সেট থাকে (স্ট্যাট (2) দেখুন)।

প্রতীকী লিঙ্কের শেষ অ্যাক্সেস এবং শেষ পরিবর্তন টাইমস্ট্যাম্পগুলি utimensat (2) বা লুটাইমস (3) ব্যবহার করে পরিবর্তন করা যেতে পারে।

লিনাক্সে, প্রতীকী লিঙ্কের অনুমতিগুলি কোনও ক্রিয়াকলাপে ব্যবহৃত হয় না; অনুমতিগুলি সর্বদা 0777 (সমস্ত ব্যবহারকারী বিভাগের জন্য পড়ুন, লিখুন এবং সম্পাদন করুন), এবং পরিবর্তন করা যায় না।


@ চিহ্ন4o: দ্য গুড - একটি স্টিকি-এটি ডিরেক্টরিতে লিচাউন () এবং মালিকানা সম্পর্কিত তথ্য উল্লেখযোগ্য - ধন্যবাদ। আমি লিচাউন সম্পর্কে সচেতন ছিলাম () এবং এটি আমার থিসিসের উপাদান ছিল না। আমি স্টিকি বিট ডিরেক্টরি সম্পর্কে সচেতন ছিলাম; আমি মনে করি মালিকানাটি নিয়মের প্রায় মানক পরিণতি - তফাত এবং সম্ভবত এটি কেন ডাকা হয় তা হ'ল সাধারণত যে কোনও ফাইল আপনি এটি লিখতে পারলে মুছে ফেলতে পারেন, এবং নামমাত্র হিসাবে যে কেউ সিমলিংকে লিখতে পারেন কারণ 777 অনুমতিগুলির মধ্যে, তবে এই ক্ষেত্রে, বিধিগুলি কিছুটা আলাদা।
জোনাথন লেফলার

1
@ চিহ্ন4o: দ্য সো নোট - দেখানো কমান্ড সিক্যুয়েন্স আপনার মতামতটি যা করে তা করে না (কমপক্ষে দৃশ্যে set -x -e; mkdir junk; ( cd junk; mkdir olddir newdir; ln -s olddir mylink; ls -ilR; ln -s newdir temp; ls -ilR; mv temp mylink; ls -ilR; ); rm -fr junk:)। আপনি যদি ডিরেক্টরিগুলির পরিবর্তে ফাইলগুলি ওল্ডফাইলে এবং নতুন ফাইল তৈরি করেন এবং সমমানের স্ক্রিপ্টটি চালান (মূলত ওল্ড্ডিরকে ওল্ডফাইলে পরিবর্তিত করুন, নতুন ফাইলে নতুনদ্বীপ), তবে আপনি যে প্রভাবটি প্রত্যাশা করেছিলেন তা পাবেন। মাত্র একটি অতিরিক্ত জটিলতা! প্রতিক্রিয়ার জন্য আপনাকে ধন্যবাদ.
জোনাথন লেফলার

2

উপরের সঠিক উত্তরের জন্য কেবল একটি সতর্কতা:

-F / --ফোর্ড পদ্ধতিটি ব্যবহার করে যদি আপনি উত্স এবং লক্ষ্যগুলি মিশ্রিত করেন তবে ফাইলটি হারাতে একটি ঝুঁকি সরবরাহ করে:

mbucher@server2:~/test$ ls -la
total 11448
drwxr-xr-x  2 mbucher www-data    4096 May 25 15:27 .
drwxr-xr-x 18 mbucher www-data    4096 May 25 15:13 ..
-rw-r--r--  1 mbucher www-data 4109466 May 25 15:26 data.tar.gz
-rw-r--r--  1 mbucher www-data 7582480 May 25 15:27 otherdata.tar.gz
lrwxrwxrwx  1 mbucher www-data      11 May 25 15:26 thesymlink -> data.tar.gz
mbucher@server2:~/test$ 
mbucher@server2:~/test$ ln -s -f thesymlink otherdata.tar.gz 
mbucher@server2:~/test$ 
mbucher@server2:~/test$ ls -la
total 4028
drwxr-xr-x  2 mbucher www-data    4096 May 25 15:28 .
drwxr-xr-x 18 mbucher www-data    4096 May 25 15:13 ..
-rw-r--r--  1 mbucher www-data 4109466 May 25 15:26 data.tar.gz
lrwxrwxrwx  1 mbucher www-data      10 May 25 15:28 otherdata.tar.gz -> thesymlink
lrwxrwxrwx  1 mbucher www-data      11 May 25 15:26 thesymlink -> data.tar.gz

অবশ্যই এটি উদ্দেশ্য, কিন্তু সাধারণত ভুল ঘটে। সুতরাং, সিমিলিংক মোছা এবং পুনর্নির্মাণ করা আরও কিছুটা কাজ তবে কিছুটা সেভার:

mbucher@server2:~/test$ rm thesymlink && ln -s thesymlink otherdata.tar.gz 
ln: creating symbolic link `otherdata.tar.gz': File exists

যা অন্তত আমার ফাইল রাখে।


একটি -fবা --forceবিকল্প ব্যবহার করা সর্বদা কিছুটা বিপজ্জনক; এটি অনুমান করে যে ব্যবহারকারীরা জানেন তারা কী সম্পর্কে। যদি আপনি এটি অভ্যাসগতভাবে ব্যবহার করেন তবে এটি দ্বিগুণ মারাত্মক ( rm -fr …প্রতিটি সময় বিপজ্জনক)।
জোনাথন লেফলার

1

এটি লিঙ্কযুক্ত এবং নতুন তৈরি করা শেষ পর্যন্ত একই জিনিসটি করবে না?


2
প্রথমে লিঙ্কমুক্ত কেন? কেন এটি সরল নয়?
এস.লট

5
নেট ফলাফল প্রায় একই - তবে মালিক ও গোষ্ঠী এবং সর্বশেষ পরিবর্তিত সময় (এবং সম্ভবত ইনোড নম্বর) সবই আলাদা হবে।
জোনাথন লেফলার

2
@ এস.লোট: 'ওভাররাইট' কোন সিস্টেম কল থেকে? পসিক্সে, এমন কোনও কল নেই। সোলারিস এবং ম্যাকোস এক্স-তে কোনও কল নেই। লিনাক্স, এআইএক্স, এইচপি-ইউএক্স, ইউনিক্সের মতো দেখতে অন্য কিছু করার জন্য কি কোনও কল আছে? উইন্ডোজের সত্যিকার অর্থে একইভাবে সিআইলিংক নেই, এএএএএফসিটি, সুতরাং এটি আমার বিশ্লেষণের পক্ষে সমালোচনা নয় - তবে উইন্ডোজ এপিআই সমতুল্য সম্পর্কে তথ্য কার্যকর হবে।
জোনাথন লেফলার

@ জোনাথন লেফলার: উম্মম .... ln --forceকমান্ডটি একটি বিদ্যমান লিঙ্কটি একেবারে ওভাররাইট করবে।
এস.লোট

বন্ধুরা, আমি মনে করি আপনি ক্রস উদ্দেশ্য নিয়ে কথা বলছেন। এস.লট একটি এক্সিকিউটেবল নিয়ে আলোচনা করছেন ln (1), যখন ম্যাট বি। ওভাররাইটিং সমর্থন symlink (2)করে না এমন বিষয়টি নিয়ে আলোচনা করা হচ্ছে । আপনি উভয়ই ঠিক বলেছেন, এবং আমি পরামর্শ দেব যে বাস্তবায়নের দিকে ln (1)তাকালেই লিঙ্কমুক্ত-পুনর্লিখন পদ্ধতিটি সম্পাদনের সর্বাধিক মূর্তিমান পদ্ধতি।
dmckee --- প্রাক্তন-মডারেটর বিড়ালছানা

0

এটি কেবল যদি সহায়তা করে তবে: মধ্যরাতের কমান্ডার (এমসি) সহ একটি সিমলিংক সম্পাদনা করার উপায় রয়েছে। মেনু কমান্ডটি হ'ল (আমার এমসি ইন্টারফেসে ফরাসি ভাষায়):

Fichier / Éditer le lien symbolique

যা অনুবাদ করা যেতে পারে:

File / Edit symbolic link

শর্টকাটটি হল Cx Cs C

সম্ভবত এটি অভ্যন্তরীণভাবে ln --forceকমান্ডটি ব্যবহার করে , আমি জানি না।

এখন, আমি একবারে পুরো প্রচুর সিমলিংকগুলি সম্পাদনা করার উপায় খুঁজতে চেষ্টা করছি (আমি এখানে এসে পৌঁছেছি)।


1
পর্দার আড়ালে এমসি কী করে তা আপনি যাচাই করেছেন? আমি মতবিরোধগুলি করব যা বাস্তবে এটি একটি unlink()অনুসরণ করে symlink(), কেবল কারণ এটি ইউনিক্সের মতো সিস্টেমগুলি সরবরাহ করে।
জোনাথন লেফলার

না, আমি চেক করিনি। এবং হ্যাঁ, এটি আপনার পক্ষে যেমনটি বলেছে ঠিক তেমন সম্ভাবনা রয়েছে I আমি যে একটি পাঠ্যবাক্স সম্পাদনা করেছি তা এই অনুভূতিটি দেয় যে আমি আসলেই সিমলিংক লক্ষ্যটি সম্পাদনা করছি তবে আমি সম্ভবত বোকা হয়েছি ...
পিয়ের

0

প্রযুক্তিগতভাবে, বিদ্যমান প্রতীকী লিঙ্কটি সম্পাদনা করার জন্য কোনও অন্তর্নির্মিত কমান্ড নেই। এটি কয়েকটি সংক্ষিপ্ত কমান্ডের সাহায্যে সহজেই অর্জন করা যায়।

একটি বিদ্যমান প্রতীকী লিঙ্কটি আপডেট করতে আমি এখানে লিখেছিলাম একটি ছোট বাশ / zsh ফাংশন :

# -----------------------------------------
# Edit an existing symbolic link
#
# @1 = Name of symbolic link to edit
# @2 = Full destination path to update existing symlink with 
# -----------------------------------------
function edit-symlink () {
    if [ -z "$1" ]; then
        echo "Name of symbolic link you would like to edit:"
        read LINK
    else
        LINK="$1"
    fi
    LINKTMP="$LINK-tmp"
    if [ -z "$2" ]; then
        echo "Full destination path to update existing symlink with:"
        read DEST
    else
        DEST="$2"
    fi
    ln -s $DEST $LINKTMP
    rm $LINK
    mv $LINKTMP $LINK
    printf "Updated $LINK to point to new destination -> $DEST"
}

2
প্রচেষ্টার জন্য আপনাকে ধন্যবাদ। এটি সি ভাষা সিস্টেম কল হওয়ার জন্য আমার প্রয়োজনীয়তা পূরণ করে না। আপনার কাছে লিঙ্কটি ধরে রাখার ডিরেক্টরিটিতে যতক্ষণ লেখার অনুমতি রয়েছে ততক্ষণ কোনও লিঙ্ক পরিবর্তন করার অনেক উপায় রয়েছে (যার প্রয়োজন এটি)। আমি এখনই জানি না, এমন কি কোনও উপায় নেই যা না করে unlink()এবং symlink()নতুন মান সহ একটি সিমলিংকের মান পরিবর্তন করা , যা আপনার কোডের সাথে পর্দার আড়ালে চলে। ব্যক্তিগতভাবে, আমি অনুরোধটি সঠিক না হলে ফাংশনটি ঠিক দুটি (বা সম্ভবত দু'জনের একাধিক) যুক্তি এবং জামিনে জোর দিয়েছি। যদিও এটি একটি বিশেষ দৃষ্টিকোণ।
জোনাথন লেফলার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.