সুডো দিয়ে চালানোর সময় কেন ইউলিমিট কাজ করে না?


উত্তর:


10

ulimitশেল / প্রক্রিয়া নির্দিষ্ট। কর sudo

$ ulimit -s
8192
$ ulimit -s 16384
$ ulimit -s
16384

আমি অবাক হয়েছি sudoযখন পাস করার সময় ত্রুটি দেয় নি ulimit; সাধারণত এটি একটি বাহ্যিক বাইনারি প্রয়োজন, কিন্তু ulimitএটি শেল বিল্টিন।
অ্যাম্ফটামাচাইন

@amphetamachine পরীক্ষা করে দেখুন which ulimit। এটি সম্পর্কে বিস্ময়ের কিছু নেই।
ড্যানিয়েল বেক

এই উত্তরটি সত্যের দানাদারের উপর ভিত্তি করে এমনকি মারাত্মকভাবে বিভ্রান্তিকর এবং অপ্রয়োজনীয়।
hmijail

3

ড্যানিয়েল বেকের উত্তর সমস্ত সত্যই বলে না (আসলে এটি হাতের মুদ্রা), এবং প্রকৃতপক্ষে "সুডো ওলিমিট" করার জন্য প্রয়োজনীয় লোকদের সহায়তা করে না।

সমস্যা হল যে

  • ইউলিমিটের নরম ও শক্ত সীমা রয়েছে
  • একবার আপনি হার্ড সীমাটি সেট করে দিলে, এটিকে আরও উচ্চতর করে সেট করতে আপনাকে সুপারউজার হতে হবে
  • sudo একটি নতুন শেল শুরু; আপনি যখন এটি থেকে প্রস্থান করবেন, আপনি আবার আপনার পুরানো উলামিটে ফিরে আসবেন!

বিস্তারিত ব্যাখ্যা

ড্যানিয়েলের উদাহরণ কেবলমাত্র একটি নির্দিষ্ট পরিস্থিতিতে কাজ করে (যা ভাগ্যক্রমে পূর্বনির্ধারিত একটি)।

Counterexample:

$ ulimit -s 8191              # set both hard and soft limits
$ ulimit -s                   # show current soft limit
8191
$ ulimit -s 16384             # set both hard and soft limits
-bash: ulimit: stack size: cannot modify limit: Operation not permitted

সুতরাং, আপনি এর সাথে সীমাটি সেট করেছেন ulimit -sএবং এটি গিয়ে নরম এবং কঠোর উভয় সীমাবদ্ধতা সেট করেছে। এখন আপনি এটি উচ্চতর স্থাপন থেকে অবরুদ্ধ।
এই মুহুর্তে আপনি চেষ্টা করার চেষ্টা করতে পারেন sudo; কিন্তু ড্যানিয়েল যা লিখেছিলেন তা কার্যকর হবে না।

$ sudo ulimit -s 16384        # maybe with sudo?
$ ulimit -s
8191
$

এখানে যা ঘটেছিল তা হ'ল এটি sudoএকটি নতুন শেল শুরু করেছিল, যেখানে এটি দৌড়েছিল ulimit; এবং সেই শেলটিতে নতুন উলামিট সেট করা হয়েছিল। তবে তারপরে সেই শেলটি তার কাজ শেষ করেছে, ছিন্নভিন্ন হয়ে গিয়েছিল এবং এখন আপনি আগের শেলটিতে আগের উলামিট দিয়ে ফিরে এসেছেন।

প্রমাণ:

$ ulimit -s 8191
$ ulimit -s
8191
$ sudo bash
# ulimit -s
8191
# ulimit -s 16384
# ulimit -s                           # It worked!
16384
# exit
exit
$ ulimit -s                           # ... but now we're back to the old ulimit.
8191
$

তাহলে ড্যানিয়েলের উদাহরণটি কেন ঠিক কাজ করেছিল? উলিমিতের ডিফল্ট শক্ত এবং নরম সীমাবদ্ধতার কারণে, তিনি নরম সীমাটিকে শক্ত সীমাতে ঠেলে দিতে পারেন। কৌশলটি দেখানোর জন্য আমরা এটি ধীর গতিতে করতে পারি:

$ ulimit -Ss                 # show the Soft limit
8192
$ ulimit -Hs                 # show the Hard limit
65532
$ ulimit -s                  # by default, shows the Soft limit
8192
$ ulimit -s 16384            # set both the Soft and Hard limit
$ ulimit -s                  # shows the Soft limit
16384
$ ulimit -Hs                 # but, gotcha! the Hard limit has also been set
16384
$ ulimit -s 16385            # so now we can't go higher
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
$

সংক্ষিপ্তসার: আপনি যদি নিজের হার্ড সীমাটি সেট করেন এবং এটিকে ধাক্কা দিতে চান তবে আপনি সেই শেলের ভাগ্যের বাইরে চলে যাবেন ... ... যদি না আপনি সুপারভাইজার হিসাবে না থাকেন বা পরে সুযোগগুলি বাদ দেওয়ার জন্য কিছু জাল ব্যবহার করেন না।

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