ব্যবহারকারী 1 কে পাসওয়ার্ড ছাড়াই "সু - ইউজার 2" তে অনুমতি দিন


51

আমাকে পাসওয়ার্ড ছাড়াই martinব্যবহারকারীর স্যুইচ করার অনুমতি দেওয়া দরকারmartin-test

su - martin-test

আমি মনে করি এটি কনফিগার করা যায় /etc/pam.d/su। সেই ফাইলটিতে ইতিমধ্যে কিছু লাইন রয়েছে যা নিরবিচ্ছিন্ন হতে পারে। যাইহোক, আমি ব্যবহারকারী যোগ করার ধারণা পছন্দ করি না martinগোষ্ঠীতে wheel। আমি martinস্যুইচ করতে সক্ষম হওয়া ছাড়া আর কোনও সুযোগ দিতে চাই না martin-test। আমিও ব্যবহার করতে চাই না sudo

ব্যবহারকারীর সুবিধাগুলি martinন্যূনতম রাখার সময় এটি করার সর্বোত্তম উপায় কী হবে ?


2
sudoউদাহরণস্বরূপ এটি করা সহজ sudo -u martin-test -i। আপনি বিশেষভাবে জিজ্ঞাসা করার কোন কারণ আছে su?
jordanm

আমি sudoকেবল এই কারণে ইনস্টল করতে চাই না (আমি সাধারণত ব্যবহার sudoকরি না এবং আমি বিশেষত এটি পছন্দ করি না)। এবং আমি মনে করি pamএটি করা আরও পরিষ্কার এবং আরও স্বচ্ছ উপায়।
মার্টিন ভেজিটার

3
@ মার্টিনভেগটার যেমন আপনি স্ক্রিপ্টের উত্তর থেকে দেখতে পাচ্ছেন, কিছু ধরণের প্যাম প্রক্রিয়া ব্যবহারের মাধ্যমে এটি করা খুব কুশ্রী। সত্যিই এই জন্য sudoবোঝানো হয়েছিল। সাধারণত এটি ব্যবহার না করা বাদে আপত্তিগুলি কী?
প্যাট্রিক

1
যদি একটি পরিষ্কার সমাধান দিয়ে সম্ভব হয় pam, আমি এটি পছন্দ করব sudo। যদি sudoএকমাত্র সম্ভাবনা থাকে তবে তার চেয়ে ভাল। আমার আপত্তিগুলি sudoবেশিরভাগ মতাদর্শগত: আমি ব্যবহারকারীদের প্রশাসনের সাথে ধারণাটি পছন্দ করি না sudo foo। আমার যখন প্রশাসন করা দরকার তখন আমি মূল হিসাবে লগ ইন করি। অন্যথায় আমি ব্যবহারকারী হিসাবে লগ ইন, এই দুটি স্বতন্ত্র ভূমিকা মিশ্রিত করা উচিত নয়। এছাড়াও, আমি ইতিমধ্যে pamপরিকাঠামো ইনস্টল করা আছে। আমি অন্য কোনও setuidপ্রোগ্রাম ইনস্টল করতে চাই না যা সম্ভবত সুরক্ষা বাগগুলি প্রবর্তন করতে পারে।
মার্টিন ভেজিটার

5
@ মার্টিনভেগটার আপনাকে sudo fooনির্দিষ্ট কমান্ডের জন্য করতে হবে না do সুডো sudo -sযা শেল চালু করবে। সুডো একটি খুব সাধারণ ইউটিলিটি যার অর্থ এটির সুরক্ষা পুরোপুরি পরীক্ষা করা হয়েছে, কিছু প্যাম ট্রিকির চেয়ে অনেক বেশি। আমি আরও যুক্তি দিয়ে বলব যে কাজের জন্য একটি রুট শেল পাওয়া সুনির্দিষ্ট কমান্ড প্রবর্তনের চেয়ে অনেক বেশি সুরক্ষিত। আপনি যখন শেলটি চালু করেন, আপনি সমস্ত কিছুই রুট হিসাবে চালান । যদি এই জিনিসের কোনওটির (যেমন একটি সাধারণ ls) সুরক্ষার দুর্বলতা থাকে তবে আপনি সবেমাত্র একটি সুরক্ষা গর্ত খুলেছেন।
প্যাট্রিক

উত্তর:


61

আপনার লাইনের ঠিক নীচে নিম্নলিখিত লাইনগুলি যুক্ত pam_rootok.soকরুন /etc/pam.d/su:

auth  [success=ignore default=1] pam_succeed_if.so user = martin-test
auth  sufficient                 pam_succeed_if.so use_uid user = martin

