распечатать файл / 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 .

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 на сценариях оболочки

  • ptrace suid binaries после отмены привилегии
  • Почему Ubuntu не использует возможности для ping?
  • в чем цель setuid включена без исполняемого бита?
  • Как работает механизм set-user-ID в Unix?
  • Почему этот пример setUID не работает?
  • Почему setuid on / sbin / dhclient не работает так, как предполагалось?
  • Изменение UID файлов в / proc
  • Почему ping требует разрешения setuid?
  • открытие ошибки kcheckpass / var / log / faillog
  • Как работает sudo (помимо setuid)?
  • Как настроить параметры Unix для 360 Spatial Workstation (в частности, аудио-плагины vst и aax), чтобы заставить его работать как не-администратор?
  • Как suid iwconfig на Debian wheezy?
  • Linux и Unix - лучшая ОС в мире.