আমি কীভাবে কোনও লিনাক্স ব্যবহারকারীর হোম ডিরেক্টরিটি একটি ডিফল্টে ক্লিয়ারিং এবং পুনরায় সেট করতে স্বয়ংক্রিয় করতে পারি?


8

আমি পরের সপ্তাহে দুটি ইউনিক্স কোর্স শেখাতে সহায়তা করছি। ব্যবহারকারীদের একটি RHEL 5 মেশিনে একটি অ্যাকাউন্ট দেওয়া হবে, সেই সময়ে তারা তাদের /homeফোল্ডারে ফাইল যুক্ত করবে , তাদের .bashrcএবং অন্যান্য ডটফাইলগুলি আপডেট করবে এবং পরিষ্কার করার জন্য প্রয়োজনীয় অন্যান্য সাধারণ অগোছালোতা সম্পাদন করবে।

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

আমি নিশ্চিত যে আমি একটি শেল স্ক্রিপ্ট লিখতে পারি যা একটি চালিত করে su -u $USER_IDএবং তাদের হোমডিরের ভাল একটি "মূল" সেট রেখে দেয় এবং এটি খুঁজে পাওয়া অন্য কিছু সরিয়ে দেয়। এমন কি অন্য সরঞ্জামগুলি রয়েছে যা আমাকে এই পরিষ্কার / পুনরায় সেট করার ক্রিয়াকলাপে সহায়তা করবে? পুতুল, শেফ বা অন্যান্য সরঞ্জামগুলির সাথে আমার কোনও অভিজ্ঞতা নেই। তারা কি এই জাতীয় কিছু করতে সহায়ক হবে?

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


যদি আপনি এটি শেখান আপনি সম্ভবত এটি ইতিমধ্যে জানতে পারবেন, তবে লিনাক্স ইউনিক্স নয়। নামটি লিনাস থেকে এসেছে, তবে এটি [এল] ইনক্স [আই] এস [এন] ওট [ইউ] নী [এক্স] এর একটি সংক্ষিপ্ত রূপও রয়েছে।
mailq

যথেষ্ট সত্য। আমি এটি প্রতিফলিত করতে শিরোনাম পরিবর্তন করেছি।
ম্যাথিউইসটিলে

উত্তর:


12

সাহায্য করার অনেক উপায় রয়েছে:

  • সম্পূর্ণ হোম ডিরেক্টরি মুছে ফেলুন এবং হোম /etc/skelফাইলির পিছনে সমস্ত ফাইল অনুলিপি করুন । পরে অনুমতিগুলি পরিবর্তন করুন।
  • সিস্টেমটিকে ভার্চুয়াল মেশিনে রাখুন, একটি স্ন্যাপশট তৈরি করুন এবং পাঠ 1 এর পরে স্ন্যাপশটে ফিরে আসুন
  • RHEL এ কিওস্ক মোডের মতো কিছু সন্ধান করুন। উবুন্টুর এমন কিছু রয়েছে যা লগঅফের সময় স্বয়ংক্রিয়ভাবে বাড়িটি পুনরুদ্ধার করে
  • বাড়িটি একটি বিটিআরএফএস ফাইল সিস্টেমে রাখুন, একটি স্ন্যাপশট তৈরি করুন এবং পাঠ 1 পরে ফিরে আসুন
  • tar পাঠ আগে হোম dir, পরে বাড়ি মুছুন, থেকে পুনরুদ্ধার tar
  • ...

এবং আপনি যদি পরের সপ্তাহে ফলাফল চান তবে পুতুল / শেফের মতো অন্যান্য সরঞ্জামগুলি শিখিয়ে নেওয়া একটু বেশিই।


ধন্যবাদ। আমি সম্ভবত একটি চালনা করব tarএবং পুনরুদ্ধার করব এবং যখন আমি সময়ের সঙ্কটের নিচে থাকি না তখন পুতুলের মতো একটি সরঞ্জাম শিখতে চেষ্টা করব।
ম্যাথিউসটিলে

4

আসুন বলি যে আপনার সমস্ত শিক্ষার্থীর 1000 থেকে 65000 এর মধ্যে একটি ইউআইডি ছিল

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

# see what will happen.
awk 'BEGIN{FS=":"} $3 >= 1000 && $3 <=65000 { print "rsync --delete -v -r /etc/skel/ " $6 "/ ; chown -R " $1 ":" $1 " " $6;}' /etc/passwd

