Альтернатива su / sudo для barebone-системы

Я хотел бы запустить некоторые модульные тесты в тюрьме chroot в Solaris. Нет su или sudo , и копия sulibpam.so.1 ) просто возвращает код выхода 1 без вывода, с параметрами или без них. Есть ли простой способ запускать сценарии Bash в качестве пользователя без полномочий root в такой системе? Может быть, setuid или сценарий оболочки?

2 Solutions collect form web for “Альтернатива su / sudo для barebone-системы”

Если я правильно понимаю, вам просто нужно su от root к другому пользователю. Попробуйте скопировать su бинарный файл (ему не нужно будет устанавливать setuid root), но я не знаю, будет ли это работать на Solaris. Или скомпилируйте небольшую программу на C, которая снижает привилегии и выполняет команду.

Вот маленькое «только-только» su. Минимально проверены. Должен компилироваться, как в Solaris и * BSD; вам нужно -D_BDS_SOURCE и #include <grp.h> под Linux, а на других платформах может потребоваться комментирование вызова обычных, но нестандартных setgroups . Запустите, например, sugexec UID GID bash /path/to/script (вы должны передавать числовые идентификаторы пользователей и групп, чтобы избежать зависимости от любой формы пользовательской базы данных, которая может быть недоступна в chroot).

 #include <errno.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <sys/types.h> #include <unistd.h> void die(char *argv0, char *obj, char *msg) { if (msg == NULL) msg = strerror(errno); fprintf(stderr, "%s: %s: %s\n", argv0, obj, msg); exit(127); } int main(int argc, char *argv[]) { uid_t uid; gid_t gid; char *endp; /* Command line parsing */ if (argc <= 3) { fprintf(stderr, "Usage: %s UID GID COMMAND [ARG...]\n", argv[0]==NULL ? "sugexec" : argv[0]); exit(127); } uid = strtoul(argv[1], &endp, 0); if (*endp) die(argv[0], argv[1], "Bad uid"); gid = strtoul(argv[2], &endp, 0); if (*endp) die(argv[0], argv[2], "Bad gid"); /* Drop to specified user and group */ if (setgid(gid)) die(argv[0], "setgid", NULL); if (setgroups(0, NULL)) die(argv[0], "setgroups", NULL); if (setuid(uid)) die(argv[0], "setuid", NULL); /* Execute the command */ execvp(argv[3], argv + 3); die(argv[0], argv[3], NULL); } 

Отсканируйте schroot, который может прокручиваться в папку как пользователь. Вот страница man для него: http://manpages.ubuntu.com/manpages/hardy/man1/schroot.1.html

  • Почему pam_exec.so работает с sudo, а не с su?
  • Должен ли я использовать `sudo` или` su` в сценарии запуска?
  • не может ssh на удаленный хост с корнем, неверный пароль
  • Как предоставить sudo доступ пользователям abc, def, ghi на пользователя jkl
  • запустить команду с sudo su в скрипте и перенаправить stdin и stdout
  • Почему «su -c <command> &», по-видимому, позволяет команде запускаться в фоновом режиме без зависания
  • Почему мы не можем выполнять список команд как пользователь без sudo?
  • Почему root не является источником .bash_profile?
  • root не может подключиться к symlinked socket другого пользователя
  • Как su для пользователя-демона?
  • Как выполнить команду при входе в систему для пользователя системы без домашней папки и личного файла .bashrc?
  • Почему я не могу войти в систему как пользователь ftp?
  • Interesting Posts

    Как открыть tty или выполнить какой-либо скрипт, когда ярлык Ctrl + Alt + F не работает, а X11 частично заморожен, но система все еще работает?

    Тар сжать папку без указания имени файла

    Запись в следующую строку в разделенном PIPE файле

    Проблема с установкой RHEL с UEFI на рабочем столе HP Compaq

    Предложения, необходимые для отладки, почему ps -ef застрял

    Настройка туннеля SSH в существующем соединении из сценария

    Извлеките подстроку из значения переменной

    Получить имя окна в Red Hat GNOME

    почему «find -xdev» показывает каталоги на всех разделах?

    CentOs 7 Python Issue "-bash: python: команда не найдена"

    сопоставление режимов вставки стрелок vim

    Linux-сервер с чаем-деамоном, подключенным к активному каталогу, защищающему клиентов от использования драйверов или PPD

    Как установить один пакет Jessie на Wheezy?

    Как учесть env vars shell-session, контексты с chroot

    Неясная ошибка autotools с проектом Epson iscan

    Linux и Unix - лучшая ОС в мире.