• ベストアンサー
  • 困ってます

rbashについて

こんにちは。 Windowsのコマンドプロンプトから、Linuxに対して rshにてコマンドを実行させようとしています。 セキュリティの観点からrshでは問題ありと思い rbashを使用してみようと下記設定をおこないましたが 期待している動作になりません。 Linux側設定 1)シンボリックリンクを設定 # ln -s /bin/bash /bin/rbash 2) /home/ohenryに.rhostsを記述 (Windowsマシンのコンピューター名 hoge_win ) hoge_win Administrator 3) /home/ohenry/.bash_profileの属性変更 #chown root /home/ohenry/.bash_profile #chgrp root /home/ohenry/.bash_profile #chmod 755 /home/ohenry/.bash_profile 4) /etc/passwd編集 ユーザのログインシェル設定 ohenry(中略)/bin/rbash 5) /home/ohenry/.bash_profile編集 PATH=$HOME/bin export PATH 6) /home/ohenry/bin下にコマンドコピー # cp /bin/date /home/ohenry/bin/date (これでdateしか実行できないはず) Windows側 rsh hoge_linux -l ohenry ls / dateしか実行できないはずなのですが ls結果が表示されてしまいます。 rsh hoge_linux -l ohenry (password?)***** とログインしてしまったあとはrbashの期待通りに 動作します。 ログインしないコマンドラインからの実行で rbashの制限を有効にすることはできますでしょうか? だらだら書いてしまい申し訳ありませんが どなたかお助けください。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数424
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.3
  • notnot
  • ベストアンサー率47% (4723/9948)

ログインしてないので、.bash_profile を読まないのでしょう。.bashrc に書けばいいと思います。 逆にログインしたときは、.bashrc は読みません。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

真にありがとうございます。 おっしゃるとおりでした。 .bashrcに PATH=/home/ohenry/bin export PATH と記述してあげれば、 C:\>rsh hoge_linux -l ohenry set 前略 PATH=/home/ohenry/bin 後略 と表示され、 C:\>rsh hoge_linux -l ohenry ls rbash: line1:ls:command not found C:\>rsh hoge_linux -l ohenry date Thu Mar 30 22:19:26 JST 2006 とdateのみ実行できることを確認できました。 ありがとうございました。

その他の回答 (2)

  • 回答No.2

本当に設定が効いているのでしょうか? rsh hoge_linux -l ohenry set とかで、PATHがどう設定されているかなど、調べてみたらどうでしょう? rshでpsコマンドを動かして本当にrbashが動いているのかを確認してみるのも有用です。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

a-saitoh様 真にありがとうございます。 おっしゃるとおりでした。 rsh hoge_linux -l ohenry set 前略 PATH=/usr/bin:/bin 後略 と表示されます。 ログインしていないために.bash_profileを読んで いないのではとのアドバイスをいただき .bashrcにPATHを記述することで 解決しました。

  • 回答No.1
  • Tacosan
  • ベストアンサー率23% (3656/15482)

これって, 「date しか実行できない」ようになっているんですか? $PATH で列挙されたディレクトリにあれば実行できるのは変わらないような気がするんですけど....

共感・感謝の気持ちを伝えよう!

質問者からのお礼

Tacosan様 ありがとうございます。 $PATHは/home/ohenry/binのみに 設定できているものと思っていましたが なっていなかったことが原因でした。 お礼のみになって申し訳ありません。

