2008年08月16日 00:33 by ELF 上鍵

はじめまして dogteacherと申します。

suidビットの設定についてどなたか詳しいかたご教授お願いいたします。
下記のように、suidビットを設定し、root権限で動くプログラム
があります。

[saraki@kennsyou hoge]$ ll
-rwsr-xr-x 1 root APG 5989 8月 11 16:50 hogehoge

実際、動かすと、

○ユーザ権限で実行
[saraki@kennsyou hoge]$ ./hogehoge
this uid saraki ⇒ rootになってほしい

○root権限で実行
[root@kennsyou hoge]# ./hogehoge
this uid root


ユーザ権限で動いているのですが
最近のLinuxは、suidを無効にしてしまうのでしょうか。ご教授お願いいたします。」

使用Linux CentOS 5.1

1: 口コミさん : 2008-08-16 01:51
バイナリファイルで試したら、suidは働くけど、
シェルスクリプト・ファイルで試したら、suidは働かない。
Debian 4.0

そういう仕様だっけ?記憶にない。

setu@sun:~/tmp$ cat /etc/shadow
cat: /etc/shadow: 許可がありません
setu@sun:~/tmp$ cp `which cat` .
setu@sun:~/tmp$ sudo chown root cat
setu@sun:~/tmp$ sudo chmod u+s cat
setu@sun:~/tmp$ ls -l
合計 20
-rwsr-xr-x 1 root setu 17156 2008-08-15 13:00 cat
setu@sun:~/tmp$ ./cat /etc/shadow
.....
daemon:*:13714:0:99999:7:::
bin:*:13714:0:99999:7:::
sys:*:13714:0:99999:7:::
sync:*:13714:0:99999:7:::
games:*:13714:0:99999:7:::
man:*:13714:0:99999:7:::
lp:*:13714:0:99999:7:::
.....


setu@sun:~/tmp$ sudo rm cat
2: 口コミさん : 2008-08-16 01:54
http://www.linux.or.jp/JF/JFdocs/Secure-Programs-HOWTO/shell.html
setuid もしくは setgid した安全が求められるコードには、標準的なコマンドシェルのスクリプト言語(csh や sh、bash のような)を採用しないよう、強く推奨します。システムには(Linux のような)、setuid や setgid したシェルスクリプトを完全に無効にしているものもあり、setuid や setgid したシェルスクリプトを作成すると、移植性の問題がさらに発生します。古いシステムでは、そもそもシェルスクリプト言語は安全ではありません。それは競合状態を起こすからです(Section 3.1.3 で論じたように)。その他のシステムにとっても、あまり良いとはいえません。
3: 口コミさん : 2008-08-16 01:59
どのようにしてuidを確認していますか?
実効uidと実uidのどちらで判断していますか?
getuid()を使用していますか? geteuid()を使っていますか?
4: 口コミさん : 2008-08-16 02:08
その疑問を解決するためには、そのhogehogeの正体(バイナリorスクリプト)によるところが大きいと思うのですが、どうも出ている情報からは、シェルスクリプトをsuidして実行した、という状態で発生する事象の様な気が。

そのプログラムの正体は何なのですか?
シェルスクリプトにsetuidしても、効果はないですよ。
5: 口コミさん : 2008-08-16 06:45
> シェルスクリプトにsetuidしても、効果はないですよ。

昔は、シェルスクリプトにsuidしても、効果があったんだけど、
上のリンクのようにセキュリティ上の問題があるので、
Linuxでは
「setuid や setgid したシェルスクリプトを完全に無効にしている」
ということですね。

上のリンクを読んだら判りますが、suidしてあるシェルスクリプトを解して
勝手なコマンドを実行することも出来るそうです。

現在も、suid付きのシェルスクリプトが有効な*nixもあるわけですね。
6: 口コミさん : 2008-08-16 14:39
suid は数少ない Unix での特許と聞きましたが、どうしても必要でない限り使用しないことは望ましいと思っていました。確かに
# chmod 4711 hoge
は可能ですが、何故にスーパーユーザーにならないといけないのかは考えることも大切でしょうね。
設計もとても難しいですし。

#病院の朝は早い
7: 口コミさん : 2008-08-16 18:05
皆様、ご回答ありがとうございます。
ご回答の中で、hogeプログラムがシェルスクリプトかバイナリか大きく違うと
となっていましたが、

hogeプログラムは、バイナリです。

#chmod 4755 hoge

でsuidがつき、スーパーユーザーで動くと思ったのですが、
実際には、ユーザ権限で動いており、なぜなのかはまっております。



