Повышаем пользовательские привилегии в Linux

Активируйте возможность локального входа привилегированного пользователя через графическую оболочку в систему. Для этого перейдите в меню «Система» — «Администрирование» — «Окно входа в систему» — «Безопасность», а затем выберите пункт «Разрешить локальный вход…». Перезагрузите компьютер. Теперь вы можете логиниться как root.

Prefase

Как ты помнишь (и как должен помнить каждый адекватный администратор), работать в линуксе под рутом категорически не рекомендуется. В идеальном мире ты должен использовать его только для конфигурирования сервера, установки и обновления ПО и прочих чисто административных задач. Вся беда в том, что мы живем в обычном мире, который очень далек от идеального. Поэтому такая ситуация все же иногда бывает. Правда, в большинстве случаев чисто из-за халатности, ибо так уж исторически сложилось, что пользователям линукса приходилось разбираться в том, как работает их операционная система. А хоть немного разбираясь в системе и ее механизмах безопасности, под рутом уже сидеть не будешь. Поэтому сегодня, в отличие от Windows, где мы говорили о получении системных привилегий из-под админа, будем рассматривать только варианты повышения привилегий от непривилегированного пользователя до рута. Итак, приступим.

Выполнение команд в Windows от имени другого пользователя

Недавно у меня был странный случай с Windows Server 2012. Удалённо не удавалось войти в учётную запись Администратора, так как система никак не могла завершить предыдущую сессию. Такая же ситуация была и с несколькими пользователями, которые в это время работали на сервера. В общем, по непонятным причинам, Windows на серваке частично встала раком.

Выполнение команд в Windows от имени другого пользователя

Зайти на сервер удалось под одним из пользователей, но на перезагрузку у него естественно прав не было. Запустить командную строку cmd от имени администратора или выбрать такой вариант в свойствах ярлыка система тоже не давала. Тут то мне и пригодилась команда runas, предназначенная для выполнения команд под учетной записью пользователя, указанной в качестве параметра командной строки:

Выполнение команд в Windows от имени другого пользователя

runas /user:администратор «shutdown /r»

Выполнение команд в Windows от имени другого пользователя

Признаю, что опыт весьма специфический, но возможно кому-то пригодится.

Выполнение команд в Windows от имени другого пользователя

Если считаете статью полезной,не ленитесь ставить лайки и делиться с друзьями.

Выполнение команд в Windows от имени другого пользователя

Как изменить «Общедоступную сеть» (Public) на «Частную» (Private) в Windows 8.1/Server 2012Код ошибки 0x8007007B при попытке активации Windows Server 20126 популярных страшилок об использовании пиратских копий Windows 10Windows 10 всё? Microsoft переходит на микроядерную Windows 8 до Windows 8.1 через магазинПереход на Windows 7. Первые впечатления

Выполнение команд в Windows от имени другого пользователя

Права в Unix

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

Суть модели прав довольно проста:

  1. У каждого файла есть владелец. Владелец устанавливает права доступа на свои файлы (например, командой chmod).
  2. В системе есть супер-пользователь (root), который устанавливает владельцев файлов (например, командой chown).

Теперь подробнее по первому пункту.

Доступ по пользователям делится на 3 группы

  1. Владелец (user) — тот самый, что имеет возможность изменять права доступа.
  2. Группа (group) — какая-то группа пользователей, которая должна иметь определённые права на файл. Посмотреть группы пользователя можно командой

    $ groups gosha gosha : gosha adm cdrom sudo dip plugdev lpadmin sambashare libvirtd

    — пользователь gosha состоит в группах: gosha adm cdrom sudo dip plugdev lpadmin sambashare libvirtd.

    С другой стороны можно посмотреть всех пользователей, состоящих в группе:

    $ grep cdrom /etc/group cdrom:x:24:gosha

    Не самый элегантный способ, но работает на всех Unix. Также можно использовать утилиты lid и members.

  3. Все другие (other) — любой пользователь, существующий в системе.

