লগইন এ রুট হিসাবে স্ক্রিপ্ট চালান (কোন sudoer ব্যবহারকারী, শেল সেশন)


8

অনেক মত /etc/profileএবং ~/.profileকিন্তু ব্যবহারকারী পরিবর্তে রুট দ্বারা Ran লগইন করছে। /etc/rc.localবুটের পরে চলে তবে লগইনের আগে আমার স্ক্রিপ্টটি চালানো দরকার। ব্যবহারকারী একটি sudoer এক নয়।

ধন্যবাদ!


এটি করার একটি উপায় থাকতে পারে তবে এটির মতো হবে না /etc/profileবা ~/.profileকারণ এই স্ক্রিপ্টগুলিতে চলমান কোডটি ব্যবহারকারীর শেল দ্বারা করা হয় এবং এটি ব্যবহারকারীর নিয়ন্ত্রণের সাথে জড়িত থাকে, আপনি যদি না চান তবে ব্যবহারকারী প্রোগ্রামগুলি নিজের হিসাবে চালনার ক্ষমতা root, তবে এটি ব্যবহারকারীর প্রক্রিয়াগুলির বাহ্যিক কিছু চলমান পরিষেবা দ্বারা করতে হবে। ... আপনি যদি স্ক্রিপ্টটি চালাতে চান তার উদ্দেশ্যটি যদি আমাদের বলতে পারেন তবে এটি সহায়তা করতে পারে।
এলিয়াহ কাগন

আমাকে একটি নির্দিষ্ট ব্যবহারকারীর জন্য একটি নির্দিষ্ট (- বাইন্ড) মাউন্ট করতে হবে। আমি মালিক এবং ব্যবহারকারীর বিকল্পগুলির সাথে fstab চেষ্টা করেছি, তবে এটি কার্যকর হয় না। /etc/rc.local একটি বিকল্প তবে এটি ব্যবহারকারী সর্বদা লগ ইন করে কিনা তা মাউন্টটি সম্পাদন করে। আমি বর্তমানে ব্যবহারকারীর জন্য 'মাউন্ট' এর জন্য sudoer সুবিধাগুলি মঞ্জুর করেছি, তবে এটি কার্যকর নয় এবং মানক ব্যবহারকারীদের জন্য কোনও সুযোগ-সুবিধা দেওয়া পছন্দ করবেন না। আমি মনে করি পরিবর্তে আমি rc.local ব্যবহার করব। ধন্যবাদ!
আন্তোনিও সানচেজ

আপনি কেবলমাত্র সেই নির্দিষ্ট mountকমান্ডের সাহায্যে একটি রুট স্ক্রিপ্ট তৈরি করতে পারেন এবং ব্যবহারকারীকে কেবল script স্ক্রিপ্টটি চালনার সুযোগ দিয়েছিলেন (কনফিগারেশন /etc/sudoers)। প্রদত্ত বিকল্পগুলির সাথে একটি কমান্ড সরাসরি সেট করা যেতে পারে sudoers
এনজোটিব

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

উত্তর:


3

কেবলমাত্র sudoers পদ্ধতিতে ফিরে যেতে, আমি মনে করি আপনি হাল ছেড়ে দেওয়ার আগে আপনি প্রায় সেখানে ছিলেন। আপনার সর্বশেষ মন্তব্যগুলিতে তাকিয়ে আমি কেবল এমন কিছুকে সম্বোধন করতে চাই যা সম্ভবত আপনার জন্য জিনিসগুলি ঠিক করবে:

আপনি যদি স্ক্রিপ্টটিকে রুট হিসাবে চালনা করেন তবে আপনাকে এর মধ্যে থেকে সুডো কল করার দরকার নেই।

আমার কাছে এর মতো স্ক্রিপ্ট রয়েছে:

#! /bin/bash

echo $USER
whoami

আমি যদি দৌড়ে sudo ./myscriptযাই তবে আমি দেখতে পাচ্ছি rootboth স্ক্রিপ্টটি যে সেশনটিতে চলছে সেটি হ'ল একটি রুট শেল।

সংক্ষেপে এর অর্থ হ'ল আপনি আপনার স্ক্রিপ্টে যা কিছু করেন তার ইতিমধ্যে রুট অনুমতি রয়েছে। আপনাকে কল করার দরকার নেই sudo(এটির আঘাত হওয়া উচিত নয় - rootসাধারণত sudoঅনুমতি রয়েছে)।

সুতরাং আপনার স্ক্রিপ্টটি chownএটি লিখুন rootএবং chmodএটিতে 700(যাতে কেবল রুট এটি চালাতে পারে, পড়তে বা সম্পাদনা করতে পারে) এবং তারপরে আপনার ব্যবহারকারীকে [গুলি] এটি sudoers এর মাধ্যমে চালানোর অনুমতি দিন। এটা কাজ করা উচিত।

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


