আমার সুডো অ্যাক্সেস আছে কিনা তা কীভাবে চেক করব?


104

আমি সম্প্রতি এই কারণে সমস্যার মধ্যে পড়েছিলাম।

$sudo vim /etc/motd 
[sudo] password for bruce: 
bruce is not in the sudoers file.  This incident will be reported.

আমার কি সুডো অ্যাক্সেস আছে কিনা তা যাচাই করার কোনও উপায় আছে?


আপনার সিস্টেম প্রশাসককে জিজ্ঞাসা করবেন?
এমডিপিসি

1
@ এমডিপিসি: এর বাইরে আর কোন উপায় আছে কি?
ব্রুস

আপনি রুট অ্যাক্সেস অর্জন করতে পারবেন কিনা তা উল্লেখ করেননি।
এমডিপিসি

উত্তর:


121

চালান sudo -v। এটি সাধারণত আপনার সুডো পাসওয়ার্ডের মেয়াদ বাড়ানোর জন্য ব্যবহৃত হয় তবে আপনার কোনও sudoসুযোগ-সুবিধা রয়েছে কিনা তা নির্ধারণের জন্য ব্যবহার করা যেতে পারে ।

$ sudo -v
Sorry, user [username] may not run sudo on [hostname].

ম্যান পৃষ্ঠা অংশ:

যদি -v (যাচাইকরণ) বিকল্পটি দেওয়া হয়, sudo ব্যবহারকারীর টাইম স্ট্যাম্প আপডেট করবে, প্রয়োজনে ব্যবহারকারীর পাসওয়ার্ডের জন্য অনুরোধ করবে। এটি সুডোর সময়সীমা আরও 5 মিনিটের জন্য প্রসারিত করে (বা সুডোরগুলিতে টাইমআউট নির্ধারণ করা যাই হোক না কেন) তবে কমান্ড চালায় না।

যদি আপনার ব্যবহারকারীকে কেবল নির্দিষ্ট কমান্ডগুলি চালানোর অনুমতি দেওয়া হয় তবে এই কমান্ডটি কার্যকর হবে, এটি নির্দেশ করে যে আপনাকে বিভিন্ন সুযোগ-সুবিধা দিয়ে কিছু চালানোর অনুমতি দেওয়া হয়েছে । এই ক্ষেত্রে আপনাকে অনুমতি দেওয়া হচ্ছে না এমন কোনও কমান্ড কার্যকর করার চেষ্টা করার সময় বার্তাটি অন্যরকম দেখাচ্ছে (এবং কোনও মেল রুট করার জন্য প্রেরণ করা হয়নি ), প্রশাসকরা পড়লে আপনি সমস্যার মধ্যে পড়তে পারবেন এটি এখনও সম্ভব /var/log/secure

$ sudo ls
[sudo] password for [username]: 
Sorry, user [username] is not allowed to execute '/bin/ls' as root on [hostname].

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


2
ধন্যবাদ। sudo -v আমার জন্য কাজ করে। ম্যান পেজটি বলছে যে আমি সুডো-এল চালাতে পারি তবে এটি একটি পাসওয়ার্ড চেয়েছে। কেন এমন?
ব্রুস

2
@ ব্রুস আমি এখানে অনুমান করছি, তবে অন্যথায় কেউ (বা আপনি চালিত কোনও প্রোগ্রাম) আপনার বর্তমান ব্যবহারকারী দ্বারা কী প্রোগ্রামগুলি কার্যকর করা যেতে পারে (সম্ভবত পাসওয়ার্ড প্রবেশ করানো ছাড়াই) খুঁজে পেতে পারে এবং সেই তথ্যটিকে দূষিতভাবে ব্যবহার করার চেষ্টা করতে পারে।
ড্যানিয়েল অঙ্গুলিনির্দেশ