Сами права доступа также делятся на 3 группы

  1. Права на чтения (read или «4» в битовой маске) — право читать файл или читать содержимое директории.
  2. Права на запись (write или «2» в битовой маске) — право писать в файл или создавать файлы в директории.
  3. Право на исполнение (execute или «1» в битовой маске) — право запускать файл (программу, записанную в файле) или переходить по директории вглубь (например, сделать cd в поддиреторию).

Битовая маска прав доступа

Давайте посмотрим права на папку /bin, например, с помощью команды ls -l / | grep bin :

drwxr-xr-x 2 root root 4096 май 6 03:24 bin |||||||||| |||||||||+-исполнение для всех остальных — разрешено ||||||||+—запись для всех остальных — НЕ разрешено |||||||+—чтение для всех остальных — разрешено ||||||+—-исполнение для группы владельца — разрешено |||||+——запись для группы владельца — НЕ разрешено ||||+——чтение для группы владельца — разрешено |||+——-исполнение для владельца — разрешено ||+———запись для владельца — разрешено |+———чтение для владельца — разрешено +———-тип файла — диретория

Читайте также:  Как заблокировать пользователя, который заблокировал вас в Instagram?

Кроме указанного представления полномочий доступа (символьного), существует так же и числовое представление. Для общего понимания, приведу таблицу соответствия числового (двоичного и десятичного) значения прав доступа и буквенного:

владелец группа остальные
буквенное rwx r-x r-x
числовое (десятичное) 421 401 401
итоговое (сумма) 7 5 5

В приведенной таблице показано, что право чтения, соответствует значению 4, право записи — 2, право выполнения — 1, отсутствие права — 0, складывая данные показатели, можно представлять и назначать права в числовом виде. Таким образом, вместо drwxr-xr-x можно написать 755. Часто можно увидеть именно числовое определение прав доступа — теперь вы понимаете, что это значит.

Часто можно увидеть на файле права 644 — постарайтесь понять, что это значит, чтобы закрепить полученные знания.

Синтаксис

В синтаксисе данной команды нет ничего сложного.

sudo [параметры] [программа] [настройки]

Утилита дает возможность выполнить практически любую команду в ОС Linux. Сложностей не возникнет даже у нового пользователя.

Утилита «по умолчанию» запустит именно ту команду, которая была указана вами. Стоит отметить, что она будет запущена от имени «суперпользователя» root. Если вам требуется соблюдение определённых параметров, потребуется ввести настройки. Для этих целей в команде обязательно прописывается опция или еще ее называют аргумент.

Основные параметры:

  • «-A» (—askpass). В ОС «Линукс» согласно первоначальным настройкам запрашивается пароль от терминала. Если воспользоваться данной опцией, утилита предложит графическое введение параметров.
  • «-b» (—background). В этом случае будет запущена требуемая программа в фоновом режиме.
  • «-C» (—close-from). Здесь потребуется передать опции численное значение, которое будет более трех. С помощью такого функционала задаются файловые дескрипторы, которые распространяются на программу. Исключена вероятность классического вывода и ввода информации.
  • «-E» (—preserve-env). Эта функция передает переменное окружение, которое имеется у текущего пользователя, запускаемой программе. Опции дополнительно можно передавать определённый перечень переменных, которым разрешается доступ.
  • «-e» (—edit). С использованием опции появляется возможность редактирования обрабатываемого файла вместо запуска определённой команды. Этот файл помещается в созданный временно каталог, где корректируется через специальную программу. Стоит отметить, она установлена в ОС «по умолчанию». Если вы внесли изменения в файл, он будет сохранен с теми же правами.
  • «-g». В этом случае отображается указываемая вами группа вместо группы, присущей иному владельцу.
  • «-h». Опция даёт возможность запустить команду от иного имени, чаще всего, от имени иного хоста.
  • «-H» (—set-home). Появляется возможность создать свой каталог.
  • «-i» (—login). Такая опция дает возможность пройти авторизацию в определенной консоли от имени стороннего пользователя. Здесь определяется адрес домашней папки, загружается весь перечень переменных из окружения пользователя.
  • «-k». После введения опции sudo не сохраняет данные пароля. Спустя определенный промежуток времени повторно можно пользоваться утилитой, но обязательно нужно вводить пароль.
  • «-l» (—list). дает возможность посмотреть список команд, которые распространяются на удаленных пользователей.
  • «-n» (—non-interactive). Здесь запускается неинтеррактивный режим. При необходимости введения пароля на экране монитора появится ошибка.
  • «-p» (—prompt). позволяет использовать свои приглашения при вводе пароля.
  • «-r» (—role). Программа выполняется с контекстом SE Линукс. У него уже прописана первоначальная роль.
  • «-S». Опция дает возможность применить стандартный поток ошибок. Это осуществляется при запросе данных пароля.
  • «-s» (—shell). Есть возможность включить командный интерпретатор.
  • «-U» (—User). Такая команда применяется совместно с функцией «-l», дает возможность изучить имеющие привилегии у пользователя.
  • «-T» (—timeout). У пользователя появляется возможность настроить время осуществления определённой команды. Если оно закончится до того, как команда завершится, она закроется в принудительном порядке.
  • «-u». Такая опция дает возможность прописать имя пользователя.
  • «—». Эта функция исключит вероятность обработки последующих опций.

