এক লাইনে ইউনিক্স গ্রুপে একাধিক ব্যবহারকারী যুক্ত করুন


13

উপর CentOS 6.5 (এবং সম্ভবত থাকে) লিনাক্স, আমি একটি গ্রুপ তৈরি করতে পারেন:

sudo groupadd mygroup

এবং এতে বেশ কয়েকটি ব্যবহারকারী যুক্ত করুন:

sudo usermod -a -G mygroup userA
sudo usermod -a -G mygroup userB
sudo usermod -a -G mygroup userC

আমার বিশেষ ক্ষেত্রে ব্যবহারকারীর সংখ্যা হ'ল 20। আমি কীভাবে ওয়ান-লাইনার ব্যবহার করতে পারি:

sudo usermod -a -G mygroup userA userB userC

এমনকি লুপের জন্য ব্যবহার করা ভাল হবে তবে আমি বাশ বিশেষজ্ঞ নই, তাই ভাবছি।

bash  group 

উত্তর:


12

যদি gpasswdউপলভ্য থাকে (সোলারিস বাদে বেশিরভাগ বিতরণে থাকা উচিত) আপনি গ্রুপের নাম অনুসারে কমা দ্বারা পৃথক করা ব্যবহারকারীদের তালিকা সরবরাহ করতে পারেন:

gpasswd -M userA,userB,userC mygroup

1
এই এক উত্তর হওয়া উচিত।
ivanleoncz

4
মনে রাখবেন যে এই সমাধানটি বিদ্যমান গ্রুপ সদস্যদের তালিকাটি ওভাররাইট করে। এই "যোগ" ব্যবহারকারীদের মত চেয়ে ভিন্ন জিনিস usermod -aG mygroupআছে।
মাইকেল 17


2

এটি অবস্থানগত পরামিতিগুলির সাথে একটি প্রাথমিক স্ক্রিপ্ট, নামক কোনও ফাইলে নীচের কোডটি সংরক্ষণ করুন fill_group.sh এবং এটি কার্যকর করার যোগ্য করুন chmod +x fill_group.sh

তারপরে এটি একটি PATH ডিরেক্টরিতে যুক্ত করুন ( /usr/local/bin) বা এটি যেখানে অবস্থিত সেখানে একই ডায়ারে চালিত করুন ./fill_group.sh <group_name> <user1> ... <userN>

#!/bin/sh
#
# Name: fill_group.sh
# 
# Usage: 
# fill_group.sh <group_name> <user1> <user2> ... <userN>
#
# Description:
# add users to specific group passed as first parameter. 
# If the group doesn't exists add it to the system.
set -eu

# Exit if there is not at least 2 args (group,user1)
if [ $# -lt 2  ]; then exit 5; fi

group="${1}"; shift # extract group from arguments
if ! egrep --quiet "^${group}:" /etc/group; then
  sudo groupadd "${group}"
fi

for user in "${@}"; do
    sudo usermod -a -G "${group}" "${user}"
done

2
গোষ্ঠীটি বৈধতা দেওয়ার জন্য আরেকটি উপায়:if ! getent group "$group" >/dev/null
গ্লেন জ্যাকম্যান

@glennjackman: আপনাকে ধন্যবাদ, আমি এখনও অবধি getentকমান্ড মিস করেছি (আমার সিস্টেমে পরিদর্শন করা সমস্ত ডাটাবেসের জন্য একটি দুর্দান্ত স্ব-পরিপূর্ণ বৈশিষ্ট্যও রয়েছে ))
জিউসেপে রিকুপেরো

খুব জটিল, আমি কমান্ড লাইন থেকে এটি সম্পাদন করতে চাই।

@HordonFreeman: স্ক্রিপ্ট যখন সংরক্ষিত একটি oneliner যেমন মৃত্যুদন্ড কার্যকর হয়: fill_group.sh <group> <user1> ... <userN>। আপনি কি সত্যিই একটি oneliner চাইলে: for user in "userA userB userC"; do sudo usermod -a -G "groupName" "${user}"; doneঅথবা আপনি একটি ফাইলে প্রতি লাইনে একটি ব্যবহারকারী তালিকা এক নামক আছে যদি users.list:group=mygroup && while read user; do sudo usermod -a -G "${group}" "${user}"; done < users.list
: Giuseppe Ricupero

1

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

ডেবিয়ান এবং উবুন্টুতেও উপলভ্য হতে পারে।


0

টম্বার্ট এবং মাস্টারফুলের উত্তর সম্পর্কে। পুরানো ডিস্টোগুলির জন্য (এসইএলএস 11 এসপি 1), ছায়া সরঞ্জামগুলি কিছুটা আলাদা। ম্যানুয়ালগুলি কোনও সংস্করণ নম্বর দেয় না, তবে এটি ২০০৯-২০১০ তারিখের।

Gpasswd এ -M বিকল্পটি বিদ্যমান নেই, (তবে অন্য কোনও কিছুর জন্য gpasswd প্রয়োজন)। সুতরাং মাস্টারফুল দ্বারা লুপ বিকল্পের জন্য যেতে হবে। তবে এখানে -a এর অস্তিত্ব নেই, পরিবর্তে -A -a & -G হিসাবে আচরণ করে।

আমি লোডগুলির সিস্টেমগুলির অ্যাক্সেস রোলআউট করার জন্য এটি করছি এবং আমার সম্পূর্ণ "গোষ্ঠী তৈরি করুন এবং পপুলেট করুন" এ পর্যন্ত দেখায়:

/usr/sbin/groupadd -g GID### mygroup
gpasswd -r mygroup
for user in userA userB userC; do sudo usermod -A mygroup "$user"; done

সুতরাং, সেট জিআইডি সহ গ্রুপ তৈরি করুন, আনপাসওয়ার্ড করুন / নতুন গ্রুপটি সক্রিয় করুন, কিছু ব্যবহারকারী যুক্ত করুন।

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