UbuntuでSetUIDビットが機能しない?


8

SetUIDビットが設定された実行可能ファイルが所有者として実行されているはずですが、実際には再現できません。以下を試しました。

$猫prepare.sh
cp / bin / bash。
chown root.root bash
chmod 4770 bash#確認済み
$ sudo sh prepare.sh
$ ./bash
$ id -u
1000
$出口
ドル
$猫test.c
#include <stdio.h>
#include <unistd.h>
int main(){
    printf( "%d、%d \ n"、getuid()、geteuid());
    0を返します。
}
$ gcc -o test test.c
$ chmod 4770 test#確認済み
$ sudo chown root.root test
$ ./テスト
1000、1000
$#なぜ???

しかしながら

$ su
#./bash
#id -u
0
#./test
0,0
# 出口
# 出口
ドル

注:マウントポイントには何nosuidnoexec設定されていません。
Ubuntu 16.04 LTSで動作しない理由を誰かが説明できますか?



3
@Kusalanandaそれはスクリプトではありません。
enzotib 2017

4
スクリプトは少し混乱しますが、それは単なるニシンです。私はそれが2つの使用を保存するためにあると思いsudoますか?バグやタイプミスがchmodありますが、ファイル名がありません。
ilkkachu 2017

回答:


15

コンパイルされた実行可能ファイルの場合man 2 chown

When the owner or group  of  an  executable  file  are  changed  by  an
unprivileged user the S_ISUID and S_ISGID mode bits are cleared.  POSIX
does not specify whether this also should happen  when  root  does  the
chown();  the Linux behavior depends on the kernel version.

逆転chownchmod私のためにオーダー作品:

$ sudo chmod 4770 foo
$ sudo chown root:root foo
$ stat foo
  File: 'foo'
  Size: 8712        Blocks: 24         IO Block: 4096   regular file
Device: 801h/2049d  Inode: 967977      Links: 1
Access: (0770/-rwxrwx---)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2017-04-18 15:15:15.074425000 +0900
Modify: 2017-04-18 15:15:15.074425000 +0900
Change: 2017-04-18 15:15:33.683725000 +0900
 Birth: -
$ sudo chmod 4777 foo
$ ./foo
1000,0

15

最初のケースでは、setuidとして実行するのが嫌いなのはBashです。

実効ユーザー(グループ)IDが実際のユーザー(グループ)IDと等しくない状態でBashが開始された場合、実効ユーザーIDは実際のユーザーIDに設定されます。

参照:スタートアップファイルに関するBashのマニュアル、またSetuidビットはbashに影響を与えないようです。

2番目のケースでは、muruがすでに回答しているように、それが順序でchmodありchown、問題です。所有者を変更すると、setuidビットがリセットされます。


ああ、私はOPがスクリプトセットアップにsetuid bashを使用していることに気付きませんでした。
muru

5

また、テスト実行可能ファイルを含むファイルシステムがnosuidオプションでマウントされた可能性もあります。新しいディストリビューションではデフォルトで/tmpでこれが実行されると聞いたことがありますが、これを適用することについても適切な議論があり/homeます。 nosuidカーネルに、ファイルシステム内のすべての実行可能ファイルのsetuidビットとsetgidビットを無視させます。(ディレクトリ setgid を作成したときに発生する無関係なことは影響を受けません。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.