распечатать файл / etc / shadow в консоли

Как изменить разрешения исполняемого файла для доступа к файлу / etc / shadow?

Пока у меня есть следующий сценарий bash:

#!/bin/bash gcc print.c -o print chmod +s print ./print exit 0 

и следующий c-код:

 #include <stdio.h> #include <stdlib.h> int main() { FILE *open = fopen("/etc/shadow", "r"); int tmp; do { tmp = fgetc (open); printf("%c", tmp); } while (tmp != EOF); fclose(open); return 0; } 

Я могу легко распечатать файл /etc/passwd , но я получаю сброшенное ядро, когда пытаюсь получить доступ к файлу /etc/shadow .

  • Почему mac os x не устанавливает бит uid для / usr / bin / passwd
  • Изменение UID файлов в / proc
  • suid executibles работают только тогда, когда они присутствуют в системе PATH
  • root setuid не работает
  • Запуск setuid двоичного временно без setuid?
  • Что означает GID?
  • Могут ли gdb отлаживать корневые программы suid?
  • Бит Setuid, похоже, не влияет на bash
  • 2 Solutions collect form web for “распечатать файл / etc / shadow в консоли”

    Чтобы дать двоичное разрешение для запуска файлов с правами root, вам нужно установить «липкий бит» в двоичном формате.

    Обычно после компиляции вы можете увидеть:

     # ls -l print -rwxr-xr-x 1 mark mark 111 24 Oct 17:32 print 

    Установка бита set-uid (sticky) может быть выполнена с использованием и восьмеричного режима или символически (обратите внимание, что для изменения права собственности на файл вам понадобятся «root»):

     # chown root print # chmod ox print # chmod u+s print # ls -l print -rwsr-xr-- 1 root mark 111 24 Oct 17:32 print 

    В первой версии s в разрешениях, как вы уже выяснили, указывает, что это как исполняемый файл, так и «set-uid». Но вы также должны изменить право собственности на файл, так что «set-uid» устанавливает uid для root, а не для вашего собственного пользователя. На данный момент «группа» не изменила свою ценность, но это не важно в данном конкретном случае. (Хотя это может быть фактором безопасности.)

    В последней строке выше указаны разрешения, которые также могут быть выражены как восьмеричное число, поэтому, если это результат, который вы хотите, вы можете заменить две строки chmod выше одним:

     # chmod 4754 print 

    Посмотрите man-страницу для chmod для более подробной информации.

    Если это не то, что вы ищете, уточните ваши требования в своем вопросе.

    ВАЖНОЕ ПРИМЕЧАНИЕ : файл /etc/shadow хранится конфиденциально по какой-либо причине. Если вы разоблачите его тем, что может быть запущено другими пользователями, вы можете поставить под угрозу безопасность своей системы. Удаление разрешения для исполняемого файла в мире является «кивком» в отношении безопасности, но если вы чувствуете, что вам нужно подвергать /etc/shadow таким образом, вы можете решить неправильную проблему .

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

     chmod u+s [program] chmod 4755 [program] 

    Возможно, вы захотите увидеть SETUID

    Также, если вы хотите обработать это в C:

    Вы должны проверить функцию setuid

    И если вы хотите сделать это в bash:

    Вы должны проверить setuid на сценариях оболочки

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