Представленный выше список функций является ориентировочным. На самом деле опций огромное количество, остальные используются весьма редко.

Примеры

Стоит рассмотреть наиболее популярные примеры применения команды.

Весьма часто пользователям требуется запустить определённую программу с правами root. Для этих целей потребуется прописать «sudo». К примеру, поменяем пароль для пользователя «user».

sudo passwd user

Запуск программы от имени другого пользователя. В данном случае потребуется использовать опцию «-u».

sudo -u user nano

sudo –i localnet

Редактирование системных файлов. Для осуществления поставленной перед пользователем задачи необходимо применить опцию «-е». Она откроет редактор, который установлен в системе согласно изначальным настройкам.

Читайте также:  Изучение команд командного интерпретатора bash в ос linux

sudo -e /etc/group

Запуск программы в фоне. Для этого нужна опция «-b», которая позволит выполнить задачу.

sudo -b программа -с /путь_к_файлу_с_конфигурацией.

Выше описаны только общие примеры, которые чаще всего требуются пользователям операционной системы «Линукс».

Если копнуть глубже…

Это загадочное слово — sudo

Sudo — программа дающая возможность системным администраторам позволять пользователям выполнять команды как root (или другой пользователь). Основная философия — позволить людям выполнить свою задачу, используя как можно меньше привилегий. Также sudo эффективный способ для записи деятельности root: кто использует sudo, какую команду и когда.

Использование sudo лучше (безопаснее) открытия сессии root, по следующим причинам:

  • Нет необходимости в пароле root (sudo запрашивает пароль текущего пользователя)
  • По умолчанию команды выполняются от имени обычного пользователя (не привилегированного), что позволяет избежать ошибок. От имени root выполняются только команды с префиксом sudo.
  • Проверка/запись: когда выполняется sudo, записывается имя пользователя и исполняемая команда.

По этим причинам, переключение на root с помощью «sudo -i» (или sudo su) считается устаревшим, поскольку отменяет вышеперечисленные особенности.

Добавление пользователя в группу sudo

Получаем права Root-пользователя:

$ su

И вводим пароль суперпользователя

Пользователи, которым разрешено работать с правами ROOT, перечисляются в файле /etc/sudoers

Чтобы внести туда нового пользователя открываем файл /etc/sudoers для редактирования:

# visudo

1 способ. Находим в нем

# User privilege specification

root    ALL=(ALL:ALL) ALL

Вручную прописываем пользователя. Для этого после вышеуказанной строки добавляем:

user_name   ALL=(ALL:ALL) ALL

Перезагружаем систему и теперь пользователь может работать с правами ROOT, используя свой пароль.

2 способ. Находим строку

#%sudo   ALL=(ALL:ALL) ALL

и раскомментируем её, убрав значок «#», после чего необходимо сохранить изменения. Затем набираем команду:

#adduser user_name sudo

