মূলের পক্ষে অ-রুট হিসাবে কোনও কমান্ড চালানো সম্ভব?


10

আমি একজন রুট ব্যবহারকারী এবং ধরুন আমি অন্য কোনও ব্যবহারকারী হিসাবে কোনও অ্যাপ্লিকেশন চালাতে চাই। অন্য ব্যবহারকারীকে স্যুইচ না করেই কি এটি সম্ভব?

কিছুটা এইরকম

# google-chrome user=abc

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


1
আপনি কি সত্যিই বেশিরভাগ সময় রুট হিসাবে চালাচ্ছেন?
কিথ

1
প্রশ্নে @Keith কিছুই বোঝা অধিকাংশ সময়
কোজিরো

বা না, সে কারণেই আমি স্পষ্টতা চাই।
কিথ

হ্যাঁ এইভাবে প্রতিটি ব্যবহারকারীর জন্য প্রথম প্রোগ্রামটি চালানো হয়। সিস্টেমে প্রথম প্রক্রিয়াটি রুট হিসাবে চালিত হয়। সুবিধাগুলি ছাড়ার প্রচুর উপায় রয়েছে যার মধ্যে সুবিধাগুলি বাড়ানো যায় এমন সমস্ত উপায় এবং আরও কিছু।
ctrl-alt-delor

উত্তর:


9

একটি বহনযোগ্য সমাধান হবে:

su abc -c google-chrome

তবে, গুগল-ক্রোমের জন্য এক্স 11 অ্যাক্সেসের প্রয়োজন রয়েছে, আপনি এটি সুরক্ষিত না করা সম্ভবত এটি ব্যর্থ হবে যা বিশেষত রুট হিসাবে চলার সময় খুব খারাপ ধারণা হবে।

যদি এক্স 11 টিউনেলিং / ফরোয়ার্ডিংয়ের অনুমতি দেওয়া হয় তবে আরও ভাল উপায় হবে

ssh -X abc@localhost google-chrome

অথবা

ssh -Y abc@localhost google-chrome

কেন ssh পদ্ধতির আরও ভাল হতে পারে? এটি এখনও রুট ব্যবহারকারীর এক্স সেশন ব্যবহার করে চলবে না?
স্টিভ

1
ব্যবহার @Steve su abc -c google-chromeসম্ভবত প্রথম স্থানে ব্যর্থ হবে কারণ abcroot এর অধিবেশন ব্যবহার করতে পারবেন না, .Xauthorityএর জন্য অপাঠ্য হচ্ছে abc
jlliagre

ওফ আফসোস আমি আপনাকে ভুল বুঝেছি, ভেবেছিলাম আপনারা সুরক্ষা দৃষ্টিকোণ থেকে ভাল হবেন
স্টিভ

10

সংক্ষিপ্ত উত্তর: "হ্যাঁ, এটি সম্ভব"।

আপনি যদি নন-এক্স অ্যাপ্লিকেশন চালাতে চান তবে কেবল নীচের কমান্ডটি ব্যবহার করুন:

sudo -u abc কমান্ড

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

  • আপনার হোম ডিরেক্টরিতে একটি ফোল্ডার তৈরি করুন:

mkdir -p ~ / বিন

এবং আপনার প্রিয় পাঠ্য সম্পাদক ব্যবহার করে নীচে একটি ফাইল তৈরি করুন ~/bin/xsudo:

#!/bin/bash
# (C) serge 2012
# The script is licensed to all users of StackExchange family free of charge
# Fixes/Enhancements to the script are greatly appreciated. 
# 
# SUDO_ASKPASS has to be set to the path of ssh-askpass
# fix the following two lines if your distribution does not match this autodetection
. /etc/profile.d/gnome-ssh-askpass.sh
export SUDO_ASKPASS="${SSH_ASKPASS}"

SUDOUSERNAME="$1"
shift
xauth nlist "${DISPLAY}"|sudo -HA -u $SUDOUSERNAME env --unset=XAUTHORITY \
bash -c "xauth nmerge - ; $*"

তারপরে এটিকে কার্যকর করা:

chmod + x ~ / বিন / এক্সসুডো

এবং এটিকে একইভাবে ব্যবহার করুন sudoতবে কোনও সুইচ ছাড়াই:

এক্সসুডো ব্যবহারকারী অ্যাপ্লিকেশন

উপভোগ করুন।

পিএস অ্যাকাউন্ট xsessionথেকে শুরু rootকরে দৃ strongly়ভাবে নিরুৎসাহিত করা হচ্ছে!


তুমি কি চেষ্টা করেছ? আমি ভয় পাচ্ছি যে এই বিশেষ উদাহরণটি কাজ করতে পারে না।
jlliagre

হ্যাঁ, কারণ অন্য ব্যবহারকারীর অধিবেশন থেকে এক্স অ্যাপ্লিকেশন শুরু করার জন্য আপনাকে প্রদর্শিত অ্যাক্সেসের অনুমতি দিতে হবে। তবে এটিও সম্ভব। দুর্ভাগ্যক্রমে আমার ঠিক মনে হচ্ছে না এটি কীভাবে করা হবে।
সার্জ

@jlliagre তবে, আমি মনে করি কীভাবে একই হোস্টটিতে একটি এক্স অ্যাপ্লিকেশনটি একটি কল্পিত উপায়ে শুরু করতে হবে: ssh -X abc@localhost google-chrome:)
সার্জ

হুম ... আমি 22 মিনিট আগে আপনি ইতিমধ্যে পোস্ট করেছেন এমন মন্তব্যে লিখছি ...
সার্জ

তবে আপনার এখনও অব্যাহত সমাধানের জন্য 6 টি ভোট রয়েছে যখন আমি কেবল একটি সঠিক একটির জন্য পেয়েছি। স্ট্যাক এক্সচেঞ্জ মডেলটি মাঝে মাঝে বেশ হতাশাব্যঞ্জক ...
jlliagre

1

রুট ব্যবহারকারীর লগ ইন করার সময় ক্রোমিয়াম চালানোর একটি উপায় রয়েছে। আপনি যদি এটি সাধারণভাবে খোলেন, এটি আপনাকে "ক্রোমিয়াম মূল হিসাবে চালানো যাবে না" এর মতো একটি ত্রুটি দেয়।

ত্রুটি, ছাড়া এটি চালানোর জন্য right clickআপনার ডেস্কটপে, কমান্ড দিয়ে একটি নতুন লঞ্চার তৈরি করুন: chromium-browser --user-data-dir। আপনি যা চান তার নাম রাখতে পারেন, এটি সংরক্ষণ করুন, আপনি যখন এটি খুলবেন, এটি আপনাকে ক্রোমিয়াম ব্রাউজার দেবে। (উবুন্টু 10.04.4 এলটিএসে কাজ করে)


1
#! /bin/bash
#  (GPL3+) Alberto Salvia Novella (es20490446e)


execute () {
    function="${1}"
    command="${2}"
    error=$(eval "${command}" 2>&1 >"/dev/null")

    if [ ${?} -ne 0 ]; then
        echo "${function}: $error"
        exit 1
    fi
}


executeAsNonAdmin () {
    function="${1}"
    command="${2}"

    eval setPasswordAsker="SUDO_ASKPASS=/usr/libexec/openssh/ssh-askpass"
    run="runuser ${SUDO_USER} --session-command=\"${setPasswordAsker}\" --command=\"${command}\""
    execute "${function}" "${run}"
}


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