প্রোগ্রামক্রমে নতুন ব্যবহারকারীদের জন্য ক্লোন / ইত্যাদি / স্কেল করুন


11

/etc/skelএমন একটি ফোল্ডার যা নতুন ব্যবহারকারীদের জন্য ক্লোন করা হবে। /etc/skelফোল্ডার থেকে কী অনুলিপি করতে হবে তার কোনও নিয়ম আমরা সংজ্ঞায়িত করতে পারি ?

উদাহরণস্বরূপ, আমি এমন একটি উপায় খুঁজছি যা যদি কোনও ব্যবহারকারী তৈরি হয় এবং নামী গোষ্ঠীর সাথে থাকে তবে Aক্লোন /etc/skelফোল্ডার ব্যতীত /etc/skel/not_for_a.txt। সম্ভব?

উত্তর:


11

নোট করুন যে useraddকমান্ড আপনাকে -kবিকল্পটি ব্যবহার করে একটি কাস্টম এসকেইএল ডিরেক্টরি নির্দিষ্ট করতে দেয় । আপনি এগুলি ছাড়া একটি / ইত্যাদি / স্কেল-গ্রুপ-এ ডিরেক্টরি তৈরি করতে পারেন not-for-a.txtএবং তারপরে নতুন ব্যবহারকারীদের তাদের ডিফল্ট গ্রুপ হিসাবে এ হিসাবে যুক্ত করতে পারেন এবং কমান্ডটি ব্যবহার করে তাদের এসকেইএল ডিরেক্টরিটি নির্দিষ্ট করতে পারেন:

useradd username -g groupA -k /etc/skel-for-group-A -m

দেখুন: http://manpages.ubuntu.com/manpages/trusty/man8/useradd.8.html


1
useraddআমার 16.04 সিস্টেমে ম্যান পেজে ডেবিয়ান ভিত্তিক সিস্টেমগুলির জন্য নিরুত্সাহিত করা হয়েছে। যদি এই সতর্কতার কারণ পরিবর্তিত হয় তবে আপনি এটি নিজের উত্তরে যুক্ত করতে পারেন। এছাড়াও 16.04 এ useraddএবং adduserবিভিন্ন অপশন সহ বিভিন্ন প্রোগ্রাম রয়েছে, সম্ভবত আপনি স্বচ্ছতার জন্য আপনার উত্তরটি সম্পাদনা করতে পারেন।
জে স্টার্নস

8
@ জে.স্টারনেস কাস্টম এসকেইল ডিরেক্টরি নির্দিষ্ট করতে adduserকমান্ডে সম্ভব নয় , তাই আমরা ব্যবহার করি useradd। এটি সম্পূর্ণরূপে নিরুৎসাহিত করা হয় না: " useraddব্যবহারকারীদের যোগ করার জন্য একটি নিম্ন স্তরের ইউটিলিটি উপর ডেবিয়ান, প্রশাসক করা উচিত নয়। সাধারণত ব্যবহার adduserপরিবর্তে।" এইরকম অস্বাভাবিক পরিস্থিতিতে এই আদেশটি ব্যবহার করা ঠিক আছে OK
মুকেশ সাই কুমার

