সুডো (রুট ব্যবহারকারী হিসাবে নয়) দিয়ে চালানোর জন্য বাশ স্ক্রিপ্টটি প্রয়োজন?


0

আমি বর্তমানে ব্যাশ স্ক্রিপ্টটির সাথে বর্তমান ব্যবহারকারী হিসাবে চালিত sudoহওয়া চাই, তবে এটি সরাসরি ব্যবহারকারীরূপে নির্বাহ করা হলে চালানো থেকে রোধ করতে পারে। এটি কারণ আমি বর্তমান ব্যবহারকারীর জন্য কিছু সেটআপ ক্রিয়া করছি যার জন্য রুট অনুমতিগুলি প্রয়োজন, তবে SUDO_USERপরিবেশের পরিবর্তনশীল সেট হওয়ার উপর নির্ভর করে ।

এই মুহূর্তে আমার যা আছে:

#!/usr/bin/env bash

# Require script to be run via sudo, but not as root

if [[ $EUID != 0 ]]; then
    echo "Script must be run with root privilages!"
    exit 1
elif [[ $EUID = $UID && "$SUDO_USER" = "" ]]; then
    echo "Script must be run as current user via 'sudo', not as the root user!"
    exit 1
fi

এটি দাঁড়িয়ে হিসাবে এটি নির্ভরযোগ্য? আমি আমার চেকিং সম্পর্কে কিছুটা অনিশ্চিত EUIDএবং UIDমিলছি, যেহেতু আমি জানি না যে UIDসর্বদা নির্ভরযোগ্যভাবে সঠিকভাবে সেট করা আছে কিনা। SUDO_USERখালি আছে কিনা তা খালি পরীক্ষা করা কি যথেষ্ট হবে ?

উত্তর:


0

আমার মতে এটি যথেষ্ট হবে না, কারণ যে কেউ রুট ব্যতীত অন্য ব্যবহারকারীকে sudo ব্যবহার করতে পারে:

[my.username@some_hostname ~]$ echo "'$SUDO_USER':'$UID':'$EUID'"
'':'503':'503'
[my.username@some_hostname ~]$ sudo -i -u zenoss
[zenoss@some_hostname ~]$ echo "'$SUDO_USER':'$UID':'$EUID'"
'my.username':'1337':'1337'

(সেন্টোজ 6.৫, জিএনইউ ব্যাশ, সংস্করণ ৪.১.২ (1) -আপনি (x86_64-redhat-linux-gnu)

আমি ইউআইডি / ইডিউ সম্পর্কে আপনার মতামতটি বুঝতে পারি, তবে আমি সম্ভবত $ ইউআইডি একা থাকি। দুর্ভাগ্যক্রমে এমনকি 'বাশ ইনফো' বিশেষত ভার্বোজ নয়, তবে এক শ্রদ্ধেয় সূত্র বলেছে:

$UID
    User ID number
    Current user's user identification number, as recorded in /etc/passwd
    This is the current user's real id, even if she has temporarily assumed another
    identity through su. $UID is a readonly variable, not subject to change from 
    the command line or within a script, and is the counterpart to the id builtin.

$EUID
    "effective" user ID number
    Identification number of whatever identity the current user has assumed, 
    perhaps by means of su.
    Caution 
        The $EUID is not necessarily the same as the $UID.

-1
ID=`id -u`
if [ $ID -ne 0 ]; then
   echo "This command must be run as root."
   exit 1
fi

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