это добавит пользователя в группу sudo. Перезагружаем систему.

Блокировка правил

Существует ряд способов контроля поведения и реакции sudo на вызов.

К примеру, команда updatedb в сочетании с пакетом mlocate относительно безвредна. Чтобы обычный пользователь мог выполнять её с привилегиями суперпользователя, не вводя пароль, можно создать такое правило:

GROUPONE ALL = NOPASSWD: /usr/bin/updatedb

Команда NOPASSWD значит, что система не будет запрашивать пароль. Также существует команда PASSWD, которая отвечает за противоположное поведение и используется по умолчанию.

NOPASSWD распространяется на всё правило, если команда PASSWD не отменяет его. Например, строка может выглядеть так:

GROUPTWO ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill

Ещё одна удобная команда – NOEXEC, которая используется для предотвращения опасного поведения определенных программ. К примеру, некоторые команды, такие как less, могут вызывать другие команды:

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

Чтобы запретить такое поведение, можно использовать следующую строку:

username ALL = NOEXEC: /usr/bin/less

Как создать пользователя sudo в Ubuntu для учетной записи vivek

Введите следующую команду:

# adduser vivek sudo

ИЛИ используйте команду usermod для того, чтобы добавить пользователя в группу на Linux:

# usermod -aG sudo vivek

$ sudo usermod -aG sudo vivek

$ sudo adduser vivek sudo

Примеры возможных выводов данных:

Рисунок 02: Добавить пользователя vivek в sudo, чтобы получить права администратора

Подтвердите нового пользователя и члена группы с помощью :

$ id vivek

Примеры возможных выводов данных:

Рисунок 03: Показать информацию о пользователе и группе

Теперь пользователь vivek может войти в систему с помощью команды ssh следующим образом:

$ ssh [email protected]

Убедитесь, что vivek может использовать команду sudo:

Как создать пользователя sudo в Ubuntu для учетной записи vivek

$ sudo cat /etc/sudoers

При первом использовании команды sudo вам будет предложено ввести пароль учетной записи vivek. Поэтому введите пароль vivek для получения доступа root . Любой тип команды с sudo должен запускаться с привилегиями root для учетной записи vivek . Чтобы получить корневую оболочку, введите:

$ sudo –s

Примеры возможных выводов данных:

Рисунок 03: Тестирование доступа sudo для учетной записи пользователя vivek

И вот вы справились. Теперь вы можете разрешать другим пользователям запускать sudo на сервере Ubuntu и предоставлять пользователям права администратора.

В операционной системе Linux есть много отличных функций безопасности, но она из самых важных — это система прав доступа к файлам. Linux, как последователь идеологии ядра Linux в отличие от Windows, изначально проектировался как многопользовательская система, поэтому права доступа к файлам в linux продуманы очень хорошо.

И это очень важно, потому что локальный доступ к файлам для всех программ и всех пользователей позволил бы вирусам без проблем уничтожить систему. Но новым пользователям могут показаться очень сложными новые права на файлы в linux, которые очень сильно отличаются от того, что мы привыкли видеть в Windows. В этой статье мы попытаемся разобраться в том как работают права файлов в linux, а также как их изменять и устанавливать.

Читайте также:  Как установить Linux: подробнейшая инструкция

Изначально каждый файл имел три параметра доступа. Вот они:

  • Чтение — разрешает получать содержимое файла, но на запись нет. Для каталога позволяет получить список файлов и каталогов, расположенных в нем;
  • Запись — разрешает записывать новые данные в файл или изменять существующие, а также позволяет создавать и изменять файлы и каталоги;
  • Выполнение — вы не можете выполнить программу, если у нее нет флага выполнения. Этот атрибут устанавливается для всех программ и скриптов, именно с помощью него система может понять, что этот файл нужно запускать как программу.