8
  1. অতিরিক্ত skelডিরেক্টরি তৈরি করুন ।

    sudo mkdir /etc/skel{A,B}
    
  2. বিষয়বস্তু কপি /etc/skelকরার /etc/skelA

    sudo cp /etc/skel/* /etc/skelA/
    
  3. বিকল্প স্কেল ডিরেক্টরি সামগ্রীগুলি কাস্টমাইজ করুন।

  4. adduserএকটি হোমডির ছাড়া, তবে অন্যথায় স্বাভাবিক সেটিংস সহ। উপবৃত্তিকে যথাযথ সেটিংস সহ প্রতিস্থাপন করুন।

    sudo adduser --no-create-home ... bob
    
  5. mkhomedir_helper বিকল্প স্কেল দির উপর ভিত্তি করে ব্যবহারকারীদের হোমডির তৈরি করতে।

    sudo mkhomedir_helper bob /etc/skelA
    
#!/bin/bash
### a bare bones dumb script to create a user with a homedir based on an alternitive skeldir
adduseropt="--no-create-home --ingroup"
# assumes $1 will be user TODO add sanity check
# Assumes $2 will be alternitive skeldir TODO add sanity check
# assumes $3 will be a group TODO add sanity check
sudo adduser --no-create-home $adduseropt $3 $1
sudo mkhomedir_helper $1 $2

3

adduserকঙ্কাল ডিরেক্টরি থেকে ফাইলগুলি বাদ দেওয়ার সীমিত উপায়ে সমর্থন করে। থেকে man adduser.conf:

SKEL_IGNORE_REGEX
    Files  in  /etc/skel/  are  checked  against this regex, and not
    copied to the newly created home directory if they match.   This
    is  by default set to the regular expression matching files left
    over from unmerged config files (dpkg-(old|new|dist)).

আপনি কমান্ড লাইন থেকে এই রেজেক্স সেট করতে পারবেন না, আপনি --confবিকল্পটি ব্যবহার করে কনফিগার ফাইলটি সেট করতে পারেন । সুতরাং আপনি যেটির অতিরিক্ত অনুলিপিগুলি /etc/adduser.confকেবল তার চেয়ে পৃথক SKEL_IGNORE_REGEXকরতে পারেন এবং সেগুলি ব্যবহার করতে পারেন:

(grep -v '^SKEL_IGNORE_REGEX' /etc/adduser.conf; printf "%s\n" 'SKEL_IGNORE_REGEX="not_for_a.txt"') > /etc/adduser_A.txt
sudo adduser --conf /etc/adduser_A.txt ...

3

adduserকমান্ড ফাইল মুছে ফেলার মত কোন সেটআপ করতে একটি সাইট নির্দিষ্ট স্ক্রিপ্ট রান করতে পারেন। যতক্ষণ না এটি সম্পূর্ণ অনুলিপি দিয়ে শুরু করা এবং তারপরে কিছু ফাইল মুছতে সক্ষম হয় ততক্ষণ এই পদ্ধতির আপনার পক্ষে কাজ করতে পারে।

থেকে adduser (8) man পৃষ্ঠা :

যদি ফাইলটি /usr/local/sbin/adduser.local বিদ্যমান থাকে তবে কোনও স্থানীয় সেটআপ করার জন্য এটি ব্যবহারকারীর অ্যাকাউন্ট সেট আপ হওয়ার পরে কার্যকর করা হবে। যুক্তিগুলি adduser.localএগুলি দেওয়া হয়:

ব্যবহারকারীর নাম uid gid হোম ডিরেক্টরি

সুতরাং আপনাকে যা করতে হবে তা হ'ল একটি স্ক্রিপ্ট লিখুন যা চারটি পরামিতি নেয় এবং এটি আপনার প্রয়োজনীয় ফাইলগুলি সরিয়ে দেয় use এটি হিসাবে সংরক্ষণ করুন /usr/local/sbin/adduser.localএবং এটি নির্বাহযোগ্য ( chmod a+x) হিসাবে চিহ্নিত হয়েছে তা নিশ্চিত করুন ।

আপনাকে শুরু করার জন্য এখানে কিছু:

#!/bin/bash
## Site-specific setup for newly-created users.
## adduser(8) will call this script after setting up a new user.

set -euo pipefail
if [[ "$#" != 4 ]]; then
  echo "usage: $0 username uid gid home" > /dev/stderr
fi
NEW_USERNAME="${1:?}"
NEW_UID="${2:?}"
NEW_GID="${3:?}"
NEW_HOME="${4:?}"

# The groups command outputs a space-separated list of group names
IFS=' '
for group in $(groups "${NEW_USERNAME}"); do
   case "${group}" in
     a)
       [[ "${VERBOSE}" > 0 ]] && echo Removing file for a
       rm "${NEW_HOME}/not_for_a.txt"
       ;;
     b)
       [[ "${VERBOSE}" > 0 ]] && echo Removing dir for b
       rm -r "${NEW_HOME}/not_for_b/"
       ;;
     *)
       [[ "${VERBOSE}" > 1 ]] && echo No special setup required for $group
       ;;
   esac
done

আকর্ষণীয় অংশটি, যা আপনি সম্পাদনা করতে চাইবেন তা হ'ল লাইনগুলি এটির মতো দেখাচ্ছে:

     a)
       [[ "${VERBOSE}" > 0 ]] && echo Removing file for a
       rm "${NEW_HOME}/not_for_a.txt"
       ;;

আপনি প্রকৃত গ্রুপের নাম এবং আচরণ আপনি পরিবর্তে দেখতে চাই পূরণ করতে পারেন a)এবং rm not_for_a.txt

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