Невозможно возобновить работу из режима ожидания. Что я могу сделать, чтобы это исправить?

Конечно, основная загадка здесь в том, что проверка разрешений файловой системы основана на комбинации (эффективного UID и) эффективного GID и дополнительных GID. Таким образом, с точки зрения проверки разрешений файлов, эффективный GID эквивалентен дополнительным GID, что приводит к вопросу ОП. (Вскользь: если мы говорим о Linux, то на самом деле при проверке прав доступа к файлам используются UID/GID файловой системы, а не эффективные UID и GID, но первые идентификаторы почти всегда имеют те же значения, что и вторые.)

Итак, должны быть случаи, когда реальные/эффективные/сохраненные GID не эквивалентны дополнительным GID. (Я группирую реальные/эффективные/сохраненные GID вместе, потому что обычные правила разрешения set*gid() говорят, что непривилегированный процесс может изменить любой из этих GID на то же значение, что и один из двух других.)

И действительно, таких случаев несколько. access(2) делает свои проверки на основе реального ID пользователя и ID группы процесса. Если непривилегированный пользователь смог изменить реальный идентификатор группы так, чтобы он совпадал с одним из дополнительных GID, который не является эффективным или сохраненным установленным GID, то поведением access(2) можно было бы манипулировать.

Существуют и другие подобные случаи. Пример см. на странице руководства Linux mkdir(2). В зависимости от того, установлен ли бит режима set-GID в родительском каталоге, новый файл, созданный в каталоге, получает групповое владение от эффективного GID создающего процесса. Опять же, если непривилегированный процесс может изменить свой эффективный GID так, чтобы он совпадал с одним из его дополнительных GID, он может манипулировать групповой принадлежностью новых файлов неожиданным образом. Аналогичные замечания относятся к mknod(2) и вызовам System V IPC semget(2), shmget(2) и msgget(2).

Существуют также некоторые специфические для Linux случаи, когда реальный/эффективный/сохраненный набор GID не эквивалентен дополнительному GID. Смотрите, например, process_vm_readv(2) и prlimit(2).

1
26.04.2019, 17:30
1 ответ

Я случайно получил обходной путь. Кажется, это как-то связано с graphical.target.
Я думал о том, чтобы попробовать dwm и Xfce. Затем я установил lightdm, чтобы легко переключаться между WM. Теперь компьютер не зависает при выходе из режима ожидания.
Я сомневаюсь, что когда я использовал startx, я использовал bare .xinitrc. Но когда я использовал lightdm, он запускал некоторые важные службы systemd. Этот ответ не кажется полным. Кто-нибудь, пожалуйста, просветите меня о том, что могло вызвать эту проблему.

0
28.01.2020, 00:13

Теги

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