সমস্ত আদেশকে একটি উপাধিকার হিসাবে সংজ্ঞায়িত করা থেকে বিরত করার কোনও উপায় আছে কি?
উদাহরণস্বরূপ কোনও ব্যবহারকারীর rmএকটি উপনামের নাম হিসাবে কোনও অন্য কমান্ড (উবুন্টু ডিফল্ট কমান্ড) সংজ্ঞায়িত করতে বা সক্ষম হতে হবে না ।
~/.bashrc।
সমস্ত আদেশকে একটি উপাধিকার হিসাবে সংজ্ঞায়িত করা থেকে বিরত করার কোনও উপায় আছে কি?
উদাহরণস্বরূপ কোনও ব্যবহারকারীর rmএকটি উপনামের নাম হিসাবে কোনও অন্য কমান্ড (উবুন্টু ডিফল্ট কমান্ড) সংজ্ঞায়িত করতে বা সক্ষম হতে হবে না ।
~/.bashrc।
উত্তর:
কোনও ব্যবহারকারীর পক্ষে কোনও পছন্দ নেই যা তারা পছন্দ করেন না কেন এলিয়াসগুলি সংজ্ঞায়িত করে। বিবেচনা:
/etc/bash.bashrc। তারা যেখানেই বেছে নিয়েছে এটিকে সক্ষম করে।/etc/bash.bashrc, এবং সমস্ত ~/.bashrcএবং ~/.bash_aliasesএকটি স্ক্রিপ্ট মাধ্যমে। তারা তাদের ডাকনামটি অন্য একটি ফাইলে রাখে এবং এটি উত্স করে।PROMPT_COMMANDযা নির্দিষ্ট উপাত্ত অক্ষম করে। তারা নতুন সংজ্ঞা বা অপরিবর্তিত PROMPT_COMMAND।DEBUGএবং অপরিবর্তিত করেন। তারা ফাঁদটি সরিয়ে দেয়।unset, builtinএবং enable; করতে aliasএকটি ফাংশন ; declare -rf aliasব্যবহারকারীদের ফাংশনটি পরিবর্তন করা থেকে বিরত রাখতে; এবং ফাংশন রফতানি। তারা /bin/bashচালিয়ে যায় --rcfileএবং --init-fileএকটি নতুন শেল শুরু করতে, যেখানে বলা হয়েছে বিল্টইনগুলি এখন সক্ষম রয়েছে।সংকলনের সময় আপনি এলিয়াসগুলি অক্ষম করতে পারতেন, তারপরে বাশকে আপ টু ডেট রাখুন এবং পরবর্তী শেলশকের দ্বারা আপনি প্রভাবিত না হয়েছেন তা নিশ্চিত করা আপনার পক্ষে হবে। অবশ্যই, ব্যবহারকারীরা তাদের নিজস্ব ব্যাশ তৈরি করতে পারে।
unalias alias।
\unalias unalias।
কোনও ব্যবহারকারীকে এলিয়াস তৈরি করা থেকে রোধ করার একমাত্র উপায় হ'ল তাদের শেল সরবরাহ করা যা আলিয়াসিং সমর্থন করে না। এটি সাধারণত একটি এক্স / ওয়াই সমস্যা, যেখানে এক্স আসলেই একটি হুমকি মডেল যা কোনও ব্যবহারকারীকে ভাগ করে নেওয়া সিস্টেমে শেল দেওয়ার পরে পোস্ট-ফ্যাক্টোটি সমস্যা সমাধানের পরিবর্তে উপযুক্ত নিয়ন্ত্রণ বা আর্কিটেকচার দিয়ে সমাধান করা উচিত ।
নীচে, আমি একটি প্রযুক্তিগতভাবে সঠিক উত্তর সরবরাহ করি, পাশাপাশি এটি কী কী সমস্যাগুলি সমাধান করবে এবং এর সমাধান করবে না সে সম্পর্কে কিছু গাইডেন্স। আমি বিকল্প নিয়ন্ত্রণগুলি সম্পর্কে কিছু অতিরিক্ত নির্দেশিকাও সরবরাহ করি।
আপনি বাশের ব্যবহার করতে পারেন ব্যবহারকারীর লগইন শেল হিসাবে rbash বরাদ্দ করে আপনি বাশের সীমাবদ্ধ শেলটি । উদাহরণ স্বরূপ:
foo:x:2001:2001:restricted user:/home/foo:/bin/rbash
তারপরে আপনাকে অবশ্যই উপনামটি অক্ষম করতে হবে অন্যের শেলটি না ভেঙে ব্যবহারকারীর জন্য অন্তর্নির্মিত হবে। উদাহরণ হিসাবে, আপনি /etc/profile.d/rbash.sh এর মতো কোনও ফাইলে নিম্নলিখিতটি যুক্ত করতে পারেন :
# Limit effect to users in a specific UID range.
if ((UID >= 2000)) && ((UID < 3000)); then
# Check shell options; disable alias builtins when shell is restricted.
if [[ $- =~ r ]]; then
enable -n alias
enable -n unalias
fi
fi
আপনি যদি না ব্যবহারকারীকে ক্রুট কারাগারে রাখেন বা তাদের কোনও সংশোধিত সরবরাহ না করেন PATH সরবরাহ করেছেন যা অন্য শেলগুলিতে অ্যাক্সেস অন্তর্ভুক্ত করে না, bashপ্রম্পটে কেবল টাইপ করা এবং একটি বাধাবিহীন শেল পাওয়া থেকে ব্যবহারকারীকে থামিয়ে দেওয়ার কিছুই নেই ।
এছাড়াও, ডিজাইন করে সীমাবদ্ধ শেল অনেকগুলি সাধারণ ক্রিয়াকলাপ যেমন ডিরেক্টরি পরিবর্তন করে:
$ cd /tmp
rbash: cd: restricted
কিন্তু অন্যান্য স্ক্রিপ্ট বা প্রোগ্রাম বাধা দেয় না পাথ এমনটি থেকে। এর অর্থ আপনাকে ব্যবহারকারীর পরিবেশের যত্ন সহকারে নৈপুণ্য বজায় রাখতে হবে এবং বিশেষত আপনাকে তাদের স্টার্টআপ ফাইলগুলিতে PATH পরিবর্তন করতে সক্ষম হওয়া থেকে বিরত রাখতে হবে , যদিও rbash PATH কেবল পঠনযোগ্য করে তোলে যদিও এটি আরম্ভের পরে তা করে ।
এমনকি আপনি যদি রব্যাশ ব্যবহার করেন তবে আপনাকে বিস্তৃত নিয়ন্ত্রণের অংশ হিসাবে এটি করা দরকার। কিছু উদাহরণ অন্তর্ভুক্ত থাকতে পারে:
আটকান অ প্রযুক্তিগত থেকে ব্যবহারকারীদের ঘটনাক্রমে যেমন ডিফল্ট alias লেখা প্রদানের মাধ্যমে বিপজ্জনক কমান্ড আবাহন rm -i, mv -iএবং cp -iমধ্যে /etc/bash.bashrc ফাইল।
enable -n aliasযদি চান তবে এটির সাথে একত্রিত করতে পারেন।ফাইল এবং ডিরেক্টরিগুলি সুরক্ষিত করার জন্য চিরাচরিত ইউনিক্স অনুমতি বা POSIX ACLs।
লগইনগুলি যা একটি একক অ-ইন্টারেক্টিভ কমান্ড সম্পাদন করে। উদাহরণ স্বরূপ:
foo:x:2001:2001:run foo.sh:/home/foo:/usr/local/bin/foo.shপ্রতি-কী এসএসএইচ বাধ্যতামূলক কমান্ডগুলি ব্যবহার করুন। উদাহরণ স্বরূপ:
# ~foo/.ssh/authorized_keys
command="/usr/local/bin/foo.sh" [remainder of line]শর্তসাপেক্ষ ম্যাচ ব্লক সহ ওপেনএসএসএইচ ফোর্সকম্যান্ড বিকল্পটি ব্যবহার করুন ।
মত বিশেষ সরঞ্জাম ব্যবহার করুন gitolite বা scponly আপনার নির্দিষ্ট ব্যবহারের ক্ষেত্রে জন্য পরিকল্পিত।
ক্রুট জেল ব্যবহার করুন ।
বিভাজনযুক্ত পরিবেশ সরবরাহের জন্য জেন, ওপেনভিজেড, এলএক্সসি, ভিএমওয়্যার, ভার্চুয়ালবক্স, বা অন্যান্য প্রযুক্তিগুলির মতো ভার্চুয়ালাইজেশন ব্যবহার করুন।
একবার আপনি আপনার হুমকির মডেলটি সঠিকভাবে সংজ্ঞা দিয়েছিলেন, আপনি আপনার ব্যবহারের ক্ষেত্রে সবচেয়ে উপযুক্ত নিয়ন্ত্রণগুলি সনাক্ত করতে পারবেন। আপনি কেন এলিয়াসিং প্রতিরোধ করতে চান তার আরও অর্থবহ বোঝা ছাড়াই (যেমন কোন বাস্তব-বিশ্বের সমস্যাটি সমাধান করে?) আপনি সর্বাধিক উপযুক্ত নিয়ন্ত্রণ নির্বাচন করতে পারবেন না।
এটি মুরুর উত্তরগুলি দেখায়, এটি বেশ অর্থহীন প্রচেষ্টা। তবে কয়েকটি বিকল্প রয়েছে তবে সেগুলি নিখুঁত নয়।
bashম্যানুয়াল অনুসারে , ফাংশনগুলি সর্বদা এলিয়াসের চেয়ে বেশি প্রাধান্য পায়, সুতরাং আমরা নিম্নলিখিতটি করতে পারি:
xieerqi@eagle:~$ function alias { echo "Aliases are no-no" ; }
xieerqi@eagle:~$ alias TEST='rm'
Aliases are no-no
আপনি সিস্টেমওয়াইডে ফাংশন সংজ্ঞা স্থাপন করতে পারেন .bashrc, তবে মুড়ু হিসাবে উল্লেখ করা হয়েছে, স্মার্ট ব্যবহারকারী bashrcউদাহরণস্বরূপ একটি পৃথক ফাইলের স্যোর্সিং করে এলিয়াসগুলি পাওয়ার উপায় খুঁজে পাবেন ।
আমি যে ধারণাটি নিয়ে খেলেছি তা enableঅন্তর্নির্মিত।
aliasঅন্তর্নির্মিত একটি শেল এবং bashএতে একটি দুর্দান্ত enableকমান্ড রয়েছে যা বিল্টিনগুলি সক্ষম বা অক্ষম করতে দেয়। উদাহরণস্বরূপ, এখানে আমি অক্ষম করছি alias।
xieerqi@eagle:~$ enable -n alias
xieerqi@eagle:~$ alias
No command 'alias' found, did you mean:
Command '0alias' from package 'zeroinstall-injector' (universe)
alias: command not found
xieerqi@eagle:~$ alias TEST='rm'
No command 'alias' found, did you mean:
Command '0alias' from package 'zeroinstall-injector' (universe)
alias: command not found
xieerqi@eagle:~$ enable alias
xieerqi@eagle:~$ alias
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
xieerqi@eagle:~$
আবার, সিস্টেমওয়াইড ব্যবহার করা bashrcএখানে একটি বিকল্প।
rmকোনও কিছুতে ওরফে চেষ্টা করে , এটি তালিকাটি পরীক্ষা করে। তালিকাগুলি বেশ বড় হবে বলে বিবেচনা করে আপনার ব্যবহারকারীরা আপনার কাছে প্রচুর অভিযোগ করবেন এবং আপনাকে সিস্টেম অ্যাডমিন হিসাবে ঘৃণা করবেন :)
আপনি পারে (ইন সংজ্ঞায়িত /etc/profile) একটি ফাংশন বলা aliasযা বৈধতা আপনি (সম্ভবত ব্যবহার চায় type -p) (সমস্ত "উবুন্টু ডিফল্ট কমান্ড" পরে হয় "এ এক্সেকিউটেবল $PATHbuiltin কল করার আগে") alias, কিন্তু, অন্যদের সরু আউট আছে, আপনার ব্যবহারকারীদের পেতে পারে কাছাকাছি। আলাদা আলাদা ব্যবহারকারী কেন পাবেন না, বা তাদের শিক্ষিত করবেন না (" aliasকোনও আদেশকে ওভাররাইড করে এমন একটি সংজ্ঞা দেওয়া পায়ের মধ্যে নিজেকে গুলি করার একটি খুব ভাল উপায়, এবং বিভ্রান্তি সৃষ্টি করে (যেমন, কেন lsআমার পাসওয়ার্ডের জন্য অনুরোধ জানায় ?))?"