আমি যখন এটি ফিরে পেয়েছি তখন এর অর্থ কী patrick@<host>:~$ sudo -v sudo: unable to resolve host <host>? আমি আমার পাসওয়ার্ড প্রবেশ করিয়েছি এবং অননুমোদিত সম্পর্কে কিছুই পাইনি। আমি জানি যে আমি sudoঅন্যান্য কমান্ডগুলি সফলভাবে চালানো থেকে পেয়েছি , কিন্তু এই unable to resolve hostবার্তাটি আমাকে উদ্বিগ্ন করেছে যে হোস্টটিতে অন্য কিছু হতে পারে।
প্যাট্রিক এম

@ পেট্রিকএম sudoersফাইলটি নিয়ে সমস্যা মনে হচ্ছে । সেখানে আপনি নির্দিষ্ট করতে পারবেন যে কোন হোস্টে কোনও ব্যবহারকারী নির্দিষ্ট কমান্ড চালানোর জন্য অনুমোদিত ( sudoersএকাধিক মেশিনে একই ফাইলটি ব্যবহার করার সময় এটি কার্যকর )। সম্ভবত এই ফাইলটিতে নির্দিষ্ট করা হোস্টনাম সমাধান করা যায়নি। hostউদাহরণস্বরূপ কমান্ড দিয়ে এটি পরীক্ষা করে দেখুন ।
এলে

আরএইচইএল 6 এ আমার জন্য কাজ করে না, sudo -vদিয়েছে "এক্সএক্স স্যুডার্স ফাইলে নেই This এই ঘটনার খবর দেওয়া হবে।"
79E09796

43

এটি খুব সহজ। চালান sudo -l। এটি আপনার যে কোনও সুডোর সুবিধাগুলি তালিকাবদ্ধ করবে।


1
সম্ভবত হ্রাস পেয়েছে কারণ এটি প্রায় দু'বছর আগে ড্যানিয়েল বেক যা বলেছিল তার পুনরাবৃত্তি করে।
জি ম্যান

1
বা কী হবে তা ব্যাখ্যা করে, এটি সর্বোত্তম মন্তব্য
রামহাউন্ড

2
@ জোনাথন: আপনি যদি এখন উবুন্টু রসে স্ক্রিপ্ট লিখতেন, আপনি সুদো করতে পারছেন sudo -lকিনা , একটি পাসওয়ার্ড চেয়েছেন। sudo -vআপনি যদি পারেন তবেই "$(whoami)" != "root"জিজ্ঞাসা করে এবং কোনও লিনাক্সে কখনই জিজ্ঞাসা করবে না।
bksunday

@bksunday আপনি সঠিক আছেন আমি এখন একটি পরিষ্কার ডেবিয়ান জেসিতে পরীক্ষা করেছি এবং আপনার ফলাফলগুলি নিশ্চিত করেছি। আমার আগের (এখন মুছে ফেলা) মন্তব্যটি সম্ভবত এমন কোনও মেশিনে পরীক্ষার ফলাফল যা আমার কিছু sudoছদ্মবেশ ধারণ করেছিল।
জোনাথন বেন-অভ্রাহাম

@ জি-ম্যান কিন্তু এই সাধারণ উত্তরটি আমাকে ড্যানিয়েলের উত্তর থেকে আরও বেশি সুনির্দিষ্টভাবে সাহায্য করেছে, যেখানে এই আদেশটি অত্যন্ত দুর্ভাগ্যজনকভাবে শেষ হয়েছে ...
বেটলিস্ট

11

এখানে স্ক্রিপ্ট-বান্ধব সংস্করণ:

timeout 2 sudo id && echo Access granted || echo Access denied

আপনার sudoঅ্যাক্সেস না থাকলে এটি পাসওয়ার্ড ইনপুটটিতে আটকে থাকবে না ।

আপনি এটিকে একটি চলকতেও সেট করতে পারেন:

timeout 2 sudo id && sudo="true" || sudo="false"
echo "$sudo"

দ্রষ্টব্য: ম্যাকোজে, আপনার ইনস্টল করা প্রয়োজন coreutils, যেমন brew install coreutils


timeoutডিফল্টরূপে যেমন উপলভ্য নয় এমন কোনও বিকল্প , যেমন ওএস এক্সে?
হ্যারি

1
আপনার ইনস্টল করা প্রয়োজন coreutils, যেমন brew install coreutils
কেনারব

