/etc/passwd にないユーザーのデフォルトシェルを bash に設定する

/etc/passwd にないユーザーのデフォルトシェルを bash に設定する

当社のUbuntu 15.10デスクトップシステムでは、Active Directoryを介したログインに基づいていくつかの魔法を使用しています。PBIS。したがって、私のホームディレクトリが/ etc / passwdにあっても、私のユーザーアカウントは表示されません/home/local/FOOBAR/dotancohen/編集する/etc/passwd行がなく、使用できない場合は、bashをシェルに設定する方法はchsh

このコンピュータには管理者アクセス権を持つ別のアカウントがあるため、必要に応じてシステムを管理者として構成できます。しかし、ユーザー専用のソリューションがあれば、今後は管理者権限がないときに使用するのが良いと思います!

以下は、Unity(Ubuntuデスクトップ)でGnome端末を開いて実行したいくつかの主要なコマンドの結果です。

$ echo $HOME
/home/local/FOOBAR/dotan
$ whoami
FOOBAR\dotancohen
$ grep dotan /etc/passwd
$ grep sourced ~/.profile
echo 'sourced .profile'
$ grep sourced ~/.bashrc
echo "sourced .bashrc"
$ echo $SHELL
/bin/sh
$ echo $TERM
xterm
$ bash
sourced .bashrc
 - dotan-tm():~$ echo $SHELL
/bin/sh
 - dotan-tm():~$ echo $TERM
xterm-256color

ご覧のとおり、両方をインポートすると.bashrcエコーされます。基本シェルの起動時ではなく、bashの起動時に実行されるよう.profileです。使った.profile.bashrcこの回答ダッシュでbashを開きましたが、.profileスクリプトが明らかに実行されていないため、何の効果もありません。

~/.profile参照用のファイル全体は次のとおりです。

$ cat .profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.bin" ] ; then
    PATH="$HOME/.bin:$PATH"
fi

xmodmap ~/.Xmodmap

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

case $- in
  *i*)
    # Interactive session. Try switching to bash.
    if [ -z "$BASH" ]; then # do nothing if running under bash already
      bash=$(command -v bash)
      if [ -x "$bash" ]; then
        export SHELL="$bash"
        exec "$bash" -l
      fi
    fi
esac

echo 'sourced .profile'
$ 

答え1

PBISを使用すると、すべてのユーザーに対してデフォルトのシェルを定義できます。

#/opt/pbis/bin/config LoginShellTemplate /bin/bash

これはrootとして実行する必要があり、ユーザーまたは権限のないユーザーはこの設定を変更できません。これはすべてのADユーザーのデフォルトシェルになります。

関連情報