2

পদক্ষেপ 1. যেকোন সম্পাদক ব্যবহার করে বাইন্ড কমান্ড দিয়ে একটি স্ক্রিপ্ট তৈরি করুন। উদাহরণ স্বরূপ:

sudo emacs bind_user_directories.sh

সূচিপত্র:

#!/bin/bash

#NOTE: this file would be placed in /usr/local/sbin/ folder as bind_user_directories.sh
#alternatively it could be placed in /etc/init.d/ ... (I guess)

### BEGIN INIT INFO
# Provides:          bind_user_directories
# Required-Start:    
# Required-Stop:     
# Should-Start:      $named
# Default-Start:     0 2 3 4 5 6 (I guess...)
# Default-Stop:      1
# Short-Description: mount --bind for a user
# Description:       runs mount --bind command for certain pre-defined directories for a specific user
### END INIT INFO

# What is this?
DESC="bind_user_directories"

# See how we were called.
case "$1" in

    start)
        log_progress_msg "bind directories for user..."
        sudo mount --bind /source/path /target/path
        log_progress_msg "done: bind directories for user"
        ;;

    stop)
        log_progress_msg "umount --bind directories for user..."
        sudo umount /target/path
        log_progress_msg "done: unbind directories for user"
        ;;

    restart)
        $0 stop
        sleep 1
        $0 start
        ;;

    *)
        #log_success_msg "Usage: bind_user_directories {start|stop|restart}"
        log_success_msg "Usage: service bind_user_directories <start|stop|restart>"
        exit 1
        ;;
esac

exit 0

পদক্ষেপ 2. bind_user_directories.sh সংরক্ষণ করুন এবং এটি সম্পাদনযোগ্য করুন:

chmod a+x bind_user_directories.sh

পদক্ষেপ 3. এটি / usr / স্থানীয় / এসবিনের মতো উপযুক্ত স্থানে লিঙ্ক করুন:

sudo ln -s bind_user_directories.sh /usr/local/sbin/bind_user_directories.sh

পদক্ষেপ 4. আপস্টার্ট স্ক্রিপ্ট তৈরি করুন:

sudo emacs /etc/init/bind_user_directories.conf

সূচিপত্র:

description "runs mount --bind command for certain pre-defined directories for a specific user"

start on filesystem and net-device-up IFACE!=lo

stop on runlevel [!023456]
console output
respawn
respawn limit 10 5

exec /usr/local/sbin/bind_user_directories.sh start

যদি এটি আপনার পক্ষে কাজ করে তবে দয়া করে আমাকে জানান। আপনি লগ ইন করার পরে বার্তাগুলির জন্য সিস্টেম লগ চেক করতে পারেন ( ধন্যবাদ।


হ্যাঁ এটা কাজ করে! এটি একটি মহান বিকল্প mdmগুলি /etc/mdm/PostLogin/উবুন্টু বিশ্বে স্ক্রিপ্ট !!
অ্যাডাম রাইজকোভস্কি

আপনার সিস্টেমে তেমন কোনও সমাধান আছে? ... সিএফ। Askubuntu.com/questions/847930/…
অ্যাডাম রাইজকোভস্কি

0

লগইনের আগে রুট হিসাবে একটি স্ক্রিপ্ট চালানো

  1. আপনি স্ক্র্যাপটি আপস্টার্ট দিয়ে শুরু করতে পারেন ।

  2. আপনি বিদ্যমান কেডিএম / জিডিএম / ইত্যাদি প্রারম্ভিক স্ক্রিপ্টগুলিতে স্ক্রিপ্ট কল যুক্ত করতে পারেন ।

উদাহরণ: বিষয়: এফএকিউ: অটোস্টার্ট / অটোরুন, পর্যায়ক্রমিক রান


তবে অ্যান্টোনিও সানচেজ যেটি সন্ধান root করছে তা হ'ল কোনও নির্দিষ্ট ব্যবহারকারীর লগ ইন করার সময়ে কীভাবে কোনও স্ক্রিপ্ট চালানো যায়
এলিয়াহ কাগন

স্ক্রিপ্টটি স্বাধীনভাবে চলতে হবে সেশনটি গ্রাফিক বা স্ট্যান্ডার্ড শেল। আমি এই মন্তব্য করতে শিরোনাম আপডেট করেছি। আমি আপস্টার্ট সম্পর্কে কিছু পড়েছি তবে এটি (আপাতদৃষ্টিতে) সহজ কাজটির জন্য জটিল দেখাচ্ছে looks যাইহোক এবং এখন পর্যন্ত আপস্টার্ট এটি করার একমাত্র উপায় বলে মনে হচ্ছে। আপনি যদি আপস্টার্টকে জানেন, তবে এই কাজটি করা কি যথেষ্ট শেখা কঠিন হবে? ধন্যবাদ!
আন্তোনিও সানচেজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.