কোন স্ক্রিপ্টটি নিয়মিত ব্যবহারকারীদের নেটওয়ার্ক নেমস্পেস ব্যবহার করতে দেয়?


22

নেটওয়ার্ক নেমস্পেস (নেট) ব্যবহার করে আমার একটি আর্কিটেকচার রয়েছে। আমি নিয়মিত ব্যবহারকারীদের এই নেটগুলিতে কিছু অপারেশন করার অনুমতি দিতে চাই।

আমি একটি স্ক্রিপ্ট লিখতে পারে netns-exec.sh, দ্বারা অনুপ্রাণিত এই পোস্টে , সঙ্গে মৃত্যুদন্ড কার্যকর করা sudo, ধারণকারী:

ip netns exec $1 su $USER -c "$2"

এবং আমার সুডোর ফাইলটিতে যুক্ত করুন:

user ALL=(ALL) /path/to/netns-exec.sh

তবে আমি এটি দেখতে খুব কুৎসিত মনে করি এটি সম্পর্কে আমার দুঃস্বপ্নগুলি সম্পূর্ণরূপে থাকতে পারে। নিয়মিত ব্যবহারকারীদের নামের স্থান ব্যবহারের অনুমতি দেওয়ার কি আরও ভাল সমাধান আছে? ব্যবহারকারীদের কিছু দরকারী গ্রুপে রাখা কি সম্ভব? আমি এটি সম্পর্কে অনুসন্ধান করেও কিছু পাইনি।


1
কেন আপনি Cmd_Alias CMD_NETNS = ip netns exec [regexp matching your namespace] su [regexp matching allowed used] -c [regexp matching allowed namespace command]নিজের সূডার ফাইলটিতে সংজ্ঞায়িত করবেন না এবং তারপরে একটি গোষ্ঠী তৈরি করুন যাতে আপনি নিজের অনুমোদিত ব্যবহারকারীদের রেখেছেন এবং এই গোষ্ঠীটিকে এই কমান্ডের সাথে যুক্ত করতে পারেন alias
নেটমনক

2
এটি এমন sudoএকটি suউপাদান যা আমাকে বিরক্ত করে, লিপিটি নিজেই নয়। যাইহোক আমি জিনিসটি মোড়ানোর জন্য একটি স্ক্রিপ্ট লিখব। এটি 2 জন ব্যবহারকারীকে স্যুইচ করে তোলে, এটি সত্যিই কুৎসিত, আপনি কি ভাবেন না?
রাস্পবেগুই

6
যে আপনাকে ভয় দেখাতে হবে। ব্যবহারকারী be USER কে রুট হওয়ার জন্য পরিবর্তন করতে পারে।
স্টিফেন

1
হ্যাঁ, এবং এটি আমাকে ভয় দেখায়। তবে আমি পরে আবিষ্কার করেছি যে sudoএকটি নির্দিষ্ট পরিবর্তনশীল সরবরাহ করেছে $SUDO_USER, যা নিরাপদ। তবে তা এখনও কুৎসিত।
রাস্পবেগুয়ে

1
@ এলরনড - কার্নেল স্ক্রিপ্টগুলিতে সেটিউড উপেক্ষা করে
অ্যাঞ্জেলো

উত্তর:


1

সমাধান 1

"নেট্নস" নামে একটি গোষ্ঠী যুক্ত করুন এটিতে সমস্ত পছন্দসই ব্যবহারকারী যুক্ত করুন। তারপরে রুট: নেটগুলিতে মালিকানা দিন এবং গ্রুপটিকে পড়ুন / সম্পাদন ক্ষমতা দিন capabilities

অন্য পদে:

# New group netns
sudo groupadd --system netns

# Add root to "netns", not sure if needed
sudo usermod -aG netns root

# Do this for every needed user
sudo usermod -aG netns $UserName

# Change ownership to root, grant rw acces to group netns
sudo chown root:netns /path/to/netns-exec.sh
sudo chmod 633 /path/to/netns-exec.sh

সমাধান 2

এই সমাধানটি সহজ, আপনাকে উদাহরণস্বরূপ প্রদর্শিত sudoers ফাইল সম্পাদনা করতে হবে ।

user ALL=(ALL) /bin/ip netns

ঠিক আছে, সমাধান 1 অসম্ভব, কমান্ডটি ip netnsএকটি ত্রুটি ফিরিয়ে দেবে বলেছিল যে কেবল রুট এটি কার্যকর করতে পারে। সমাধান 2 হ'ল আমি প্রথমে যা মনে রেখেছিলাম তবে তা আমার মতে সন্তুষ্ট ছিল না।
রাস্পবেগুয়ে

এই chmod 0633দেবেন write+executeসকল ব্যবহারকারীর জন্য এবং অনুমতি netnsগ্রুপ। আমি সন্দেহ করি যে আপনি স্ক্রিপ্টে এসজিআইডি বিট সেট করতে চেয়েছিলেন, তবে @ অ্যাঞ্জেলো যেমন উল্লেখ করেছেন: setuidএবং setgidশেল স্ক্রিপ্টগুলির জন্য উপেক্ষা করা হয়েছে, এবং সঙ্গত কারণেই
ckujau

0

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

#!/bin/bash
# ip netns wrapper script, nns.
# Usage: nns nsname cmdline

case "${1}" in
    do)
        shift # remove "do"
        NSNAME="${1}" # remember nsname
        shift # remove nsname to get argument list for su -c
        [ -z "${NSNAME}" -o -z "${1}" ] && exit 1 # if either nsname or arglist is empty - error out
        echo ip netns exec "${NSNAME}" su "${SUDO_USER}" -c "${*}" # execute, ${*} merges separate arguments into single word for su/sh -c parsing. See with strace.
    ;;
    *)
        SCRIPTNAME="${0}" # remember script full path
        exec sudo "${SCRIPTNAME}" do "${@}" # run it through sudo with elevated privileges
    ;;
esac

এটিকে কোথাও ইনস্টল করুন /usr/binএবং আপনার ব্যবহারকারীদের এটি সম্পাদন করার অনুমতি দিন।


আপনার প্রতিক্রিয়া জন্য ধন্যবাদ (এবং বেশ কয়েক মাস পরে লক্ষ্য করার জন্য দুঃখিত)। তবে সমস্যাটি একই রয়ে গেছে, এটি সুডো ব্যবহার করে বলা।
রাস্পবেগুয়ে

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