Defina shell padrão como bash para usuários que não estão em / etc / passwd

5

No sistema de desktop Ubuntu 15.10 da minha empresa, eu efetuo login via Active Directory usando alguma mágica baseada em PBIS . Assim, minha conta de usuário não está listada em / etc / passwd, embora eu tenha um diretório home em /home/local/FOOBAR/dotancohen/ . Como posso configurar o bash como o shell quando não há uma linha / etc / passwd para editar e, portanto, não posso usar chsh ?

Eu tenho outra conta nesta máquina com acesso de administrador, para que eu possa configurar o sistema como administrador, se necessário. No entanto, se houver uma solução somente para usuário, eu prefiro isso para uso no futuro quando não tiver acesso de administrador!

Aqui estão os resultados de alguns comandos importantes, executados a partir da abertura do Gnome Terminal no Unity (a área de trabalho do Ubuntu):

$ echo $HOME
/home/local/TECHMARKETING/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

Como pode ser visto, tanto .bashrc quanto .profile ecoam quando foram adquiridos. Parece que .profile não é executado quando o shell padrão é iniciado, mas .bashrc é executado quando o bash é iniciado. Eu usei esta resposta para abrir o bash do dash, mas como .profile não é executado obviamente esse script não está tendo nenhum efeito.

Aqui está o meu arquivo ~/.profile completo para referência:

$ 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'
$ 
    
por dotancohen 07.01.2016 / 11:30

1 resposta

6

Usando o PBIS, você pode definir o shell padrão para todos os usuários:

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

Como se fosse feito como root, não há possibilidade de alterar essa configuração por usuário ou usuário não privilegiado. Este será o shell padrão para todos os usuários do AD.

    
por 07.01.2016 / 13:25