/etc/passwd にアクセスせず、ユーザーに対してのみ Solaris/SunOS でシェルを変更します。

/etc/passwd にアクセスせず、ユーザーに対してのみ Solaris/SunOS でシェルを変更します。

/etc/passwdアクセス権やその他の権限なしで自分のユーザーにSolaris / SunOSでシェルを設定するにはどうすればよいですかsu

その後、相互作用ssh(1)とsshコマンド転送(2)が機能するはずです。

uname -a説明するSunOS ... 5.10 Generic_148889-04 i86pc i386 i86pc

コメントと回答に答えるには編集してください。

chshいいえ

私はこれを行うことはできません/usr/bin/passwd -e。許可が拒否されました。

デフォルトのシェルはbashです。私はzshが欲しい。

SHELL環境変数を手動で設定し、ファイルからシェルを手動で起動しようとしましたが、.profile機能しません。2番目のケース(2):ssh user@host commandbashで実行されますcommand

これはログイン時に私が好むシェルを得るよりも副次的なものなので、回避策は確かに言及する価値があります。ただ私がこの質問をする目的は正しい方法を見つけることです。一人のユーザーにしか関係がないので、SAが介入されなくても可能だと思っていましたが、今はよくわかりません。 (しかし、問題(1)と(2)を解決する解決策は明らかに素晴らしいでしょう。)

ベストアンサー1

方法#1:一緒にchsh

通常、このコマンドを使用してchshアクセスなしでシェルを変更できます/etc/passwd。ファイルには通常、デフォルトのシェルがリストされます。

saml:x:500:501:Sam M. (local):/home/saml:/bin/zsh

一般ユーザーは自分のアカウントのログインシェルのみを変更でき、rootユーザーのスーパーユーザーはすべてのアカウントのログインシェルを変更できます。次のコマンドを使用して、システムで使用可能なシェルを表示できます。

$ chsh --list-shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
/bin/zsh

シェルを変更するには、次のコマンドを使用できます。

$ chsh -s /bin/zsh saml
Changing shell for saml.
Password: 
Shell changed.

ファイルを見る効果は明ら​​かです/etc/passwd

$ grep saml /etc/passwd
saml:x:500:501:Sam M. (local):/home/saml:/bin/zsh

変更はすぐには表示されません。表示するにはログアウト/ログインする必要があります。

[saml@grinchy]~% echo $SHELL
/bin/zsh

方法#2:/usr/bin/passwd -e

Solaris には存在しない対応するコマンドへのアクセス権がなく、chsh変更できるルートアクセス権もない場合/etc/passwdでも、次のコマンドを使用して同じ操作を実行できます。

$ /usr/bin/passwd -e

方法#3:手動設定方法

上記のオプションのいずれもオプションでない場合、デフォルトでは最後のオプションが残ります。これは、既存のシェルのログインファイルに次のいずれかのオプションを追加することです。

  1. デフォルトシェル:/bin/cshまたは/bin/tcsh

    次の行を追加します$HOME/.login

    setenv SHELL=/bin/bash
    exec $SHELL
    
  2. 基本シェル: /bin/bash

    以下を追加してください$HOME/.bash_profile

    export SHELL=/bin/zsh
    exec $SHELL
    

上記で考慮する必要がある他のもの/bin/bash(たとえば、設定する前に現在$ SHELLがすでに存在していることを確認することでより完璧にすることができます)、そうであれば何もしないでくださいexec $SHELL

引用する

おすすめ記事