কমান্ডের জন্য sudo su ব্যবহার করছেন?


15

আমি গতরাতে আমার কমান্ড লাইন দক্ষতা বিকাশের জন্য কাজ করছিলাম এবং আমি এমন একটি ইস্যুতে ছড়িয়ে পড়লাম যেখানে আমি সুডো ব্যবহার করি, তখন আমার একটি ত্রুটি বার্তা পাওয়া যায় যাতে বলা হয় 'অনুমতি অস্বীকার করা হয়েছে'। তবে আমি যখন 'sudo su' ব্যবহার করেছি এবং কমান্ডটি কাজ করেছিলাম তখন এটি কার্যকর হয়েছিল।

সুডো প্রথম উদাহরণে কাজ করলো না কেন?

ইহা ছিল:

$ sudo cat > /var/www/info. php
<?php
phpinfo( ) ;
? >
^D

লিনাক্স বাইবেল ২০১০ সংস্করণ থেকে এলএএমপি সার্ভার স্থাপনের বিভাগে।


আপনি উদাহরণ না দিলে সমস্যা সমাধান করা এক ধরণের কঠিন hard
লাসেপলসেন

1
sudo -sওভার বিবেচনা করুন sudo su
জেরেমি এল

উত্তর:


18

<,> এবং >> কমান্ডগুলির জন্য ইনপুট / আউটপুট পুনঃনির্দেশের জন্য ব্যবহৃত হয় - যা শেল (যেমন, বাশ) দ্বারা সরবরাহ করা একটি বৈশিষ্ট্য। সুতরাং আপনি যদি একটি কমান্ড টাইপ করেন sudo cat > /var/www/info.phpতবে শেল যেটি ইনপুট হিসাবে এটি গ্রহণ করে তা ফাইলটি খোলার চেষ্টা করে এবং সেই ফাইলটিকে কমান্ডের /var/www/info.phpমান আউটপুট হিসাবে সরবরাহ করে sudosudoকমান্ড এমনকি সচেতন তার আউটপুট একটি কনসোল যাচ্ছে অথবা একটি ফাইল থেকে আপনাকে পুনঃনির্দেশিত, কারণ এই শেল দ্বারা প্রতি বিশেষ যত্ন নেওয়া যে পূজা এটা কিনা নয়।

আপনি যে শেলটিতে কমান্ডটি টাইপ করেছেন সেটি হ'ল যদি আপনার লগইন শেল বা আপনার ব্যবহারকারীর আইডি সহ টার্মিনালে চালিত অন্য শেল, তবে এটির ব্যবহারকারীর আইডির মতো একই সুবিধা রয়েছে - মূলের মতো নয়।

সুতরাং আপনার ক্ষেত্রে, যেখানে বিড়াল কমান্ডটি রুট হিসাবে কার্যকর করা হয়েছে, তার আউটপুটটির অনুলিপিটি /var/www/info.phpএকটি সাধারণ ব্যবহারকারীর হিসাবে চলমান শেল দ্বারা চেষ্টা করা হয়েছে, যা প্রত্যাশা অনুযায়ী ব্যর্থ হয়।

এই জাতীয় পরিস্থিতিতে ব্যবহারের teeকমান্ডটি হ'ল কমান্ডটি ব্যবহার করা :

sudo tee /var/www/info.php

এটি প্যারামিটার হিসাবে নির্দিষ্ট ফাইলে কনসোলে প্রবেশ করা সমস্ত পাঠ্য ^ D অবধি রাখার উদ্দেশ্যযুক্ত প্রভাব ফেলবে।

একটি সম্ভবত অপ্রতিরোধ্য পার্শ্ব-প্রতিক্রিয়া হ'ল এটি আউটপুটটিও স্টডআউটে teeপ্রতিধ্বনিত করবে, সুতরাং আপনি প্রতিটি লাইন টাইপ করার পরে এবং এন্টার টিপানোর পরে teeএটির একটি অনুলিপি আউটপুট আসবে। এটি এড়াতে আপনি নিম্নলিখিত রূপটি ব্যবহার করতে পারেন।

sudo tee /var/www/info.php > /dev/null

টার্মিনালের teeমাধ্যমে বিশদ সম্পর্কে জানানো যেতে পারে info tee


2

sudo কোনও কমান্ডের জন্য কাজ করে না যেগুলির জন্য কোনও ফাইল লেখার অনুমতি প্রয়োজন, যেমন:

sudo echo "vm.swappines = 100" >> /etc/sysctl.conf

এটি সুডো ম্যান-পৃষ্ঠায় ব্যাখ্যা করে।


4
একটি রুট প্রম্পট পেতে আপনি "সুডো-আই" বা "সুডো-এস" করতে পারেন তা উল্লেখ করে এই উত্তরটি আরও উন্নত হতে পারে!
জোর্হে কাস্ত্রো

উদাহরণ কমান্ডে পাইপ নেই; একটি পুনর্নির্দেশ আছে। এছাড়াও, "কখনও কখনও কাজ করে না" মনে হয় এর দ্বারা ফ্ল্যাশ আচরণ প্রকাশ করে sudo। কৌশিকের উত্তরে উল্লিখিত হিসাবে, আচরণটি ইউনিক্স অনুমতি মডেলের জন্য বেশ অনুমানযোগ্য, সামঞ্জস্যপূর্ণ এবং "সঠিক"।
এমএসডাব্লু

2

সমস্যাটি হ'ল "> foo.txt" অংশটি আপনার কমান্ড ইন্টারপ্রেটার (শেল) দ্বারা সুডো কমান্ড চালানোর অনেক আগে থেকেই ব্যাখ্যা করা এবং কার্যকর করা হয় । Sudo কমান্ডের কোনও ধারণা নেই যে আপনি এর আউটপুট কোনও ফাইলে পুনর্নির্দেশ করতে চান।

আপনার কমান্ড ইন্টারপ্রেটারের রুট অথোরিটি নেই (তবে sudo কমান্ড শেষ পর্যন্ত হবে) সুতরাং এটি আউটপুট foo.txt এ পুনঃনির্দেশ করতে পারে না।


1

এটি সমাধানের আরেকটি উপায় হ'ল সুডো সহ একটি সাব-শেল শুরু করা এবং সেই সাবশেলের সেই আদেশটি কার্যকর করা:

$ sudo bash -c "cat > /var/www/info.php"
<?php
phpinfo( ) ;
? >
^D

এখানে, "sudo" কমান্ডটি হ'ল বাশ, এবং এতে যে কোনও কিছুই কার্যকর করা হবে তার রুট অনুমতি রয়েছে।

C 2 সি, * পাইক

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