আপনার ব্যবহার করা উচিত chroot
। chroot
কমান্ড রুট ডিরেক্টরিটি যে সব শিশু প্রসেস দেখতে পরিবর্তন। এটি কীভাবে কাজ করে তা প্রদর্শনের জন্য আমি একটি উদাহরণ দেব।
ঘটনাস্থলে এটি লেখা হয়েছিল; আমি এখনই কোনও ইউনিক্স মেশিনের সামনে নেই। এই উদাহরণে, একটি ডিরেক্টরি নামক dir
তিনটি ফাইল: a
, b
, c
, এবং ls
। প্রথম তিনটি নিয়মিত ফাইল। ls
আসল ls
বাইনারিটির জন্য একটি হার্ডলিঙ্ক যাতে আমরা ক্রট অবস্থায় থাকাকালীন ফাইলগুলি তালিকাবদ্ধ করতে পারি।
আমি যাচ্ছি chroot
মধ্যে dir
। (মনে রাখবেন যে আমি সম্ভবত রুট ডিরেক্টরিতে কিছু ডিরেক্টরি ভুলে যাচ্ছি))
শেল আউটপুট আকারে এখানে সেটআপ রয়েছে:
$ pwd
/home/alex/test
$ l
dir
$ ls dir
a b c ls
$ ./ls dir # does the same thing
a b c ls
$ ls /
bin boot dev etc home mnt media proc sbin sys usr var
এখন আমি হবে chroot
মধ্যে dir
। /bin/bash
যুক্তি তা চয়ন কি প্রক্রিয়া নতুন রুট ডিরেক্টরিটি দিয়ে চালানো হবে। এটি ডিফল্ট /bin/sh
।
$ chroot /bin/bash dir
$ # this prompt is now from a subprocess running in the new root directory
$ PATH=/ ls
a b c ls
$ pwd
/
এখন আমরা এর থেকে প্রস্থান করব chroot
:
$ exit
$ # this prompt is now from the original bash process, from before the chroot
$ pwd
/home/alex/test
আমি আশা করি এটি chroot
কমান্ডটি কীভাবে কাজ করে তা চিত্রিত করে। মূলত আপনার সমস্যাটি সমাধান করার জন্য আপনাকে যা করতে হবে তা হ'ল chroot
প্রতিবার ব্যবহারকারী হিসাবে লগ ইন করার সময় একটি কমান্ড চালানো Perhaps সম্ভবত এটি একটি স্টার্টআপ স্ক্রিপ্টে রাখবে?
কোনও ফাইলের একটি হার্ডলিঙ্ক একটি এর অভ্যন্তরে কাজ করতে থাকবে chroot
, এমনকি যদি সেই ফাইলটি অন্য উপায়ে অ্যাক্সেস করা না যায় (এটি কাজ করে কারণ হার্ডলিঙ্কগুলি ইনোডগুলিতে নির্দেশ করে, পথ নয়)। সুতরাং, ব্যবহারকারীর যেমন mysql
কমান্ডের অ্যাক্সেসের অনুমতি দেওয়ার জন্য , আপনি কার্যকর করবেন:
ln /usr/bin/mysql /path/to/chroot/target