Но все эти права были бы бессмысленными, если бы применялись сразу для всех пользователей. Поэтому каждый файл имеет три категории пользователей, для которых можно устанавливать различные сочетания прав доступа:

  • Владелец — набор прав для владельца файла, пользователя, который его создал или сейчас установлен его владельцем. Обычно владелец имеет все права, чтение, запись и выполнение.
  • Группа — любая группа пользователей, существующая в системе и привязанная к файлу. Но это может быть только одна группа и обычно это группа владельца, хотя для файла можно назначить и другую группу.
  • Остальные — все пользователи, кроме владельца и пользователей, входящих в группу файла.

Именно с помощью этих наборов полномочий устанавливаются права файлов в linux. Каждый пользователь может получить полный доступ только к файлам, владельцем которых он является или к тем, доступ к которым ему разрешен. Только пользователь Root может работать со всеми файлами независимо от их набора их полномочий.

Но со временем такой системы стало не хватать и было добавлено еще несколько флагов, которые позволяют делать файлы не изменяемыми или же выполнять от имени суперпользователя, их мы рассмотрим ниже:

sudo не спрашивает пароль

sudo без пароля — чудовищная дыра в безопасности, кому попало разрешено делать что угодно. Если вы разрешили это намеренно — срочно верните обратно как было.

Однако, в некоторых случаях sudo внезапно перестаёт требовать пароль само по себе. Если сделать visudo , то можно увидеть примерно такую строку, которую пользователь вроде бы не добавлял:

ALL ALL=(ALL) NOPASSWD:ALL

Скорее всего, эта катастрофичная строка была добавлена при установке программы типа Connect Manager от МТС или Мегафона. В таком случае, её нужно поменять на строку, разрешающую с правами root запускать только этот Connect Manager, примерно так:

Юзернейм ALL= NOPASSWD: /путь/к/программе

Есть и другие варианты решения проблемы, небольшое обсуждение .

Пользователь root и sudo

Пользователь root в системах GNU/Linux — это пользователь, имеющий административный доступ к вашей системе. Обычные пользователи не имеют этого доступа по соображениям безвасности. Тем не менее в Kubuntu нет пользователя root. Вместо этого, административный доступ предоставляется отдельным пользователям, которые могут использовать приложение «sudo» для выполнения административных задач. Первая учетная запись, созданная при установке системы по умолчанию будет иметь доступ к приложению sudo. Вы можете запретить доступ к sudo или предоставить его с помощью приложения Пользователи и Группы (см. «Пользователи и Группы»).

Если Вы запустите программу, требующую прав суперпользователя, sudo потребует ввести ваш обычный пользовательский пароль. Это гарантирует, что вредоносные приложения не смогут повредить вашу систему, а также напомнит Вам, что Вы собираетесь выполнить административные действия, которые требуют особой осторожности!

Чтобы использовать sudo в командной строке, просто наберите «sudo» перед командой, которую Вы хотите запустить. После этого sudo попросит ввести ваш пароль.

Sudo будет помнить ваш пароль установленное время (по умолчанию 15 минут). Эта возможность позволяет пользователям выполнять большое количество административных задач без необходимости каждый раз вводить пароль.

Внимание

Будьте осторожны при выполнении административных задач — вы можете испортить вашу систему!

Некоторые советы по использованию sudo:

    Чтобы использовать терминал пользователя root, наберите «sudo -i» в командной строке

    Вся группа графических утилит конфигурации в Kubuntu уже использует sudo, так что при необходимости у вас попросят пароль с помощью приложения kdesu , которое является графической оболочкой sudo .

    За дальнейшей информацией по программе sudo и отсутствию пользователя root в Kubuntu обращайтесь к странице sudo на сайте Ubuntu wiki.

Запуск программ вручную с привилегиями root

Иногда необходимо выполнить программу с привилегиями root. Это легко сделать с помощью диалога Выполнить команду .

Внимание

Пожалуйста, будьте осторожны, выполняя приложения с привилегиями root, так как это может испортить вашу систему. За дополнительной информацией см. «Пользователь root и sudo» .

    Откройте диалог Выполнить команду , нажав Alt -F2

    Введите название программы, которую вы хотите выполнить, с префиксом kdesu и нажмите Enter . Например, чтобы запустить файловый менеджер Konqueror с привилегиями root, наберите