2
এটি আমার জন্য কোনও স্ক্রিপ্টে কাজ করে না। অব্যক্ত কারণে স্ক্রিপ্টটি আমি এটি না মেরে পর্যন্ত স্তব্ধ হয়ে যায়।
বেরু

7

জেরাল্ড স্ক্যাডের উত্তর এখানে , এখনও উন্নত করা যেতে পারে!

ব্যবহার

prompt=$(sudo -nv 2>&1)
if [ $? -eq 0 ]; then
  # exit code of sudo-command is 0
  echo "has_sudo__pass_set"
elif echo $prompt | grep -q '^sudo:'; then
  echo "has_sudo__needs_pass"
else
  echo "no_sudo"
fi

এখানে স্ক্রিপ্টে ব্যবহারের সম্পূর্ণ উদাহরণ রয়েছে :

#!/usr/bin/env bash

is_root () {
    return $(id -u)
}

has_sudo() {
    local prompt

    prompt=$(sudo -nv 2>&1)
    if [ $? -eq 0 ]; then
    echo "has_sudo__pass_set"
    elif echo $prompt | grep -q '^sudo:'; then
    echo "has_sudo__needs_pass"
    else
    echo "no_sudo"
    fi
}

elevate_cmd () {
    local cmd=$@

    HAS_SUDO=$(has_sudo)

    case "$HAS_SUDO" in
    has_sudo__pass_set)
        sudo $cmd
        ;;
    has_sudo__needs_pass)
        echo "Please supply sudo password for the following command: sudo $cmd"
        sudo $cmd
        ;;
    *)
        echo "Please supply root password for the following command: su -c \"$cmd\""
        su -c "$cmd"
        ;;
    esac
}

if is_root; then
    echo "Error: need to call this script as a normal user, not as root!"
    exit 1
fi


elevate_cmd which adduser

2

আমার জন্য, ' sudo -v' এবং ' sudo -l' কোনও স্ক্রিপ্টে কাজ করেনি কারণ মাঝে মাঝে ইন্টারেক্টিভ (আমাকে উপরে বর্ণিত পাসওয়ার্ডের জন্য জিজ্ঞাসা করে)। ' sudo -n -l' এছাড়াও কাজ করে নি, পাসওয়ার্ড হারিয়ে যাওয়ার কারণে এটি আমার কাছে সুডো অনুমতি থাকলেও প্রস্থান কোডটি '1' দিয়েছে। তবে আদেশটি প্রসারিত করে:

A=$(sudo -n -v 2>&1);test -z "$A" || echo $A|grep -q asswor

স্ক্রিপ্টের জন্য আমার জন্য সফল ছিল। এই অভিব্যক্তিটি দেয় 0যদি বর্তমান ব্যবহারকারী 'সুডো' কল করতে পারে এবং 1যদি না করে।

ব্যাখ্যা:
অতিরিক্ত প্যারামিটার -nকরার sudoইন্ট্যার্যাক্টিভিটির বাধা দেয়। কমান্ডের
আউটপুট হতে পারে: - খালি (এই ক্ষেত্রে, সুডো বর্তমান ব্যবহারকারী দ্বারা কল করা যেতে পারে), বা: - একটি নোট যে বর্তমান ব্যবহারকারী সুডোর জন্য অনুমোদিত নয়, বা: - একটি প্রশ্নের পাঠ্য পাসওয়ার্ড (এই ক্ষেত্রে, ব্যবহারকারী অনুমোদিত)। ("অ্যাসওয়ার" কোনও ইংরেজি "পাসওয়ার্ড" এবং পাশাপাশি একটি জার্মান "পাসওয়ার্ট" এর জন্য উপযুক্ত হবে)।$Asudo -n -v 2>&1




2

আমি ভোট দেওয়ার এবং মন্তব্য করার মতো নিম্ন পদ পেয়েছি তবে আমি জেরাল্ড স্ক্যাডের উত্তরটিকে অগ্রাহ্য করতে চেয়েছিলাম, যেমনটি আমি খুঁজে পেয়েছি যে একমাত্র উপায় আগে, এবং ভেবেছিল যে নো 1 এটি জানে - এখন পর্যন্ত: ডি

