Как запускать приложения как root?

У меня странная проблема с Кейт и Крайт. Когда я нажимаю на Открыть файл, он падает с ошибкой сегментации.

Я новичок в Linux и думаю, что проблема в том, что я не запускаю приложение от имени пользователя root.

Как мне запускать приложения как root в Ubuntu? Это плохая практика, чтобы сделать это? Какова цель всего рута, когда даже если нам нужно использовать рут так часто, он не используется по умолчанию?

5 ответов

Довольно просто запустить программу от имени пользователя root.

Для консольной программы используйте

sudo <program name>

Если это приложение с графическим интерфейсом

gksudo <program name>

UNIX-подобные операционные системы (включая Linux) используют концепцию, называемую разделением привилегий, для обеспечения безопасности системы. UNIX с самого начала была спроектирована как многопользовательская система, то есть она была разработана таким образом, чтобы многие люди могли одновременно использовать один компьютер под управлением UNIX. Поскольку большинству пользователей не требуется возможность изменять основную систему, эта привилегия должна иметь только системный администратор. Этот привилегированный пользователь традиционно называется root. (Root очень похож на администратора в Windows.)

Это имеет смысл на нескольких уровнях. Обычно веб-сервер или другой процесс, который предоставляет порт другим (возможно, злонамеренным) компьютерам, будет работать как его собственный пользователь (Apache работает как пользователь). nobody), так что даже если программа веб-сервера будет взломана, злоумышленник не сможет так легко уничтожить всю машину. Это даже имеет смысл в основном для однопользовательских компьютеров, таких как настольные компьютеры: если, например, другим членам вашей семьи каким-то образом удается запустить rm -rf / (НЕ запускайте это), у них не будет разрешения на удаление всех файлов в системе, как если бы не было такого понятия, как разделение привилегий.

Есть несколько команд, которые вы можете использовать для повышения своих привилегий. sudo Команда существует для временного предоставления вам привилегий корневого уровня, когда они нужны вам для администрирования системы. Вы также можете использовать команды gksudo или же su, Последний может использоваться, только если вы знаете пароль пользователя root и является хорошим вариантом, если ваша учетная запись не имеет разрешения на использование sudo,

Пользователь root может делать что угодно в системе, почти без исключений. Таким образом, даже если вы запросите что-то случайно, это будет выполнено практически без предупреждения, даже если это вредно для здоровья вашей системы. Вот почему рекомендуется выполнять большинство ваших действий как обычный пользователь и использовать root только при необходимости, например, при установке программы.

Вам не нужно использовать root, чтобы избавиться от ошибки сегментации. Если root - единственное, что исправляет segfault, то в программе есть ошибка. Программы не должны так терпеть неудачу только потому, что у них нет рута.

В дополнение к предыдущему ответу, в котором говорится о sudo и gksudo, да, это определенно плохая практика - запускать программу от имени пользователя root, если только она не является административной.

Пожалуйста, попробуйте найти причину сбоя программ. Пожалуйста, обратитесь за помощью к другим, если вам нужно.

Вы также можете перейти к /usr/share/applications в Ubuntu и отредактируйте файл запуска приложения, которое вы пытаетесь запустить.
Как я редактировал файл github atomОбычно я использую подстановочный знак, чтобы найти такие файлы

sudo nano atom*

Это откроет atom.desktop файл, теперь найдите команду Exec и добавьте gksudo. Например,

До

Exec=/usr/share/atom/atom %U  

После

Exec=gksudo -k -u root /usr/share/atom/atom %U

Теперь, когда приложение запускается, оно запрашивает пароль root.

Если вы получаете такую ​​ошибку:

      sudo: program-name: command not found

при вызове таким образом:

      sudo program-name args

Например:

      sudo dotnet run --configuration Release
      sudo: dotnet: command not found

Вы можете получить путь к программе, используя

      which program-name

И затем используйте этот путь:

      sudo path_to_program args

Пример:

      sudo $(which dotnet) --configuration Release
Другие вопросы по тегам