• ベストアンサー

Linuxサーバのsudoers

一般ユーザに権限を与える方法として以下のようなものがある思います。 user ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.conf ですが、このようにすると問題があると聞いたのですが、具体的にはどのような問題ですか?また、楽に解決できる方法があったら教えて下さい。

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

  • ベストアンサー
  • heburusu
  • ベストアンサー率85% (140/164)
回答No.1

こんにちわ。 vimは外部コマンドを実行する機能が備わっているエディタなので、 上記sudoersのようにvimをroot権限で起動できてしまうと、 httpd.conf以外のファイル編集/削除やコマンド実行など自由できてしまうという問題があります。 参考URLにはその問題や解決方法などもまとめられておりますので、 ご参考頂ければと思いますが、sudo -e か sudoedit で編集できるようにすれば良いと思います。 >user ALL=(ALL) /usr/bin/sudoedit /etc/httpd/confs/httpd.conf sudoeditを使うとエディタが起動しますが、 そのエディタの実行ユーザはrootではなくsudoeditを実行したユーザの権限で実行されます。

参考URL:
http://kaworu.jpn.org/kaworu/2008-05-04-2.php
feaite
質問者

お礼

ありがとうございます! 教えていただいたページの中で、 sudo /bin/cat /path/to/secret | less これだけ理解ができなかったのですが、解説していただけませんか?パイプは知っています。普通にlessを許可するのとcatを挟むのとで何が違うのか良く分かりませんでした。

その他の回答 (1)

  • heburusu
  • ベストアンサー率85% (140/164)
回答No.2

こんにちわ。 >sudo /bin/cat /path/to/secret | less 上記コマンドの場合、 - catはroot権限 - lessはユーザ権限 で実行されます。 lessも外部コマンドを実行できますので、 lessをsudoできてしまうとviと同様の問題が起きてしまいます。 その対応としてcatだけsudoできるようにしています。

feaite
質問者

お礼

catは開くためだけに使って、そのファイルをlessで読み込むということですね。 ありがとうございます。

