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

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

  • Как я могу подражать поведению su с sudo?
  • Почему я могу переключиться на пользователя, но не запускать сценарий, поскольку он
  • Сохранение текущего стиля командной строки после использования 'su?'
  • bash - su и $ HOME
  • rsync как другой пользователь
  • Есть ли способ переключиться на «su -» после переключения пользователей через «su»?
  • Как переключить пользователя с предварительно настроенными учетными данными в SSH-терминал после входа в систему как стандартный пользователь
  • «Sudo su» делает меня пользователем root?
  • 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

    Interesting Posts

    Могу ли я программировать на щенке Linux?

    Передайте переменную окружения из текущей оболочки в системный блок

    Запись удаленных данных на диск

    Assp не запускается

    Добавление в места Наутилуса

    Загрузка файлов в Skype и Firefox останавливается Audacious под Gnome

    В чем разница между всеми параметрами и значением по умолчанию в настройках ядра?

    Удалите опцию «ipv6only» из модуля Puppet nginx

    Каковы преимущества обмена на устройстве raid-1 (зеркало)?

    CasperJS и PHP In Cron Job не могут открывать файлы, отлично работают при запуске Manualy

    Почему Linux не позволяет мне играть с / dev / dsp?

    Как я могу просматривать состояние и управлять скриптом python, регулярно выполняющимся на сервере?

    Denyhosts: как всегда разрешать некоторым известным пользователям?

    Этот пользователь в настоящее время недоступен – но разрешить запуск скрипта этим пользователем

    Как правильно установить базовые диски XDG по всему миру и динамически

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