Linuxユーザーの複製(他のユーザーに基づいてユーザーをコピー)

Linuxユーザーの複製(他のユーザーに基づいてユーザーをコピー)

他のシステムユーザー(グループ、権限、特権、および設定は同じ)の正確なコピーですが、ユーザー名、パスワード、およびホームディレクトリが異なる新しいシステムユーザーを作成する方法は?

答え1

このスクリプトは次のことを行います(説明に従って更新されます)。

#!/bin/bash
SRC=$1
DEST=$2

SRC_GROUPS=$(id -Gn ${SRC} | sed "s/ /,/g" | sed -r 's/\<'${SRC}'\>\b,?//g')
SRC_SHELL=$(awk -F : -v name=${SRC} '(name == $1) { print $7 }' /etc/passwd)

sudo useradd --groups ${SRC_GROUPS} --shell ${SRC_SHELL} --create-home ${DEST}
sudo passwd ${DEST}

ソースユーザーのグループ(ログイン名と同じグループを除く)とシェルをインポートし、同じシェルとセカンダリグループを使用して新しいユーザーを作成します。

Usage: clone-user src_user_name new_user_name

エラーチェックはありませんが、迅速で汚れたレプリケーションスクリプトです。

答え2

  • /etc/passwd を編集し、正確なコピーを希望するユーザー行をコピーします。ログイン名、実際の名前、およびホームディレクトリを変更します。
  • /etc/shadow を編集し、元のユーザーの行を再度コピーします。ログイン名を編集してください。
  • 最後に、passwd newuserパスワードを変更してみてください。

システム側では、両方のユーザーが同じであるため(同じUID)、あるユーザーが別のユーザーのホームディレクトリに移動して自由に変更できます。

答え3

Linux Mint 18 Mateの場合

Mike Andersonのスクリプトに従って、新しいユーザー、古いユーザー、新しいパスワードについて尋ねる質問を作成し、古いユーザーのホームディレクトリをコピーし、新しいホームディレクトリの古いユーザー名のすべてのインスタンスを新しいユーザー名のインスタンスに置き換えました。ユーザー名。

useradd行に関連する私のスクリプトの主な違いは、Linux Mint 18でpasswdが失敗し、chpasswdに置き換えられることです。パスワードを有効にするには、echo $newuser:$ newpassword | chpasswdという新しい行を作成しました。

もう1つの違いは、--create-homeを操作できないため、新しい行でmkdirを使用したことです。

巨大な古いユーザーのホームディレクトリがある場合は注意してください。

必要なものだけを取り、残りを残してください。コピーしたすべてのコードに対する責任はあなたにあります。バックアップコピーを作成してください!

#!/bin/bash

# clone a user
# usage:
# if you named this as below then
# change to the directory and run this command
# sudo bash clone-user.sh

echo "============="
echo "this script will create a new user"
echo "based on an existing user's data"
echo 
echo "You will be shown a list of users who can currently log on"
echo "Remember which user you would like to clone."
echo "You will be asked for the new user's name, their password"
echo "and the old user to clone".
echo "============="
echo 

echo -n "New user's name: "
read newuser

echo -n "New user's password: "
read newpassword

echo 

echo "Current users you can clone:"
echo "----"
awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd
echo 

echo -n "Old user to clone: "
read olduser

echo 
echo "You have selected: "
echo "----"
echo "new user: $newuser"
echo "new user password: $newpassword"
echo "old user: $olduser"
echo 

olduser_GROUPS=$(id -Gn ${olduser} | sed "s/${olduser} //g" | sed "s/ ${olduser}//g" | sed "s/ /,/g")
olduser_SHELL=$(awk -F : -v name=${olduser} '(name == $1) { print $7 }' /etc/passwd)

echo "old user groups: "
echo "----"
echo $olduser_GROUPS
echo "olduser shell: "
echo $olduser_SHELL
read -rsp $'Press any key to continue or ctrl-c to exit...\n' -n1 key

useradd --groups $olduser_GROUPS --shell $olduser_SHELL $newuser

echo $newuser:$newpassword | chpasswd

read -rsp $'ready to make home direcoty -- ctrl-c to exit...\n' -n1 key

mkdir /home/$newuser
chown -R $newuser:$newuser /home/$newuser

echo 
echo "Script should be done now."
echo 
echo "Do you see your new users name below?"
echo 
awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd

echo 
echo "We are now going to copy the old user's home folder to the new user"
echo "then change ownership to the new user"
echo 
read -rsp $'Ready to copy home folder --- or ctrl-c to exit...\n' -n1 key

rsync -aPv /home/$olduser/. /home/$newuser/
chown -R --from=$olduser $newuser:$newuser /home/$newuser

echo 
echo "Now we are going to change the names of files and folders to the new user"
echo 

grep -rlI $olduser /home/$newuser/ . | sudo xargs sed -i 's/$olduser/$newuser/g'

echo 
echo "Done now."
echo 
read -rsp $'Press any key to exit...\n' -n1 key
echo 
echo 

このスクリプトを完成するのを助けてくれた世界中の皆さんに感謝します。オレゴンのジョン

答え4

/usr/local/bin/clone-usermod

#!/bin/bash
SRC=$1
DEST=$2

SRC_GROUPS=$(id -Gn ${SRC} | sed "s/ /,/g" | sed -r 's/\<'${SRC}'\>\b,?//g')
#SRC_SHELL=$(awk -F : -v name=${SRC} '(name == $1) { print $7 }' /etc/passwd)

usermod --groups ${SRC_GROUPS}  $2

PS /user/local/bin/clone-usermodと入力した人は「コード」としてリストされているので、人々がそれを生成するために必要なファイルが何であるかを知ることができます。また、ファイルを実行可能にする必要があることを示していません。タイプミスではなく特定のパスを読んでいないことは明らかです。だからあなたはLinuxに精通したユーザーではないので、私はあなたの失礼を無視します。具体的な質問がある場合はお問い合わせください。判断したい場合は続けてください...これはあなたが探しているロボットではありません。ここでは見ることはあまりありません。私は本当に興味がありません。良い一日をお過ごしください。

関連情報