関連するQ&A

  • sudoersの設定

    user ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.confの意味を詳しく教えて下さい。 調べたのですが、特にALLと(ALL)の違いがよく理解できませんでした。

  • sudoersでのNOEXEC

    user ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.conf でvimコマンドを悪用される危険をなくすためにsudoeditの使うことや、(/etc/httpd/confs/httpd.confの編集権限を持った)新しいグループを作成することが有効だと知ったのですが、NOEXECに関してはどうなのでしょうか?sudoeditを使った方が簡単で安全らしいのですが、NOEXECのどこが危険なのでしょうか?

  • sudoersの設定

    ちょっと前にuser ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.confの意味について質問しました。 http://okwave.jp/qa/q8908643.html その際、user ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.confの2つめのALLに関しては理解できたのですが、まだ1つめのALLに関してよく理解できていません。 manページ等を見ても良く分からないので、詳しい方に解説をお願いしたいです。 ( /usr/bin/vim /etc/httpd/confs/httpd.confでは、vimでの/etc/httpd/confs/httpd.confの編集を許可していると思います。間違っていたら教えてください。)

  • RESTRICT (sudoers)

    sudoers中で user ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.conf とすると危険ということを知り、その解決方法を模索しています。 sudoeditが良いということは知っているのですが、他にRESTRICTというオプションを見つけました。RESTRICTはどうして不十分なのでしょうか?また使う場合は user ALL=(ALL) RESTRICT: /usr/bin/vim /etc/httpd/confs/httpd.conf これで正しいでしょうか?

  • sudoersの設定

    1週間ほど前に、user ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.confについて質問しました。 http://okwave.jp/qa/q8908643.html http://okwave.jp/qa/q8910693.html その後にuser ALL=(ALL) /usr/bin/vim /etc/httpd/confs/httpd.confではコマンドを自由に実行できてしまうので、危険だということを知りました。その対策として、 user ALL=(ALL) /usr/bin/vim -e /etc/httpd/confs/httpd.conf user ALL=(ALL) /usr/bin/sudoedit /etc/httpd/confs/httpd.conf があると思うのですが、この設定は正しいですか?また、sudo -eとsudoeditに違いはありますか? 普段はUbuntuを使っているのですが、Mac OS Xでも同様なことができますか?(Windowsでは難しそうですが) ftp、mysqlなどの設定ファイルも同様に編集できればとも考えています。

  • Vine Linux 2.15 ではApache2を動かせないのでしょうか。

    古い ノートパソコン(PentiumMMX 233Mhz メモリ64MB)にVine Linux 2.15 をインストールして学習しています。 ---------------------------------------- Vineに付属していたApache1.1は、削除方法が今ひとつ良く分からないのでそのままとし、Apache2(httpd-2.0.53.tar.gz)を解凍しインストールして共存させました。 # /usr/local/apache2/bin/apachectl  start   とすると、 (98)アドレスは既に使用中です:・・・・と出るので、Apache1.1の /etc/httpd/conf/httpd.confファイル中のポート番号を80番から8888番 に変更してrebootしました。そして、Apache2.0を起動してlocalhostにアクセスしましたが、「サーバが見付かりません」とのメッセージが出ます。 # /usr/local/apache2/bin/apachectl  stop   としてみると、 httpd (pid 1029?) not running となり、Apache2が動いていない様子です。 ----------------------------------------- # vi /usr/local/apache2/conf/httpd.conf で開いてみると、Listen80 になっています。しかし、 # netstat -ln | grep 80   とすると、 tcp 0 .00.0.0.0:5680 0.0.0.0:* LISTEN となっており、Port80は見当たりません。 # ps aux | grep http   とすると、FedoraCoreの解説本には、 [・・・・・・/usr/local/apache2/bin/httpd -k start] になると書いてありますが、 root 689 0.0 2.0 3712 1296 ? S 14:33 0 /usr/sbin/http となっています。 ------------------------------------ どこが不具合でApache2が動かないのでしょうか。どのように修正すれば良いでしょうか。 Apache2を起動できないのは、そもそも、パソコンの能力が不足しているからでしょうか? Vine Linux 2.15ではApache2を使えないのでしょうか? 何かお気づきの点があれば教えて頂ければ有難いです。よろしくお願いします。

  • Mac の Webサーバ周りの不具合

    mac に標準で入ってあるApache1.3とPHPでは不満で (もしこの標準のままでGDなのどconfigure 周りがいじれる方法があれば教えてください。) apache2.0+PHP4.4.4のソースを無理矢理インストールしたんですが (/usr/local/apache2 /usr/local/php/ prefixで指定) 標準で入っておいた/etc/httpd/httpd.confをみながら USER とかgropは一緒のままで設定しましたが userディレクトリーのオプション関係をALLにしたのですが ディレクトリーにindexファイルがないときのリスト表示ができません (403error 標準のapache1.3ではみれる) またPHPを動かすと include の命令文のところで permission denied とはじかれます 不具合だらけなので回答も難しいと思うのですが ここの部分をこうするとできるよ~みたいな部分的な事でもいいので 回答いただけたら幸いです。

    • ベストアンサー
    • Mac
  • Mac OSX のWeb共有でサーバを立ち上げたいのだが、立ち上がらない...

    Leopardに組まれているApache2.2でサーバを立ち上げる作業をしています。URLに「127.0.0.1/index.html」を入れると、無事、htmlページが表示されます。現時の設定は次のようになっています。  /etc/apache2/users/USERNAME.conf で(USERNAMEは私の名前を使用)、 ・<Directory "/Users/USERNAME/Sites/">---</Directory> 内に  AddHandler cgi-script .cgi 及び Options Includes ExecCGIを追加 ・/usr/local/bin (を作り)perlのhard linkを作成してあります。 CGIファイル(hello!.cgi)も/usr/local/bin においてあります。hard linkの元は /usr/bin/配下にあります) 他方、/etc/apache2/httpd.conf では次の設定になってます: ・ServerName が 127.0.0.1 ・ServerRootが /usr/ (これが誤り?) ・DocumentRoot が /usr/Apache2.2/htdocs (これも変?) ・User 及び Groupはともに www 先達にお願い! 次のことを教えて下さい。 1.その他、設定事項で欠落している事項があるのか? 2.127.0.0.1/index.fileはどのdirectoryにあるか? 3.Terminalで 「cd ~」と入力すると、/Users/USERNAMEとなって上のDocRootと合わないのはなぜか? 4.hello!.cgiを表示するにはURLをどうすればよいか? 宜しくお願いします。

  • linuxでapacheが動きません。

    linuxでapacheが動きません。 学校でネットワークの勉強をしており、課題をやるために自宅のPCでVMserverを使ってVine4.2をインストールしました。 今openssl0.98nとapache2.2.15をインストールしたところです。 学校ではちゃんと動いたのですが、自宅のPCでのapacheの再起動のところで困っています。 # /etc/init.d/apache start httpd (pid 16970) already running # /etc/init.d/apache stop # /etc/init.d/apache restart httpd not running, trying to start 再起動するとこのようなエラーが出て、startしても同じことの繰り返しです。 # ps -ax|grep httpd と入力するとこう出ました。 Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html 16970 ? Ss 0:00 /usr/local/apache/bin/httpd -k restart 16973 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16974 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16975 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16976 ? S 0:00 /usr/local/apache/bin/httpd -k restart 16977 ? S 0:00 /usr/local/apache/bin/httpd -k restart 17004 pts/0 S+ 0:00 grep httpd 動いていませんよね? しかしブラウザでlocalhostを開くとIt Works!と出るし編集してからも見れました。 課題が終わらないので困っています。 ネットワークの勉強をしていますが、ちんぷんかんぷんでいまいちのみこめていません。 みなさんの知恵をお貸しください。。。

  • Linux HTTP htpasswd

    身内用にUploaderと掲示板を設置しました。 もちろん身内用ですので、パスワード認証をつけたのですが、 htpasswd -c /etc/httpd/conf/htpass private この方法でパスワードをかけてから http://www.xxxxx.com/~private/ 直下にindex.phpを置いていても http://www.xxxxx.com/~private/index.php と指定しないとそのディレクトリを表示してしまう phpのソースが表示されて動作しない(phpをインストールしてないときにおきる現象と同じ) が起きてしまいます。 私の設定の手順に問題があるのでしょうか? [root@localhost ~]# htpasswd -c /etc/httpd/conf/htpass private New password: Re-type new password: Adding password for user muscat [root@localhost ~]# vi /etc/httpd/conf/httpd.conf <Directory /home/private/public_html> AuthUserFile /etc/httpd/conf/htpass AuthType Basic AuthName ByPassword require user private </Directory> [root@localhost ~]# /etc/rc.d/init.d/httpd restart