Debian не загружается в графический интерфейс

Ни в коем случае процесс не может повысить свои собственные привилегии.

У процесса нет абсолютно никакого способа повысить свои привилегии. Если бы это было возможно, то они уже были бы у него.

Если процесс имеет повышенный реальный или сохраненный uid, он может скопировать этот uid в эффективный uid; Если у него есть разрешенные возможности, он может скопировать их в действующий набор, но для начала у него должны быть эти привилегии. Вы не можете заколдовать их из воздуха плавников (что хорошего в замке, для которого вы можете создать ключ по своему желанию).

Так как же повысить привилегии в Unix (включая Gnu / Linux)?

(будьте осторожны с этим, только для экспертов)

Есть два способа (традиционно один, но они оба похожи, и оригинал может однажды исчезнуть). Для обоих это происходит, когда вы вызываете exec. (ОК, я солгал выше, потому что после запуска exec мы находимся в том же процессе, с измененными привилегиями, но выполняем новый код).

  • устанавливает setuid и / или setuid бит исполняемого файла: когда файл exec отредактирован, идентификатор пользователя и / или идентификатор группы изменится на идентификатор файла (возможно, root), ( это не слово для скриптовых языков в большинстве Unix).
  • устанавливает биты возможностей исполняемого файла: когда файл exec отредактирован, процесс получит возможности, установленные в файле. Теперь это рекомендательный метод.
    • Если вы конвертируете программу root, seduid в возможности, то вы устанавливаете разрешенные возможности по мере необходимости и устанавливаете эффективный бит (это скопирует все разрешенные в действующие).
    • Когда вы пишете новую программу, она может быть осведомлена о возможностях, поэтому лучше не устанавливать эффективный бит, программа может копировать и очищать эффективные возможности по мере необходимости (это снижает влияние ошибки, включая эксплойты).

Пример:

//renice.cc
#include <unistd.h>
#include <sys/capability.h>

class Renice {
  cap_t original_cap_state;
  cap_t can_nice_cap_state;
  cap_value_t cap_list[1];

public:
    Renice() {
    original_cap_state = cap_get_proc();
    if ( original_cap_state == NULL)
      /* handle error */;
    can_nice_cap_state = cap_get_proc();
    if ( can_nice_cap_state == NULL)
      /* handle error */;
    cap_list[0] = CAP_SYS_NICE;
    if (cap_set_flag(can_nice_cap_state, CAP_EFFECTIVE, 1, cap_list, CAP_SET) == -1)
      /* handle error */;
  }

  ~Renice() {
    if (cap_free(original_cap_state) == -1 )
      /* handle error */;
  }

  void new_value(int v) {
    if (cap_set_proc(can_nice_cap_state) == -1)
      /* handle error */;

    nice (v);
    /* handle error */

    if (cap_set_proc(original_cap_state) == -1)
      /* handle error */;
  }
};

int main () {
  Renice renice;
  renice.new_value(-1);
  nice (-2); //won't work, capability no longer set
  sleep (30);
}
  • скомпилировать с помощью: g ++ -lcap renice.cc
  • установить возможности с помощью: sudo setcap CAP_SYS_NICE + p a.out
  • запустить с: ./ a .out
13
19.05.2015, 22:30
2 ответа

Иногда это происходит, если у вас заканчивается место на жестком диске, если вы можете освободить место с помощью команды «CD» для навигации по каталогам ur и использовать команду «rm 'file'», чтобы удалить файл, который может дать вам немного свободного места. затем используйте команду выключения, чтобы выйти и снова запустить компьютер, и он загрузится с графическим интерфейсом пользователя. Писай

-3
27.01.2020, 19:53

У меня был GDM3, в Debian SID после обновления до нестабильного пакета GDM не работал,

После нескольких поисков в Google я нашел решение, удалив файл.ICEauthority и затем настроив GDM3 для использования только X11 из /etc/gdm3/something.conf

-1
27.01.2020, 19:53

Теги

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