GNU/Linux >> Linux の 問題 >  >> Ubuntu

Sudoを必要とするBashスクリプトに一度だけパスワードを入力する方法は?

データ

  • このマシンのオペレーターユーザーに自分のcifs共有をマウントしてもらいたい
  • sudoers ファイルにはすでに/bin/mount -t cifs //*/* /media/* -o username=*が含まれています すべてのオペレーターのためのコマンド
  • ユーザーにcifsをマウントしてもらいたい 2回ではなく、1回だけパスワードを入力するスクリプトを介して共有します。
  • sudoパスワードとcifsパスワードは同じです。

私がすでに持っているもの

このスクリプトは機能します:

#!/bin/bash
sudo 'mount -t cifs //192.168.1.1/home /media/$USER/home -o username=$USER'

ただし、ユーザーは同じパスワードを2回入力する必要があります!

  • sudoに1回
  • マウント自体に1回

これも機能します:

#!/bin/bash
echo -n Password: 
read -s szPassword
echo $szPassword | sudo -S sh -c 'echo $szPassword | mount -t cifs //192.168.1.1/home /media/$USER/home -o username=$USER'

ただし、これには、すべてのオペレーターユーザーがsudo shできるようにする必要があります。 (主要なセキュリティ問題)

質問

cifs共有をbashにマウントする方法 ¹shを入れずに sudoersで ファイル永続的/一時ファイルの作成も???

注1: Python、Perl、C、Go、…お願いしますか?
注2: sudoersからパスワードを削除できることはわかっています ファイルですが、利便性を損なうことなく、セキュリティを緩めるのではなく、強化しようとしています…

承認された回答:

代わりに、sudoをsudo scriptとして使用する呼び出しをユーザーに行わせる必要があります。 。スクリプトがrootとして実行されているかどうかを確認し、要求されていない場合は

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root, use sudo "$0" instead" 1>&2
   exit 1
fi

ユーザーのパスワードを取得しようとしないでください。


Ubuntu
  1. Sudoパスワードタイムアウトを変更する方法

  2. Bash スクリプト - ユーザー入力の読み取り方法

  3. bash スクリプトを実行するには?

  1. LinuxBashシェルスクリプトで暗号化されたパスワードを使用する方法

  2. Bashスクリプトをデバッグする方法は?

  3. BashスクリプトにUnix/Linuxユーザーを追加する方法は?

  1. Bashスクリプトのインスタンスを1つだけ実行するようにするにはどうすればよいですか?

  2. Ubuntuのパスワード要件を削除する方法は??

  3. Bashスクリプトの実行時に自動確認しますか?