এই লাইনগুলি pam_succeed_if.soমডিউলটি ব্যবহার করে চেকগুলি সম্পাদন করে । আরও দেখুন লিনাক্স-Pam কনফিগারেশন ফাইল সিনট্যাক্স সম্পর্কে আরো জানতে authলাইন।

  • প্রথম লাইন পরীক্ষা করে কিনা লক্ষ্য ব্যবহারকারী হয় martin-test। যদি তা হয় তবে কিছুই ঘটে না ( success=ignore) এবং আমরা বর্তমান ব্যবহারকারীকে পরীক্ষা করতে পরবর্তী লাইনে চালিয়ে যাচ্ছি । যদি এটি না হয় তবে পরবর্তী লাইনটি এড়িয়ে যাবে ( default=1) এবং আমরা যথাযথ প্রমাণীকরণের পদক্ষেপগুলি সহ পরবর্তী লাইনে চালিয়ে যাব।
  • দ্বিতীয় লাইনটি বর্তমান ব্যবহারকারী কিনা তা পরীক্ষা করে martin। যদি এটি হয়, সিস্টেম প্রমাণীকরণ প্রক্রিয়াটিকে সফল হিসাবে বিবেচনা করে এবং ( sufficient) প্রদান করে। যদি তা না হয় তবে কিছুই ঘটে না এবং আমরা যথাযথ প্রমাণীকরণের পদক্ষেপগুলি সহ পরবর্তী লাইনে চালিয়ে যাই।

আপনি suএকটি গোষ্ঠীতেও সীমাবদ্ধ রাখতে পারেন , এখানে গোষ্ঠীটি পাসওয়ার্ড ছাড়াই allowedpeopleকরতে suপারে:

auth sufficient pam_succeed_if.so use_uid user ingroup allowedpeople

1
আপনি যদি কোনও নির্দিষ্ট গোষ্ঠীতে থাকেন তবে আপনি যদি অনুমোদন দিতে চান: যথেষ্ট পরিমাণে পাম_সুসিড_আইফ.সু ব্যবহারকারী গ্রুপ
চিংড়িগাছ

@gnp সুপার থ্যাঙ্কস !! আইসিঙ্গায় এনআরপি নিয়ে কাজ করে বিভিন্ন ব্যবহারকারীর মতো কিছু কমান্ড চালাতে হয় !! অনেক সাহায্য করেছে !!!!!! ধন্যবাদ !!!!!
সারাভানকুমার

@ জিএনপি দয়া করে আমাকে জিজ্ঞাসা
জিজ্ঞাসা /

পরিবর্তনগুলি কীভাবে প্রয়োগ করতে হয় সে সম্পর্কেও তথ্য যুক্ত করে ভাল লাগবে।
কিসলিক

@ কিসলিক আপনার অর্থ কি? প্রয়োজনীয় ফাইলগুলি কীভাবে সম্পাদনা করবেন সে সম্পর্কে নির্দেশাবলীর উত্তরে ...
GnP

12

আপনি গোষ্ঠী পরিবর্তন করতে বা ব্যবহার করতে না চাইলে পাম পর্যায়ে বাহ্যিক স্ক্রিপ্টগুলি সম্পাদন করতে sudoডাকা একটি প্যাম মডিউল ব্যবহার করুন pam_exec

লাইনের /etc/pam.d/suপরে আপনার মধ্যে একটি লাইন যুক্ত করুন pam_rootok.so:

auth       sufficient pam_exec.so quiet /path/to/script

/path/to/script 755 (rwxr-xr-x) এবং নিম্নলিখিত লিখিত সামগ্রীগুলির অনুমতি রয়েছে:

#!/bin/bash
if [ "$PAM_TYPE" == "auth" ] && \
[ "$PAM_USER" == "martin-test" ] && \
[ "$PAM_RUSER" == "martin" ]; then
  exit 0
else
  exit 1
fi

সুতরাং এই লিপিটি সাফল্যের সাথে বিদ্যমান যদি su:

  • প্রমাণীকরণের প্রসঙ্গে বলা হয়,
  • কলিং ব্যবহারকারী martinএবং
  • প্রমাণীকরণের জন্য ব্যবহারকারী martin-test

দেখা:

martin@host:~$ su - martin-test
martin-test@host:~$ exit
martin@host:~$ su - otheruser
Password: ****
otheruser@host:~$ 

1
পাম_অ্যাক্সেস কোনও স্ক্রিপ্টের উপর নির্ভর না করে অনুরূপ কার্যকারিতা সরবরাহ করতে ব্যবহৃত হতে পারে। (এটিই পাম_অ্যাক্সেসটি করা হয়েছিল)
jsbillings

1
@jsbillings আপনি কি (কিছু বিবরণ দিয়ে) অন্য উত্তরটি তৈরি করবেন?
হউক লেগেছে