আমার সমাধান বিটিডব্লিউ:

[[ "$(whereis sudo)" == *'/'* && "$(sudo -nv 2>&1)" != 'Sorry, user'* ]]

(২০১৫ সালের শেষের দিকে মাওয়াহাহা)


1
আপনি কীভাবে মন্তব্য শুরু করতে পারবেন তা বুঝতে আপনি "মন্তব্য করার জন্য আমার কেন 50 খ্যাতি দরকার" পড়ুন ।
পিম্প জুস আইটি

1

"সুডো অ্যাক্সেস" স্বাদে আসে। দুটি প্রাথমিক স্বাদ: প্রথমে আপনি বা আপনার গ্রুপের একটি সদস্য / / etc / sudoers ফাইলটিতে সুডো অ্যাক্সেসের জন্য সেটআপ করা দরকার।

দ্বিতীয়ত আপনার নিজের পাসওয়ার্ড জানতে হবে, অথবা আপনাকে সম্প্রতি একটি sudo কমান্ড করা উচিত। সময়সীমা অতিক্রান্ত হয়নি যে সম্প্রতি যথেষ্ট। (মজার ঘটনা: আপনি নিজের সুডোরের ফাইলে খুব বেশি সময় দিতে পারবেন))

আমি প্রায়শই কোনও স্ক্রিপ্টের প্রলগে দ্বিতীয় ধরণের অ্যাক্সেসের জন্য পরীক্ষা করতে চাই যা কিছু পদক্ষেপের জন্য প্রয়োজন। যখন এই চেকটি ব্যর্থ হয় আমি স্ক্রিপ্টটি চালানোর আগে তার ব্যবহারকারীর 2 য় ধরণের অ্যাক্সেস সক্ষম করতে পরামর্শ দিতে পারি।

bash-3.2$ if sudo -S -p '' echo -n < /dev/null 2> /dev/null ; then echo 'Sudo is enabled.' ; else echo 'Sudo is not enabled' ; fi
Sudo is enabled.
bash-3.2$ sudo -K
bash-3.2$ if sudo -S -p '' echo -n < /dev/null 2> /dev/null ; then echo 'Sudo is enabled.' ; else echo 'Sudo is not enabled' ; fi
Sudo is not enabled

-S sudo কে স্টিডিনের কাছ থেকে পাসওয়ার্ড পড়তে বলে। -P একটি খালি প্রম্পট সেট করে। -K অ্যাক্সেসের দ্বিতীয়বার সাফ করে।

যেহেতু এটি স্টাডারকে / dev / নালকে প্রেরণ করে, এটি ব্যবহারকারীর প্রথম ধরণের সুডো অ্যাক্সেস আছে কিনা তাও পরীক্ষা করে দেখবে।


-4

Sudoers ফাইল দেখতে এই পদক্ষেপগুলি অনুসরণ করুন। আপনি যদি সেখানে থাকেন তবে আপনার সুডো আছে। যদি তা না হয় তবে আপনি নিজেকে যুক্ত করতে পারেন।

  1. su
  2. visudo
  3. ফাইলের নীচে, প্রবেশ করান your_username_here ALL=(ALL) ALL
  4. হিট ESCএবং টাইপ করুন:wq
  5. আদর্শ exit
  6. আপনার কমান্ডটি পুনরায় চালু করুন sudo
  7. আপনার পাসওয়ার্ড লিখুন (মূল পাসওয়ার্ড নয়)

11
ওপি চালানোর জন্য "কষ্ট পেয়েছিলাম" sudo, তাই সে সম্ভবত নয় সিস্টেম প্রশাসক, কিংবা অভিজাত সিস্টেম অ্যাডমিনিস্ট্রেটররা এমনকি এক। তিনি সম্ভবত কেবলমাত্র একজন ব্যবহারকারী যিনি ভেবেছিলেন যে তাকে কিছু সীমাবদ্ধ ক্ষমতা দেওয়া হয়েছে। আপনি কী সন্দেহ করছেন যে সে যেতে পারে ? su
স্কট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.