Запустите ant как другой пользователь - PullRequest
3 голосов
/ 31 марта 2011

Если я запускаю задачу от имени пользователя root, есть ли способ определить, что она запускается от имени пользователя root, и запустить определенные задачи от имени другого пользователя.

У меня есть определенные задачи, которые нужно запускать с правами root, но другие задачи, которые нужно запускать как текущий пользователь.

1 Ответ

5 голосов
/ 31 марта 2011

Вы можете использовать что-то вроде следующего, чтобы запускать определенные цели, только если текущий пользователь имеет определенное имя, например, «root».

<condition property="rootTasksEnabled">
    <equals arg1="${user.name}" arg2="root" />
</condition>

<target name="do-stuff-if-root" if="rootTasksEnabled">
    <echo>Doing root stuff</echo>
</target>

Что касается запуска Ant от имени другого пользователя, вы могли быиспользуйте с командой su для запуска другого процесса Ant:

<target name="do-stuff" depends="do-stuff-if-root, do-other-stuff" />

<condition property="rootTasksEnabled">
    <equals arg1="${user.name}" arg2="root" />
</condition>
<property name="targetToRunAsOtherUser" value="do-stuff-as-other-user" />
<property name="otherUser" value="johnny" />

<target name="do-stuff-if-root" if="rootTasksEnabled">
    <echo>Doing root stuff</echo>

    <exec executable="su">
        <arg value="-c" />
        <arg value="${ant.home}/bin/ant -buildfile ${ant.file} ${targetToRunAsOtherUser}" />
        <arg value="${otherUser}" />
    </exec>
</target>

<target name="do-other-stuff">
    <echo>Doing normal build stuff</echo>
</target>

<target name="do-stuff-as-other-user">
    <echo>I am running as ${user.name}</echo>
    <echo>My home is ${user.home}</echo>
</target>

Этот пример работает только под Unix.Для этого в Windows вы, вероятно, могли бы использовать команду runas вместо su .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...