1

Linuxルートコンソールからbashスクリプトを実行します。したがって、このスクリプトはroot権限でアプリケーションを実行します。

しかし、ユーザーとして呼び出されるアプリケーションが必要です。

このシナリオは期待どおりに機能しますか?

4

1 に答える 1

4

特権を使用sudo -u usernameしてプログラムを実行できます。usernameこのような:

sudo -u youruser yourscript.sh

を使用できない場合はsudo、@Torrius が提案したように、次のコマンドを試すことができます。

su - youruser -c "yourscript.sh"

後者のソリューションを使用することさえできない場合は、 parametrized の権限で実行可能ファイルを実行する小さな C プログラムを作成できますuser and group id

このコンセプト コードを見てください。

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[]) {

    if (argc < 3)
    {
        printf("Usage: ./this [uid] [gid]\n");
        return 1;
    }

    setuid(atol(argv[1]));
    setgid(atol(argv[2]));

    execl("/usr/bin/whoami", "whoami", 0, 0);

    return 0;
}

テストするには:

myshell:~ root$ ./a.out 501 501
davide

myshell:~ root$ ./a.out -2 -2
nobody

myshell:~ root$ ./a.out 1 1
daemon
于 2013-03-05T17:55:01.420 に答える