একটি RPM স্পেস মধ্যে সেবা অ্যাকাউন্ট পরিচালনার


14

আমি আমাদের লেখা একটি পরিষেবা জন্য একটি আংশিক সম্পূর্ণ RPM স্পেক দেওয়া হয়েছে। এটি যতদূর প্রয়োজনীয় ডিরেক্টরি তৈরি করে, ফাইল কপি করে, অনুমতি সেটিংস ইত্যাদি পায়, তবে এটি প্রয়োজনীয় সিস্টেম অ্যাকাউন্টটি তৈরি করে না যা পরিষেবাটি চলবে। আমাকে বলা হয়েছিল যে RPM এর যত্ন নিতে এটি সর্বোত্তম, তাই আমি যোগ করেছি

Requires(pre): /usr/sbin/useradd

%pre
useradd -r -d /path/to/program -s /bin/false myservice

এটি ব্যবহারকারীর অ্যাকাউন্ট (এবং সংশ্লিষ্ট গোষ্ঠী) তৈরিতে সফল হয়েছে, তাই পরে যখন এটি পরিষেবা ফাইলগুলিতে মালিকানা / অনুমতিগুলি সেট করার চেষ্টা করে, তখনও এটি সফল হয়।

আমার বর্তমান সমস্যা হল, একটি) ব্যবহারকারীর অ্যাকাউন্ট ইতিমধ্যে বিদ্যমান থাকলে, RPM ইনস্টল ব্যর্থ হয় কারণ useradd ব্যর্থ (কারণ ব্যবহারকারী ইতিমধ্যে বিদ্যমান); এবং খ) আমি কিভাবে জানি না rpm -e myservice এছাড়াও যুক্ত ব্যবহারকারী এবং গ্রুপ মুছে ফেলুন।


//, আপনি FPM ব্যবহার বিবেচনা করবে?
Nathan Basanese

উত্তর:


17

আমি আসলে এই স্বাধীনভাবে সমাধান, অন্যান্য RPM চশমা এ খুঁজছেন যে একই জিনিস। আপনি যদি শুধুমাত্র ব্যবহারকারী (শর্তসাপেক্ষে) যুক্ত করতে চান তবে ইগনাসিওর লিঙ্কটি ব্যবহার করুন। আমি এটা করেছি:

Requires(pre): /usr/sbin/useradd, /usr/bin/getent
Requires(postun): /usr/sbin/userdel

%pre
/usr/bin/getent group myservice || /usr/sbin/groupadd -r myservice
/usr/bin/getent passwd myservice || /usr/sbin/useradd -r -d /path/to/program -s /sbin/nologin myservice

%postun
/usr/sbin/userdel myservice

এটি নিশ্চিত করে যে RPM "নিজের পরে পরিষ্কার করে" তবে অ্যাকাউন্টটি ইতিমধ্যে বিদ্যমান থাকলেও ইনস্টল করার ক্ষমতা সরবরাহ করে।


13
যদিও এটি প্রশ্নের উত্তর দেয়, তবে ফেডোরা লিঙ্কে নোটটি পড়ার যোগ্য লিংক ইগনাসিও দ্বারা পোস্ট করা হয়েছে কেন ব্যবহারকারী / গোষ্ঠী সরানো পছন্দসই নয়।
CoverosGene

1
একটি ইউআইডি এবং জিআইডি পুনঃব্যবহারের সমস্যা রয়েছে (যখন মুছে ফেলা ব্যবহারকারীর সর্বোচ্চ ইউআইডি / জিআইডি থাকে), এটি ব্যবহারকারীদেরকে একটি খারাপ ধারণাগুলির স্বয়ংক্রিয় ব্যবহার করে তোলে।
Bruno9779

আমার CentOS 6.7 এ আমি / usr / sbin / groupadd কমান্ডটি মুছে ফেলেছি কারণ useradd কমান্ডটি নিজেই গোষ্ঠী তৈরি করবে। একই নামের একটি গ্রুপ ইতিমধ্যে বিদ্যমান থাকলেও useradd একটি ত্রুটি সঙ্গে প্রস্থান করা হবে।
Raffael

rpmlint রিপোর্ট "W: বিপজ্জনক-কমান্ড-ইন-% postun userdel" যদি আপনি এটি ব্যবহার করেন
Rfraile

4

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

Requires(pre): /usr/sbin/useradd, /usr/bin/getent
Requires(postun): /usr/sbin/userdel

%pre
/usr/bin/getent group myservice > /dev/null || /usr/sbin/groupadd -r myservice
/usr/bin/getent passwd myservice > /dev/null || /usr/sbin/useradd -r -d /path/to/program -s /sbin/nologin -g myservice myservice

%postun
/usr/sbin/userdel myservice

আমি অবাঞ্ছিত echos উপেক্ষা উপেক্ষা / dev / null থেকে পুনঃনির্দেশিত।


3

দুটি পূর্ববর্তী উত্তরগুলির মধ্যে কোনও উত্পাদন প্রস্তুত হয় কারণ প্যাকেজটি আপগ্রেড থাকলে ঐ পদ্ধতিগুলি ব্যবহারকারীকে মুছে ফেলবে। Yum নতুন প্যাকেজ ইনস্টল করে তারপর পুরানো প্যাকেজ মুছে ফেলে। এটি একটি ব্যবহারকারী ছাড়া আপনি ছেড়ে চলে যাবে। ভালো না!

পরিবর্তে এই পদ্ধতি ব্যবহার করুন:

%postun
case "$1" in
   0) # This is a yum remove.
      /usr/sbin/userdel myservice
   ;;
   1) # This is a yum upgrade.
      # do nothing
   ;;
 esac
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.