ユーザーシェルを変更するためのシェルスクリプト

ユーザーシェルを変更するためのシェルスクリプト

ユーザーシェルを変更するために呼び出されるスクリプトを作成しています。デフォルトの要件は、ユーザーが認証されると(たとえば、一部のWebアプリケーションを介して)、デフォルトのシェルを設定するためにスクリプトが呼び出されることです。彼は利用可能な様々な貝の中から選択することができます。解決策がわからないいくつかの問題があります。最初は - シェルを変更する方法です。 - わかりました。chshしかし、コマンドを実行するにはユーザーがパスワードを入力する必要がありますが、私はそれを望んでいません。ユーザーが認証されたら、ユーザーが有効であることを確認してスクリプトを実行したいと思います。ルートアクセスを使用する必要がありますか?それでは、これがセキュリティにどのような影響を与えますか?また、このようなスクリプトを実装するときにどのようなセキュリティ対策を検討する必要がありますか?私は以下のスクリプトで始まり、それを拡張したいと思います。コメント/回答をいただきありがとうございます。

PS:この質問が投稿されました。ここそれから、このフォーラムが正しい場所かもしれないことに気づきました。

  1 #!/bin/bash
  2 
  3 #### Constants ########
  4 TOSHELL=
  5 NUMARGS=$#
  6 USER=$(whoami)
  7 #### Functions ########
  8 
  9 checkArgument(){
 10 
 11     if [ "$NUMARGS" != "1" ]
 12     then
 13         return 1
 14     else
 15         TOSHELL=$1
 16         return 0
 17     fi
 18 
 19 }
 20 
 21 
 22 changeShell(){
 23 
 24     `chsh -s $TOSHELL $USER`    
 25 
 26 }
 27 
 28 main(){
 29 
 30 
 31     if checkArgument
 32     then
 33         changeShell #Also check if changeShell was successful
 34         return 0
 35     else
 36         return 1
 37     fi
 38 
 39 }
 40 main

関連情報