関連するQ&A

  • ~/.bash_profileがログイン時に反映されないのはなぜ?

    LINUX系OS全般的に初心者です。 TeraTermを使いサーバにTelnet接続し、~/home/(ユーザ名)パスの下に .bash_profileファイルを以下の内容で作成しました。 export PATH=/usr/local/pgsql/bin:$PATH (この1行のみ) そして、再度同ユーザでログインしても/usr/local/pgsql/bin が$PATHに追加されていません。 source ~/.bash_profileを実行すると追加が成功することから どうやら.bash_profileの内容自体には問題ないようなのですが、 ログイン時に反映されないのはなぜでしょうか? お分かりになる方、どうかご教授ください! ちなみに、echo $HOMEの内容は確認済みで、 $HOME = 'home/(ユーザ名)'となっています。 なので、ファイルの置き場所も間違ってはいないと思うのですが? よろしくお願いいたします。

  • pathを追加するスクリプト

    初歩的な質問内容ですが、よろしくお願いします。 ある作業マシンにログインするたびに、 export PATH="/hoge:$PATH" と打つのが面倒なので、スクリプトを作ることにしました。 スクリプトを作るのは初めてなので、ちょっとネットで調べて、 path.shというファイルに #!/bin/sh export PATH="/hoge:$PATH" echo $PATH と記述して、 $ sh path.sh と実行しました。 すると、スクリプト内のechoによって表示された$PATHを見ると hogeの部分がちゃんと追加されているように見えるのですが、 もう一度改めて(スクリプトでなく)$ echo $PATH と打ってみるとhogeは$PATHに追加されていず、 実際にもpathが通ってくれてないです‥。 理由、解決策など、教えて頂けるとうれしいです。 よろしくお願いします。 --- また、普通はこういう場合、.bash_profileなどを編集すると思うのですが、今回それはしたくないです。理由は、 自分がこのマシンの使うのが一時的ということもあって、 自分のユーザとしてでなく、rootとして入っている為です。 自分以外の人もrootでログインすることが多いので、 スクリプトを実行するような形でpathを変更したいです。

  • パス(PATH)の設定ファイルについて

    OSはRed Hat Linux 9 を使用しております。 また、シェルはbashを使用しております。 ユーザがシステムにログインする際は、通常ですと /etc/profile ~/.bash_profile ~/.bash_login ~/.profile ファイルを読込、パス(PATH)の設定を行うと思いますが、 sshでrootユーザでシステムにログインした際は、 「echo $PATH」の結果は以下でした。 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin:/sbin su -で再度rootユーザでログインした際、もしくは、他ユーザからsu -でログインすると 「echo $PATH」の結果は以下でした。 /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin:/sbin ログインの仕方でパス(PATH)に違いがあります。 また、「/usr/local/bin」をパス(PATH)として設定している記述が 上記ファイルに見当たりません。 http://sakaguch.com/PastBBS/0038/B0018808.html http://oshiete1.goo.ne.jp/kotaeru.php3?q=800405 等のサイトを参考に、以下ディレクトリ配下を確認しましても /etc/profile.d /etc/rc.d/init.d /etc/rc.d/rc3.d 「/usr/local/bin」をパス(PATH)として設定している記述が 見当たりません。 ログインの仕方でパス(PATH)に何故違いがあるのか、 また「/usr/local/bin」をパス(PATH)として設定している記述がある ファイルをご存知の方ご教授頂きたく思います。 宜しくお願いします。

  • 環境変数の設定(PATH)

    今、環境変数の設定(PATHの設定)を行っています。 OSは、RedHat9です。 スーパーユーザーのPATHは、 echo $PATHコマンドで見ると /usr/local/sbin:/usr/bin:/home/user1/test となっている。 しかし.bash_profileをみると PATHには、/usr/local/sbin:/usr/binしか 設定しておらず、 ユーザー(user1)の.bash_profileにも /home/user1/testをPATHに設定していない。 どこかでPATH設定を行っていると思いますが わかりません。 PATHの設定は、.bash_profileを設定するとは わかっているのですが、 スーパーユーザーの.bash_profileの記述と echo $PATHで見たPATHの構成がことなるのは なぜでしょうか? よろしくお願い致します。

  • サーチPathに付きまして

    作成したshellを作動させるために投入したディレクトリまでのpathを以下のようにして、投入しました。 export PATH=$PATH:/home/myname/cgi-bin/ 2点ほど教えていただきたいのですが、一度投入したSearch pathを解除する方法と、このパスを電源を再投入した後も効力を持たせるにはどこに書き込めば良いでしょうか。/root/.bash_profileが在りますが、ここでよろしいでしょうか。使用環境はRedHat Linux v7.1です。

  • JAVAの環境変数が初期化されてしまいます

    Linux初心者です。 JDK6.0をインストールして、環境変数を次のように設定しました。 export JAVA_HOME=/usr/local/jdk1.6.0 export PATH=$JAVA_HOME/bin:$PATH これで一旦はjavacやjavaコマンドが使えるようになるのですが、 bashを再起動すると、また使えなくなるので再設定しなければなりません。 調べてみた所、homeディレクトリの.bash_profileを変更すると 再設定の必要がなくなると書いていたので、 # set PATH so it includes user's private bin if it exists if [ -d ~/bin ] ; then PATH=~/bin:"${PATH}" → export JAVA_HOME=/usr/local/jdk1.6.0 → export PATH=$JAVA_HOME/bin:$PATH fi と記述してみたのですが、やはりbash再起動後のPATHに 上記のパスは含まれていません。 私の記述方法が間違っているのでしょうが、 どうすれば自動的にパスを通すように設定できるのでしょうか? ターミナルはubuntu6.10からGNOME端末を使用しています。 よろしくお願いします。

  • Linux間のリモートシェルの実行について

    マシンタイプ:x225 カーネル: 2.4.20-28.7smp OS:Red Hat Linux 7.3 2.96-126)) 上記のLinuxサーバからrshで同じタイプのリモートのLinuxサーバのシェルを起動しようとしましたが正常に起動されません。 状況としては rsh実行時は特にエラーメッセージが出ることもなく、正常に実行されたかのように終了してしまうため、何が悪いのかもわからない状態です。 実行したコマンドとリモート側のシェルの内容は以下の通りです。 rsh server1 /home/test/testrsh.sh <testrsh.sh> #!/bin/ksh time=`date` echo "rsh test $time" >> /home/test/testrsh.log ちなみに rsh server1 date や rsh server1 uname 等のLinuxのコマンドは正常に実行できます。 どこを確認したらよいでしょうか? よろしくお願いします。

  • pathの設定

    初歩的な質問かもしれませんが、教えてください。 Linux(CentOS)で最新のバージョンの、とあるtool(mpich)を入れたのですが、.bashrcや.bash_profileにpathを記述してもrootが設定した旧バージョンの方にpathが通ってしまいます。また、 $which 新しいtoolのとあるコマンド(mpirun) としても旧バージョンのpathが表示されてしまいます。このような場合どうすれば、新しくインストールした方にpathが通るのでしょうか?私は一般ユーザーでroot権限はありません。また、OSはCentOSでシェルはbashを使用しています。どなたかお分かりになる方がいらっしゃれば、よろしくお願いします。

  • LinuxにJAVAをインストしたのですが。

    Turbolinux6.5Serverにrootユーザーでrpm -Uvh jdk-1.3.1_01.i386.rpmを実行してJAVAをインストール後、確認のためexport PATH=/usr/jdk1.3.1/binを打ってパスが通ったことを確認し、でvi ~/.bash_profileでファイルを開きPATH="$PATH:/usr/java/jdk1.3.1/binを一行追加し、再起動後javac▲Hello.javaをコンパイルしようとしたのですが、bash: javac: command not found と出て実行できません。どうしたらよいのでしょうか。設定が足りないのでしょか? どなたか教えてください!

  • sshdコマンドへのpathの貼りかた

    Linuxに関して質問があります。ターミナルでsshdを入力すると、 [xyz@localhost ~]$ sshd bash: sshd: command not found と出ます。 echo $PATHをやると、 [xyz@localhost ~]$ echo $PATH /usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/xyz/bin:/sbin とでます。 pathが通っていないのだと思うのですが、 .bash_profileに何と追記すれば良いのでしょうか?御教示下さい。宜しくお願い致します。