• ベストアンサー

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の制限を有効にすることはできますでしょうか? だらだら書いてしまい申し訳ありませんが どなたかお助けください。

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

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

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

ohenry
質問者

お礼

真にありがとうございます。 おっしゃるとおりでした。 .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)

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.2

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

ohenry
質問者

お礼

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

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

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

ohenry
質問者

お礼

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

関連するQ&A

  • 環境変数の設定(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の構成がことなるのは なぜでしょうか? よろしくお願い致します。

  • ~/.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)の設定ファイルについて

    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)として設定している記述がある ファイルをご存知の方ご教授頂きたく思います。 宜しくお願いします。

  • 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のコマンドは正常に実行できます。 どこを確認したらよいでしょうか? よろしくお願いします。

  • 誤って/home配下を削除してしまいました;;

    CentOS5.0で/home/hogehoge配下にMaildir/とMaildir /とういうディレクトリがあったので、Maildir /を削除しようと思い以下のコマンドを実行しました。 [root@111 ~]# cd /home/hogehoge [root@111 hogehoge]# rm -rf Maildir / 後日hogehogeユーザでログインしたところ, -bash: dircolors: command not found -bash: /usr/bin/id: No such file or directory -bash: [: =: unary operator expected -bash: /sbin/consoletype: そのようなファイルやディレクトリはありません 確認してみると/home配下が全て削除されてしまっていました。 rootユーザでのコマンドもパスが通っていないようでだいぶ使えないコマンドがあります。 色々試すも復旧にいたっていません。 お分かりなる方、復旧方法を教えてください。 よろしくお願いします。

  • コマンドの実行についての疑問

    コマンドの実行について教えて下さい。 vine4.2でLinuxの勉強をしています。 一般ユーザ(user1)でlsのコマンドを実行すると、結果が表示されますが、 /bin/lsはパーミッション(755)、ユーザ、グループは共に(root)になっています。なぜ実行できるのでしょうか。 もちろん。user1は、rootグループに含まれていません。 基本的なことと思いますが、よろしくお願いします。

  • サーチPathに付きまして

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

  • centos7 環境変数 Laravel

    [vagrant@localhost ~]$ echo export PATH=$HOME/.composer/vendor/bin:$PATH >> ,bash_profile [vagrant@localhost ~]$ source ~/.bash_profile [vagrant@localhost ~]$ laravel -bash: laravel: command not found としてもコマンドが認識されません。なぜでしょうか?

  • 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 と出て実行できません。どうしたらよいのでしょうか。設定が足りないのでしょか? どなたか教えてください!