1
আমার পরিস্থিতিটি /etc/pam.d/suব্যবহার করতে কীভাবে আমার পরিবর্তন করতে হবে pam_access?
মার্টিন ভেজিটার

3
@jsbillings আসলে এটি pam_accessকরতে পারে না। suপ্যাম স্ট্যাকের মধ্য দিয়ে কখন যাচ্ছেন, এটি আপনি ব্যবহার করছেন এমন ব্যবহারকারী হিসাবে করছেন, আপনি যে ব্যবহারকারী থেকে পরিবর্তন করছেন তা নয়। তাই আপনি যদি যেমন একটি নিয়ম যোগ + : martin : ALL, এটা অনুমতি দেবে যে কেউ পরিবর্তন করতে martin । এমনকি যদি আপনি পরিবর্তন martinকরতে martin-test, এটা এখনও কেউ এটা করতে দেওয়া হবে না। আপনি যে ব্যবহারকারী থেকে এসেছেন এবং যে ব্যবহারকারীতে আপনি পরিবর্তন করছেন সেগুলি উভয়ই আপনাকে বিশ্লেষণ করতে হবে। সত্যিই, এটি হ'ল sudo...
প্যাট্রিক

0

যদি আপনার রুট অ্যাকাউন্টে অ্যাক্সেস না থাকে তবে আপনি কোনও কমান্ড চালাতে ব্যবহার করতে চান এমন ব্যবহারকারীর পাসওয়ার্ড থাকলে আপনি নিম্নলিখিতটি করতে পারেন।

  • এটি আপনাকে পুরোপুরি পাসওয়ার্ড জিজ্ঞাসা করবে: su - টোটো-সি হোয়ামি
  • এটি করবে না: ssh টোটো @ লোকালহোস্ট হোয়ামি

টোটোর অনুমোদিত_কিগুলিতে আপনার সর্বজনীন কীটি কেবল ইনস্টল করুন


চিন্তাশীল উত্তর .. তবে, কেউ যে কমান্ডটি চালানোর চেষ্টা করতে চায় তা ইতিমধ্যে মেশিনে রয়েছে। সুতরাং একই সার্ভারে ssh'ing কোন লাভ নেই।
রাজা আনবাজগান

-1

আমার সহজ সমাধানটি হ'ল:

sudo login -f martin-test

আপনি যদি কোনও মূল্যে সুডো এড়াতে চান তবে আমার মনে হয় এটি কোনও স্ক্রিপ্টে রাখা সম্ভব হবে:

  1. রুটের মালিকানাধীন এবং মূল অধিকার সহ ( সেটুইড পতাকা ব্যবহার করে )
  2. প্রত্যেকের দ্বারা নির্বাহযোগ্য, কোনও সুডো ছাড়াই।

তবে এটিকে আসলে কাজ করতে আমি chown rootআর chmod +s ToTest.shবিটগুলি বের করতে পারি না :

#!/usr/bin/env bash
echo howdy, I am $(whoami)
sudo login -f martin-test

প্রতিধ্বনি আমাকে যেমন বলেছে তেমনি আমি এখনও আমার সাধারণ ব্যবহারকারীর মতো চলে। এবং এটি এখনও sudo পাসওয়ার্ড প্রয়োজন। যদি এটি রুট হিসাবে চলতে থাকে sudoতবে শেষ পংক্তিতে কেউ এটি করতে পারে ...


শেল (বা অন্য কোনও স্ক্রিপ্ট) স্ক্রিপ্টের সেটুইড পতাকা লিনাক্সে এবং ভাল কারণে কাজ করবে না। লক্ষ্য করুন যে একটি ওয়ার্কিং স্যুইড পতাকাযুক্ত উপরের স্ক্রিপ্টটি তত্ক্ষণাত একটি ফাঁদ হবে: এটি "এনভি" এর মাধ্যমে বাশকে জড়িত করে (বেশ স্ব-পরাজিত করে, কারণ যদি আপনি ধরে নেন যে কোথায় bashআছেন তবে আপনি কেন অনুমান করেন যে কোথায় envবা এমনকি এটি বিদ্যমান কিনা?)। তবে শেষ পর্যন্ত, আপনি জানেন না যে bashএটি ঠিক কী হবে। এটি আমন্ত্রণকারী ব্যবহারকারীর ডিরেক্টরি থেকে আসতে পারে এবং তার উত্স কোড থেকে এক মিনিট আগে সংকলিত হয়েছে। তুমি দেখতে পাচ্ছ আমি কোথায় যাচ্ছি? অথবা ব্যবহারকারী ওভাররাইড করতে পারে whoami...
ডেভিড টনহোফার

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