LoginSignup
0
1

More than 3 years have passed since last update.

samba用のユーザをパスワード付きでシェルスクリプトを用いて登録する

Posted at

背景

世間的にどの程度ファイルサーバとしてsambaを利用しているか分からないが、自身の環境ではsambaを用いてファイルサーバを構築していた。
頻繁に社員の出入りがある関係でsambaのユーザをアクセス権制御を目的として登録や削除を行なっていたのだが、手入力で毎日大量のユーザを登録・削除することに嫌気がさしたため簡単なスクリプトを作った。

環境

  • OS
    Amazon Linux 2
  • samba
    Version 4.10.4

事前準備

以下のコードをコピペで利用する場合は事前に/tools/usrpass.listを作成しておくこと。中身は以下のように1行ごとにユーザアカウント名とパスワードをスペース区切りで事前に用意しておく。

tanaka hogehoge
sato fugafuga

コード

基本的な動作としては以下の通り。

  • リストからユーザを1行ずつ読み込む
  • 読み込んだユーザ名とパスワードは各変数に代入
  • 既にユーザが登録されている場合にはユーザ登録をスキップ
  • 未登録ユーザの場合はsmbpasswdを使ってユーザ登録とパスワードを同時に実行
#!/bin/bash
while read line
do
  #echo $line
  #リストを1行ずつ読み込んでIDとパスワードを変数に格納
  usrname=`echo $line | awk '{print $1}'`
  passwd=`echo $line | awk '{print $2}'`

  #既存のユーザでないか確認するための1行
  pdbedit -L -w | egrep "^""$usrname"":" >> /dev/null

  #既存ユーザの場合は登録処理をスキップ、未登録の場合はワンライナーで登録
  if [ $? == 0 ] ; then
    echo "$usrname is already registered."
  else
    echo "Set $usrname registration and password"
    (echo $passwd ; echo $passwd) | smbpasswd -s -a $usrname
  fi

  echo "Delete the contents of the file!!!"

改善メモ

  • セキュリティの観点から作業後は自動でリストの中身を削除するようにする
  • 削除用の処理も追加して、スクリプトの引数としてaddやdeleteなどを指定することで使い分けることができるようにする
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1