# actually run the commands to reset all users matched by awk.
bash <( awk 'BEGIN{FS=":"} $3 >= 1000 && $3 <=65000 { print "rsync --delete -v -r /etc/skel/ " $6 "/ ; chown -R " $1 ":" $1 " " $6;}' /etc/passwd )

2

আপনি যদি আপনার লগইন পরিচালকের জন্য জিডিএম ব্যবহার করেন তবে আপনি এই ফাইলটির মতো কিছু যুক্ত করতে পারেন: / ইত্যাদি / জিডিএম / পোস্টসেশন / ডিফল্ট

#!/bin/sh

if [[ "$USER" != "" ]]; then
   rm -rf /home/$USER
   cp -r /etc/skel /home/$USER
   chown -R $USER:$USER /home/$USER
fi

1

অ্যাকাউন্ট ফাইলগুলির "আসল" সেটটি সাধারণত ইউনিক্স সিস্টেমে / ইত্যাদি / স্কেলের অধীনে থাকে।

এগুলি ছাড়া, ক্লিনআপটি স্বয়ংক্রিয় করার কোনও সরঞ্জাম আমি জানি না। আমি সম্ভবত কিছু সহজ বাশ স্ক্রিপ্ট লিখে শেষ করব।


1

এটা চেষ্টা কর

#!/bin/bash

BASEDIR=/home

# error codes
E_OK=0
E_NOK=1

function handle_error
{

CODE=$1
ACTION=$2
INV=$3

# INV means to invert the handling logic

if [ -z $INV ]; then
  if [ $CODE -ne 0 ]; then
    echo "error: $ACTION"
    exit $E_NOK
  fi
else
 if [ $CODE -eq 0 ]; then
    echo "error: $ACTION"
    exit $E_NOK
  fi
fi

  return $E_OK
}


function print_usage()
{

  echo "usage: reset-homedir.sh USERNAME"

}
# target user and target dir
TUSER=$1
TDIR=$BASEDIR/$TUSER

if [ -z $TUSER ]; then
  print_usage
  exit 0
fi

getent passwd $TUSER >& /dev/null
RC=$?
handle_error $RC "user $TUSER does not exist"

TGROUP="`id -gn $1`"

if [ ! -d $TDIR ]; then
  echo "error: target directory $TDIR does not exist"
  exit 1
fi

# you don't want to delete user mounted stuff do you?
MOUNTS="`mount |grep $TDIR`" >& /dev/null
RC=$?
handle_error $RC "there are mounted filesystems below $TDIR" TRUE


ps -u $TUSER >& /dev/null
RC=$?
handle_error $RC "user $TUSER is logged in" TRUE

echo
echo "$TDIR will be reset to the default state - ALL DATA WILL BE LOST"
echo
echo "-- press ENTER to continue or CTRL+C to abort --"
read dummy

# we did our best to check for unwanted situations
rm -rf $TDIR
# creates a new one
cp -R /etc/skel $TDIR
chown -R $TUSER:"$TGROUP" $TDIR

echo Done.

0

এমন কিছু দুর্দান্ত সরঞ্জাম থাকতে পারে যা সাহায্য করবে, তবে আমি সম্ভবত (ক) পছন্দসই জিনিস একটি গিট রেপোতে রেখেছি এবং (খ) একটি স্ক্রিপ্ট লিখি যা ব্যবহারকারীদের উপর পুনরুক্তি করে এবং আরএম এর পছন্দসই জিনিসগুলি গিট রেপো থেকে টানতে পারে ।


-2

এটি উবুন্টু জিনোমের জন্য কাজ করে: পিকো / অ্যাসার / লোকাল / বিন / ক্ল্যানআপ.শ

আরএম-আরএফ / বাড়ি / ব্যবহারকারী / ডাউনলোড / *

আপনি যদি দস্তাবেজগুলি অপসারণ করতে চান তবে একই কাজ করুন

chmod 511 /usr/local/bin/cleanup.sh প্রস্থান করুন

পিকো / ইত্যাদি / জিডিএম / পোস্টসেশন / ডিফল্ট

! / বিন / ব্যাশ

/usr/local/bin/cleanup.sh প্রস্থান 0

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