8: 口コミさん : 2008-08-16 22:16
なるほど。

ではソース中でsetuid(0)をしていますか?
そうしないと、getuid()した時に得られるuidもプロセスの実効ユーザIDも、変更できませんね。

こんな風なソースなら、希望の動作をするんじゃないかと思います。

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
printf("UID(before) = %d\n", getuid()); /* setuid(0)前の実効UID */
system("cat /etc/shadow");

setuid(0);

printf("UID(arter) = %d\n", getuid()); /* setuid(0)後の実効UID */
system("cat /etc/shadow");

return 0;
}
9: 口コミさん : 2008-08-16 23:03
なかさん

ご回答ありがとうございます。原因がわかりましたので、お伝えします。
まず、皆さんに謝らなければならないことがあります。

hogeプログラム内に
system( "./hoge.pl")というようにPerlスクリプトを呼び出しし、

hoge.pl内にgetuid()を入れて動作させておりました。

ここに問題がありました。
setuidしても、system("./hoge.pl")でシェルスクリプトとして認識され、
setuidが無効になることが判明しました。

system関数でなく、exec*関数を利用することで改善しました。

ご意見いただいた皆様にたいへんご迷惑をおかけしました。
申し訳ありません。

スレッド一覧

【求人】港区でのお仕事です【時給1700円以上】 【急募・東京】プログラマー&デザイナー Ubuntu11.10でバッファローNASLS-V2.0TLを使いたい crontabでcommandを5秒単位で指定する方法を教えてください メールサーバ、明日お昼まで受付。ご教示ください&疑問お答えします。sendmailをマスターしたい。 Linux Fedora Core4マニュアル USBメモリからブートする方法 MTA(ウィルス対策付き)のテスト方法について ICMP Destination host administratively 真剣に聞きたいのだが、Ubuntuの何が良いの? FMV-BIBLO LOOX P70でタッチパネル成功した方 OSのリストア syslog-ngってロストしますか? HDDから情報の救出。助けてください。 [Q] bdflushの設定値について 質問: egrepにおける正規表現の記述 inodeを増やす方法 セキュリティについて CDからの曲の取り込みとその管理、視聴 FedoraCoreファンの集い VMware Workstation v6.0の使い方 Ruby on Rails 現場ノウハウ講座(β) ネットをするための設定は?><) gcovとlcovについて。 教えてください。 RAIDが壊れたとき ffmpegをインストールしようとするとエラーが発生します。 無線Linux考 内部向けDNS設定 日本語がCUI画面で文字化けします。 「YouOS」というものについて Linuxが動くノートPCを教えてください HHKBの相性 情報源 サーバ構築時のソフトウェアインストール Ubuntuでネット How to? diffコマンドで,連続行の変更を1行ずつ取得する方法 ロシア、リナックス基盤に国産OS開発へ zenwalk linux 使っている人いますか? Linux Mint ネットブックで自宅サーバやってる方いませんか? 参加者を募集しています。 EeePC 4GのSDカードに linuxディストリビューションの種類・特徴・メリット・デメリットを教えてください アシスタント求人募集 fedoraネットワーク リモートデスクトップについて SLAX-6rc6の日本語化 シェルスクリプトを使ったsftp接続 中古のパソコンに入れるなら Mplayerのインストール ウィルス対策 vmwareにインストールしたCentOSをteratermで操作するやり方 ビジネスにおけるLinuxの未来をは・・・? Hackの内容、ご教授願いたい。 linuxっていろいろあるけど Windowsユーザーの初Linuxはどれが? NFS について パソコンの名前 Linux のための Google Earth はじめましてぇ〜! 「run-crons」について教えてください。 プリンター/スキャナー Linux でも動く mpeg4 H/Wキャプチャボックス はじめまして。 TUXくんグッズ デュアルモニター coLinux Linuxを使った便利システム XMMSって… Linuxデスクトップでウイルス HP のマルチユーザー PC LinuxWorld Expo/Tokyo 2004 Oracle Linux最強説 fedora 12にてインターフェースの設定 http://xx.xx/cgi-bin/x.prgでCGIプログラムを実行したい。 Couch DBの入門書 著者求む 【質問】 Ocsigen のインストール方法 画面に何も映らない。セーフモード Xenの管理OSでアプリケーションをの動かしてもいい? LPIC試験への道。 fedora7インストールについて Fedora8の設定について教えてください。 Quad Coreでのパフォーマンス 技術者を急募しています。 仕事。 Linuxで使うアプリは? 救ってください <質問>デスクトップでエラー ASUS M6R 740 NOTEBOOK に相応しいLINUX? linuxは重たい?>WinXP 初心者向け研修―Red Hat社のトレーニングってどうでしょう? パーティションを切る 今月のWindows系や自作DOS/V機系の雑誌にKNOPPIXのCDが付いてますね(^_^)。 自宅サーバが進入されました。 /dev/memって Xbox Linux fedoraがフリーズします for文について サーバエンジニア募集中! 新しいインターフェースが設定できない Slackware13.0のcifsでマウントしたファイルシステムの上でコンパイルしようとするとリンクに失敗する Linux の良さ おすすめ書籍を教えてください オープンソースの先駆けと対NDS宣戦布告 kernel hackに関する質問 #0x00 USBフラシュメモリーにLiveCDのLinuxを入れて持ち運ぶ rootからuserに戻る方法? Linux 標準バンドルされている 暗号化ライブラリを教えてください linuxとwindowsの狭間で 京都Linux友の会 linuxで1を変数01に変更して変数に格納する方法について。 モジュールとドライバの違いは? SSLの設定方法について Knoppixをインストールしたい。 漢字をかな変換するコマンド 【ノートPCで】タッチパッドが動かない!!HP 500 Notebook PC【LINUXを稼動♪】 usermodなどの使い方を教えてください。 ファイル特定の文字の出力方法に関して。 UbuntuでのWLI-U2-KG54使用について PlayStation Linux Users Group(PSLUG) のコミュニティを立ち上げました。 linux超初心者です。 time 複数コマンド 無線LAN環境は? おしえてください Linuxはじめてみようと思ってます。 一番、サーバーに向いているディストリってなんですかね? LINUX関連の本、サイト さしあげます パーミッション、所有者のバックアップ Linuxルータ オープニングパーティはいつですか? Kobo Touch と、その拡張性について質問 はじめまして &#32418;旗 Linux 。。。???  会社や学校で使っている環境は? リスク管理 【求人】 Linuxサーバ・ネットワーク管理者急募! NFSで &quot; No such file or directory&quot;が発生する メモリー128MBのノートパソコンにでインターネットに接続したい。 どーすれば!? [Q]Canon LBP5100を使う WebSphere Application Server のインストール方法 複数台のNFSサーバーを自動的にマウントしてくれるソフトウェアってありますか? delegate 無線LAN(bcm43xx)使えたのに災難?ログの山 mysqlのインストールについて。 linuxをyahooBBでインターネットをするには? IDE Microsoft と Novell の提携 Fedora Core5 「コミュニティ利用で気をつけてほしいこと」を掲載しました 初歩的な事なのでしょうが apache LinuxとEMT64 スクリーンセーバ 自宅鯖に使えるUPS デュアル CPU の功罪 Open Source Conferlence 2004 SELinux勉強会(4/17・渋谷) Cloud話よろず Cron Jobが実行されない 初心者用のくだらない質問トピック #3 mozc(モズク)コミュ作成しました sk_buffのh.rawって何を表していますか? DNS 皆さんは日本語入力メソッドに何使っていますか? shell作成で悩み あるユーザだけ作成できても、SSH/FTP/SFTPできない。 vsftpd topについて apacheが起動しているか確認するコマンドについて sshをパスワードなしでログインする おすすめの本ってありますか? SUSEについて 初心者用のくだらない質問トピック WEBカメラを設定しWebで公開したい rootで入れないみたいです。。 Libretto L1にturbolinuxFUJIをインストしたい NFSサーバーでCommitted_ASが日に日に増えていく smtpfeedの設定 Linuxで無線LANを使いたい TIPS 大量のファイルを保存するNFSサーバーに最適なファイルシステム Linuxリモートインスト無償配布 Grubについて教えてください。 zxLinux 苦労人志向 インストール時の設定 gentoo powerPCG4へLinuxのインストールについて質問 Open sourceについて。。。。 HDDベンチマーク 輸入ノート売ってるような店 音ユースにグッドなLinux向けノートって? mountする方法 クールに冷えるCrusoe! なサーバー on Linux REVOLUTION OS Linux World C&D/Tokyo 2004 レポート 5/4 『Linux ユーザーグループ北陸 勉強会』のご案内 初心者用のくだらない質問トピック #4 Linux デスクトップの普及#2 LPIC CentOSでのVASPのビルドについての質問。 TurboLinux 11Server SVNのインストール TurboLinux 11 Server (Musasabi) で PostgreSQL 教えてください openssl remove.....復旧 暗号化DVDの作成方法 Linuxトラブル・・・ ブート時:TUX君の数? 課題投稿 オリジナルディストリの作り方をご存じの方ご教授願います ブートLinuxでVistaの修復の仕方は? 読まれている雑誌 Linuxを前提としたパソコン購入 アナログビデオが一杯 愛用のLinuxは? 質問です。 Active Sync Linux Ubuntuのフリーズについて PC版i386vineをインストールしてサーバ運用したいです。 グラフィックボードが合わない件について ネットワークについて 教えてください UW-IMAPの情報・・ XglとAIGLXって凄そう!試した? Linuxを使う理由 アドレスにアンダーバーがあるとsendmailがメールを送れない? WinXPとのデュアルブート tarの脆弱性 Linuxをwebサーバとして利用する際のハードのスペック 【質問】 デュアルブート環境下で同時起動 kernel-2.6.13.X でのリブート LW2005 Virtual PC 2004上でFedora Core 3は動くの?? UNIXとの違いって? 初めまして NFS Mountの設定ヘルプ - Fedora 16 Pidginのプラグイン作成方法について (TωT)パソコンの選び方?? TeraTermでデータベースをみる方法 インストールについてです おすすめのセミナー 初心者用のくだらない質問トピック #2 B フレッツ インターネットの接続方法がわかりません slewモード LinuxとFOMA a2502k… Linuxのすばらしさ Linuxを何に使ってますか? 【質問】FlowScan をインストールしたい You tube downloder for Ubuntu NFSのチューニングについて USBフラッシュメモリ usb接続HDを2つ接続したときのデバイスファイルの固定について netscapeを使えるようにしたい。 OS選択の悩み:Windowsは必要か? マルチコアCPUに最適化されたLinuxはありますか? 統合開発環境ってありますか? LPICレベル1最新書籍情報について lsコマンドでワイルドカードが効きません。 一番軽いGUI環境 Novell xgl Linuxが使えるネットワークエンジニアとは? Linux 派国会議員 x-windowログ 私がお勧めするLinux便利機能! Windows用無線LANカード Linuxを使いはじめた時”すげー”と思ったところ nfsrootでpam失敗? Linux始めるなら もっとも安価で電気代の安いサーバ Yellow Dog Linux 【愛知、常駐プログラマ募集】 [Q]GPLの解釈について(ソース開示の必要性) Linux デスクトップはこんな感じです! gvでpdfを表示する方法 日本でVPS (英語 - English) ロードアベレージ CPUの可能性 ご教示下さい DellからLinuxプレインストールマシン発売 fedora9日本語入力メソッドのインストールに悪戦苦闘中です。 おすすめを問います。 samba共有ファイルの更新日時について LPIC試験勉強に最適なディストリビューションを教えてください。 CPUの増設方法 PDFファイル上で動画再生 Linuxのコマンドで 監視ツールの導入・運用 MacintoshにLinuxを入れたい SATAの対応は? Linus Torvalds、Macにスイッチ! GNOME vs KDE 皮を剥いで見る?!。 タブレットの設定変更について ☆教えて☆Linuxをマスターしたい Linux/Unixの経験を活かして海外で働きませんか? 急成長中のベンチャー企業で働いてみたいとおもいませんか?! 探してます Linux デスクトップの普及 ■お仕事(=転職)案件のご相談です■ 問題集につきまして Linuxのあるべき姿と今後の未来像 SSH鍵認証 Lpicレベル1の講習 教えてください git Turbolinux Fuji install 弐萬圓PC堂? Powered by Linux ファイルシステムについて 転職希望者の方!! suidについて MXレコードの解決ができず、メールが外部から送受信できません。。 CentOS5.2&#043;openssh5.0pでchrootできる?? sendmailのaliasについて Linus さんち eth0、eth1の呼び方 教えてください。 Squidで/etc/hostsの定義で自分自身を指定した場合 教えてくださいFlashplayerのPlug-inの方法を くだらない質問かもしれませんが… ez-ipupdate-3.0.11b7のインストールがうまくいきません maildropの入門書 kernel panic でサーバが止まってます。 f77 ご教授お願いします。 CentOS vs Fedora Core 初めまして 外付けHDD 質問 rpm パッケージの分解 Hadoopのクラスタ化について Hadoopについて pidからstatusを得るAPIって有りますか? ●格安IT塾開校★講師は東大卒! オープンソースOSのTorrentサイトを公開しました。

サイト内検索