Почему мне нужен setuid (0) в setuid-корне C программа, которая называет административную программу с системой ()?

В случае, если у кого-то все еще есть проблемы с быстрым обратным перемещением , аннулируется ошибка , как @fabb прокомментировал в принятом ответе.

Мне удается исправить это путем переопределения viewDidLayoutSubviews, в дополнение к viewWillAppear/viewWillDisappear, как показано ниже:

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.navigationController?.setNavigationBarHidden(false, animated: animated)
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)
    self.navigationController?.setNavigationBarHidden(true, animated: animated)
}

//*** This is required to fix navigation bar forever disappear on fast backswipe bug.
override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    self.navigationController?.setNavigationBarHidden(false, animated: false)
}

В моем случае, я заметил, что это потому, что контроллер корневого представления (где nav скрыт), а контроллер push-представления (показан nav) имеет разные стили строки состояния (например, темный и светлый). В тот момент, когда вы запускаете обратную прокрутку, чтобы открыть контроллер представления, появится дополнительная цветовая анимация строки состояния. Если вы отпустите палец, чтобы отменить интерактивное всплывающее окно, , пока анимация строки состояния не завершена , панель навигации исчезнет навсегда!

Однако эта ошибка не возникает, если стили строки состояния обоих контроллеров представления одинаковы.

11
задан JCCyC 26 June 2009 в 21:32
поделиться

1 ответ

Из man system :

Не использовать system () из программы с set-user-ID или set-group-ID привилегии, потому что странные значения для некоторых переменных среды могут использоваться для нарушения целостности системы. Вместо этого используйте семейство функций exec (3) , но не execlp (3) или execvp (3) . system () фактически не будет работать должным образом из программ с привилегиями set-user-ID или set-group-ID в системах, в которых / bin / sh является bash версии 2. , поскольку bash 2 теряет права при запуске.

И из man bash :

Если оболочка запускается с эффективным идентификатором пользователя (группы), не равным реальному идентификатору пользователя (группы), а параметр -p не предоставляется, файлы запуска не читаются,

19
ответ дан 3 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: