কোনও ফাইল বিদ্যমান আছে কিনা তা পরীক্ষা করতে আমি কীভাবে sudo ব্যবহার করতে পারি?


13

আমি ফাইল পরীক্ষা করে দেখতে চাই কিনা

[ -f /path/to/file/ ]

তবে আমি এই কমান্ডটি নিয়মিত ব্যবহারকারী হিসাবে চালাচ্ছি এবং ফাইলটি রুটের মালিকানাধীন। এটি সফল করতে আমি কীভাবে সুডো ব্যবহার করতে পারি।

sudo [ -f /path/to/file/ ] কাজ করে না.


2
এটি আমার সিস্টেমে কাজ করে। উপসর্গ গুলো কি ? আপনি কি নিশ্চিতভাবেই -f ব্যবহার করতে চান?
বি0fh

উত্তর:


11

আপনি যা বর্ণনা করছেন তা ঠিকঠাক কাজ করা উচিত - যতক্ষণ আপনি নিখুঁত পাথ ব্যবহার করছেন এবং -f("ফাইলটি বিদ্যমান এবং এটি একটি নিয়মিত ফাইল") সত্যই আপনি পরীক্ষা করতে চান।

/আপনি আপনার প্রশ্নে যা পোস্ট করেছেন আমি তার পিছনে দেখছি - আপনি কি কোনও ডিরেক্টরি পরীক্ষা করছেন? এটি হওয়া উচিত -dবা সহজভাবে -e("নামের সাথে কিছু উপস্থিত রয়েছে - প্রকার নির্বিশেষে")

এছাড়াও মনে রাখবেন যদি না পথ ধরে কিছু পাঠযোগ্য নয় test( [) আপনাকে বলতে যদি রুটের মালিকানাধীন একটি ফাইল থাকবেই বা না (যেমন সক্ষম হওয়া উচিত [ -f /root/.ssh/known_hosts ], সম্ভবত ব্যর্থ হবে কারণ /root/.ssh ডিরেক্টরির নয় (বা অন্তত shouldn 'টি হতে ) একজন সাধারণ ব্যবহারকারী দ্বারা পাঠযোগ্য। [ -f /etc/crontab ]সফল উচিত)।


4
একটি সম্ভাব্য সমস্যা রয়েছে: যদি sudoকমান্ডটি ব্যর্থ হয় (খারাপ পাসওয়ার্ড, / etc / sudoers এ অনুমোদিত নয়) তবে ফাইলটি উপস্থিত না থাকায় এটি একই ফলাফল দেবে।
গর্ডন ডেভিসন

1
@ গর্ডন - সত্য: আমার উত্তরটি sudoকাজ করার অংশটিতে পূর্বাভাস দেওয়া হয়েছে :)
voretaq7

13
if sudo test -f "/path/to/file"; then
    echo "FILE EXISTS"
else
    echo "FILE DOESN'T EXIST"
fi

পরীক্ষা পৃষ্ঠা পৃষ্ঠা

জিনিসগুলি সম্পূর্ণ করতে, বিপরীত দিকে, আপনি যদি কোনও ব্যবহারকারী বা ব্যবহারকারীর জন্য কোনও ফাইল বা ডিরেক্টরি পাঠযোগ্য কিনা তা রুট থেকে পরীক্ষা করতে চান

if sudo -u username test -f "/path/to/file"; then
    echo "FILE EXISTS"
else
    echo "FILE DOESN'T EXIST"
fi

লুকা বোরিওয়ের উত্তর আমার পক্ষে নিখুঁতভাবে কাজ করেছিল। আমার কাছে এমন ফাইলগুলির অস্তিত্ব পরীক্ষা করতে হবে যা কেবলমাত্র রুট দ্বারা পাঠযোগ্য পাঠ্যযোগ্য ডিরেক্টরিগুলির ভিতরে গভীর ছিল।
ওয়ালহিটার

1

অন্যান্য উত্তর যুক্ত করে, পরীক্ষা বা sudo প্রমাণীকরণ ব্যর্থ মধ্যে পার্থক্য প্রথম চালানো দ্বারা করা যেতে পারে sudo true। আমি জানি বেশিরভাগ সুডো বাস্তবায়নের জন্য অল্প সময়ের মধ্যে পুনরায় প্রমাণীকরণের প্রয়োজন হবে না।

উদাহরণ স্বরূপ:

if sudo true; then
    if sudo test -f "/path/to/file"; then
        echo "FILE EXISTS"
    else
        echo "FILE DOESN'T EXIST"
    fi
else
    echo "SUDO AUTHENTICATION FAILED"
fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.