su или sudo?
С давних времен многих смущает разнообразие вариантов обеспечения безопасности при выполнении операций с максимальными привилегиями. Например, в официальной документации Ubuntu в качестве команды редактирования рекомендуется использовать что-то вроде sudo nano , а в многочисленных любительских мануалах (в стиле «5 фокусов в командной строке, которые удивят вашу бабушку») для получения root’ового шелла предлагается писать sudo su — . Попробую объяснить, почему такое положение вещей кажется мне неправильным.
Исторически единственным универсальным способом выполнить команду от имени другого пользователя в Unix была программа su. Запущенная без параметров, она запрашивала пароль суперпользователя и в случае успеха просто подменяла текущее имя пользователя на root, оставляя почти все переменные окружения от старого пользователя (кроме PATH, USER и еще пары-тройки, см. man su от своего дистрибутива). Более корректно было запускать ее как su — — в таком случае оболочка получала также и правильный environment. С параметром -c можно было выполнить команду: su -c «vim /etc/fstab» .
При этом доверенным пользователям приходилось помнить пароль root’а и у всех пользователей, перечисленных в группе «wheel» (т.е. в группе, члены которой могли выполнить команду su и стать суперпользователем), был одинаковый неограниченный доступ ко всей системе, что являлось серьёзной проблемой безопасности.
Затем появилась команда sudo, и это был прорыв. Теперь администратор мог указывать список разрешенных команд для каждого пользователя (или группы пользователей), файлы, доступные для редактирования, специальные переменные окружения и многое другое (все это великолепие управляется из /etc/sudoers , см. man sudoers от своего дистрибутива). При запуске sudo спрашивает у пользователя его собственный пароль, а не пароль root. Полноценный шелл можно получить с помощью » sudo -i «
Стоит особо упомянуть о специальной команде sudoedit , безопасно запускающей редактор, указанный в переменной окружения $EDITOR . При более традиционной схеме редактирование файлов производилось примерно так:
sudo vi /etc/fstab
Запускаемый таким образом vi наследовал оболочку с неограниченными правами и через :! пользователь мог запускать любую команду (если, конечно, админ не позаботился об этом заранее) и открыть любой файл.
sudoedit проверяет, можно ли этому пользователю изменять данный файл, затем копирует указанный файл во временный каталог, открывает его в редакторе (который наследует права пользователя, а не root’а), а после редактирования, если файл был изменён, с особыми предосторожностями копирует его обратно.
В Debian-based дистрибутивах пользователь root не имеет пароля, вместо этого все административные действия должны производиться через sudo или его графический аналог gksudo . Являясь полной заменой su , sudo должна бы быть единственной командой переключения между пользователями, однако, как было сказано вначале, в настоящий момент это не так и все зачем-то изобретают дикие последовательности из sudo, su, vi и черточек.
Поэтому предлагаю всем раз и навсегда запомнить:
что хотим сделать? | правильно | неправильно |
выполнить команду от имени root | sudo command | su -c «command» |
отредактировать файл от имени root | sudoedit file | su vim file sudo vim file |
получить оболочку root | sudo -i | su — sudo su — |
После первой публикации этой заметки мне было задано несколько вопросов. Из ответов получилось сделать мини-FAQ.
Q: как с помощью sudo сделать su -c «echo 1 > /etc/privileged_file» ? sudo echo 1 /etc/privileged_file ругается на «permission denied»
A: Это происходит потому, что только команда echo выполняется в повышенными правами, а результат перенаправляется в файл уже с правами обычного пользователя. Чтобы добавить что-нибудь в privileged_file, нужно выполнить такую команду:
$ echo 1| sudo tee -a privileged_file >/dev/null
Или же временно стать рутом:
$ sudo -i # echo 1 > privileged_file # exit $
- по умолчанию sudo записывает всю пользовательскую активность в syslog-канал authpriv (как правило, результат кладется в файл /var/log/auth.log), а в su подобную фичу надо включать с помошью задания специального параметра в файле настроек, различающемся от дистрибутива к дистрибутиву ( SULOG_FILE в /etc/login.defs в Ubuntu Linux, /etc/login.conf и /etc/pam.d/su в FreeBSD и т.д.)
- в случае с su администратор системы не может ограничить команды, выполняемые пользователями, а в sudo — может
- если пользователь должен быть лишен права администрирования, в случае с su после удаления его из группы wheel он должен забыть пароль root’а; если используется sudo, достаточно вынести его из соответствующей группы (например, wheel или admin) и/или файла sudoers, если он был дополнительно настроен.
Источник: habr.com
Инструкция по команде su
Команда su используется для запуска команд от имени другого пользователя, например, для запуска утилит с повышенными привилегиями от имени root.
Чтобы выполнить КОМАНДУ с правами root используйте конструкцию:
su -c КОМАНДА
su -c whoami
Чтобы открыть оболочку для пользователя root с инициализацией его переменных среды (например, $HOME):
Чтобы выполнить команду ‘Get-Help Get-Alias -Full’ с правами root в оболочке /usr/bin/pwsh-preview:
su -c ‘Get-Help Get-Alias -Full’ -s /usr/bin/pwsh-preview
Для чего нужна команда su
su позволяет запускать команды с замещающим идентификатором пользователя и группы.
При вызове без указания пользователя su по умолчанию запускает интерактивную оболочку от имени пользователя root. Когда указан пользователь, могут быть предоставлены дополнительные аргументы, и в этом случае они передаются оболочке.
Для обратной совместимости su по умолчанию не изменяет текущий каталог и устанавливает только переменные среды $HOME и $SHELL (плюс $USER и $LOGNAME, если целевой пользователь не является пользователем root). Рекомендуется всегда использовать опцию «—login» (вместо её псевдонима «-»), чтобы избежать побочных эффектов, вызванных смешиванием сред.
su в основном предназначен для непривилегированных пользователей, рекомендуемое решение для привилегированных пользователей (например, сценарии, выполняемые пользователем root) — использовать команду runuser без идентификатора пользователя, которая не требует аутентификации и предоставляет отдельную конфигурацию PAM. Если сеанс PAM вообще не требуется, рекомендуется использовать команду setpriv.
Обратите внимание, что su во всех случаях использует PAM (pam_getenvlist) для окончательной модификации среды. Параметры командной строки, такие как —login и —preserve-environment, влияют на среду до того, как она будет изменена PAM.
Что использовать sudo или su?
У программы su похожее назначение: запустить команду с подстановкой ID другого пользователя и группы. То есть одинакового результата можно добиться используя как sudo, так и su.
Различия между этими программами вы найдёте в разделе «Что использовать sudo или su?».
Смотрите также:
- Что такое sudo
- Как пользоваться sudo
Как использовать команду su
Синтаксис команды следующий:
su [ОПЦИИ] [-] [ПОЛЬЗОВАТЕЛИ [АРГУМЕНТ. ]]
Опции команды su:
-c, —command=КОМАНДА
Передаёт команду оболочке с параметром -c.
-f, —fast
Передаёт значение -f оболочке, что может оказаться полезным, а может и не оказаться полезным, в зависимости от оболочки.
-g, —group=ГРУППА
Указывает основную группу. Эта опция доступна только пользователю root.
-G, —supp-group=ГРУППА
Укажите дополнительную группу. Эта опция доступна только пользователю root. Первая указанная дополнительная группа также используется как основная группа, если не указан параметр —group.
-, -l, —login
Запуск оболочки как оболочки с входом в систему со средой, похожей на реальный вход в систему. Эта опция делает следующее:
- • очищает все переменные среды, кроме $TERM и переменных, указанных в —whitelist-environment
- • инициализирует переменные среды $HOME, $SHELL, $USER, $LOGNAME и $PATH
- • изменяет домашнюю папку на папку целевого пользователя
- • устанавливает argv[0] оболочки на «-», чтобы сделать оболочку оболочкой с входом в систему
-m, -p, —preserve-environment
Сохраните всю среду, т.е. не устанавливайте $HOME, $SHELL, $USER или $LOGNAME. Этот параметр игнорируется, если указан параметр —login.
-P, —pty
Создайте псевдотерминал для сеанса. Независимый терминал обеспечивает лучшую безопасность, поскольку пользователь не использует терминал совместно с исходным сеансом. Это можно использовать, чтобы избежать внедрения терминала TIOCSTI ioctl и других атак на безопасность дескрипторов файлов терминала. Весь сеанс также можно переместить в фоновый режим (например, «su —pty — username -c application date» | su —pty), то флаг ECHO для псевдотерминала отключён, чтобы избежать беспорядочного вывода.
-s, —shell=ОБОЛОЧКА
Запускает указанную оболочку вместо оболочки по умолчанию. Оболочка для запуска выбирается в соответствии со следующими правилами в следующем порядке:
- оболочка, указанная с помощью —shell
- оболочка, указанная в переменной окружения $SHELL, если используется опция —preserve-environment
- оболочка, указанная в записи passwd целевого пользователя
- /bin/sh
Список доступных в операционной системе оболочек можно вывести командой:
chsh -l
Смотрите также:
- Как в Linux изменить login shell (оболочку входа в систему). Инструкция по команде chsh
- Как узнать, какая оболочка используется в Linux
Если у целевого пользователя ограниченная оболочка (то есть не указана в /etc/shells), параметр —shell и переменные среды SHELL игнорируются, если вызывающий пользователь не является пользователем root.
—session-command=КОМАНДА
То же, что и -c, но не создаёт новый сеанс.
-w, —whitelist-environment=СПИСОК
Не сбрасывать переменные среды, указанные в списке, разделённом запятыми, при очистке среды для —login. Белый список игнорируется для переменных среды $HOME, $SHELL, $USER, $LOGNAME и $PATH.
-V, —version
Отобразите информацию о версии и выйдите.
-h, —help
Показать текст справки и выйти.
Типичными примерами использования su является выполнение КОМАНДЫ от имени root:
su -c КОМАНДА
Также su может использоваться для открытия интерактивной оболочки с правами root:
Источник: zalinux.ru
SuperSU
SuperSU — Если у вас есть root права, то вы определенно имеете расширенный доступ ко всем приложениям и многим другим аспектам в управлении смартфоном. Однако что вы ответите, если я скажу вам что спектр этих прав можно увеличить, при помощи всего одного приложения? Это приложение менеджер для андроида который расширит ваши права суперпользователя. С его помощью вы даже сможете на время убирать root доступ на своем смартфоне. Так же здесь присутствует целый ряд дополнительных функций, все преимущества которых вы можете узнать лично.
Источник: pdalife.to
Что вызывает и как исправить ошибку «SU файл занят»
Во время изучения возможностей своего смартфона вы часто будете сталкиваться с незнакомыми терминами и командами. Root открывает пользователю доступ к новым системным настройкам, без которых выжать максимум из своего Android у вас не получится. И одним из обязательных компонентов root является SuperSU.
Разбираемся, что это такое и как бороться с самой распространённой ошибкой – SU файл занят. SuperSU – это термин, который вы часто будете встречать везде, где нужен root. Итак, что такое SuperSU? SuperSU – это приложение, позволяющее управлять полномочиями root для приложений, которым необходим особый доступ. Существует множество приложений, требующих для полноценного функционала доступа root.
Всякий раз, когда для приложения требуется root-доступ, SuperSU запрашивается ваше разрешение на предоставление корневого доступа к системным функциям и настройкам смартфона. Таким образом, у вас есть полный контроль над правами доступа root для всех приложений. Хотя приложение очень мало по размеру, оно имеет несколько замечательных функций, и именно поэтому это единственное приложение для администрирования root, которое вам когда-либо понадобится.
Устранение проблемы «SU файл занят».
- Всякий раз, когда приложение требует доступа root, SuperSU отображает всплывающее окно с просьбой предоставить ему доступ. Вы можете либо предоставить root-доступ, либо запретить его. Имейте в виду, что для каждого приложения всплывающее окно будет отображаться только один раз. Ваш выбор будет сохранен, так что вам не нужно предоставлять или запрещать доступ root каждый раз при запуске программы.
- Приложение позволяет просматривать список всех программ, которым было предоставлено разрешение на root-доступ, и какие из них были отклонены.
- Он сохраняет логи, как когда и какие приложения получили разрешение root. Записи хранятся на второй вкладке, которая называется «LOGS».
- Вы можете отключить своё устройство. Либо полностью, либо временно.
Приложение полностью бесплатное, но есть также версия с платная версия, которая предлагает дополнительные функции, такие как настройка регистрации приложений на Per-app и защита PIN-кодом. Для установки приложения необходимы root-права. Если вы их уже получили, процесс не составит никакого труда. В противном случае сначала нужно получить root через кастомное рекавери, такое как TWRP или CWM.
Это означает, что вам необходимо установить TWRP или CWM Recovery на ваше устройство. Иначе вам не удастся продолжить работу с SuperSU. Режим Bootloader/Fastboot позволяет вам создавать на устройстве любые разделы, будь то система, загрузка, recovery, кэш или любые другие. Через fastboot также можно запускать не только образы OEM-приложений и разделов от официальных разработчиков, но и пользовательские файлы с расширением .img. Например, TWRP-recovery.
TWRP-recovery – это специальное восстановление для устройств Android, разработанное и поддерживаемое командой TeamWin. Оно позволяет вам делать множество вещей, которые не предлагают ни Google, ни производитель вашего устройства. Например, полное резервное копирование всего устройства. Используя TWRP-recovery, вы в любой момент сможете восстановить смартфон из копии своего девайса. Помимо резервного копирования, TWRP также позволяет прошивать неподписанные zip-файлы, которые включают в себя скрипты для рутирования, пользовательские ROM/MOD и другие подобные вещи.
Поскольку не все устройства Android одинаковы, установка TWRP для каждого из девайсов проходит по-своему. Кроме того, в интернете есть как официальные, так и неофициальные (кастомные) сборки. Это связано с тем, что TWRP-recovery является проектом с открытым исходным кодом, и любой, у кого есть соответствующие знания, может написать сборку recovery TWRP для любого устройства на Android. Вы сможете скачать официальную сборку TWRP для своего устройства на веб-сайте TeamWin. Установка TWRP-recovery:
- Скачайте файл TWRP-recovery с расширением .img, совместимый с вашим устройством, и сохраните его в отдельной папке на ПК.
- Установите ADB и настройте Fastboot на ПК.
- Включите отладку USB на вашем устройстве:
- откройте Настройки смартфоне;
- перейдите в раздел «О телефоне» и коснитесь 7 раз на номере сборки, это позволит активировать Параметры разработчика;
- теперь вернитесь к настройкам, и вы увидите там новое меню – Параметры разработчика. Откройте его;
- поставьте флажок «Отладка по USB».
- Откройте папку, в которой вы сохранили файл .img на шаге 1.
- Теперь внутри этой папки откройте командную строку. Для этого нажмите Shift + правая клавиша мыши на пустом пространстве внутри папки, а затем в контекстном меню выберите «Открыть командную строку здесь».
- Подключите устройство к ПК. Чтобы запустить устройство в режиме fastboot/bootloader, введите в командное окно код:
Если на устройстве открылось диалоговое окно с надписью «Разрешить отладку USB», нажмите «ОК». После того, как ваше устройство загрузится в режиме загрузчика, для запуска установки TWRP-recovery введите следующую команду:
fastboot flash recovery twrp.img
Как только TWRP будет успешно прошит, для перезагрузки введите команду:
Готово! Теперь на вашем устройстве установлено TWRP-recovery. Чтобы загрузиться в только что установленное recovery, после полной загрузки девайса введите команду adb reboot recovery из командной строки ПК.
Руководство по установке SuperSU для укоренённых устройств:
- Загрузите и установите SuperSU в Google Play Store.
Вот и всё. Теперь, если по какой-либо причине вы увидите сообщение об ошибке «SU Binary Occupied» (SU бинарный файл занят), не беспокойтесь. Для этого есть решение.
Что означает ошибка
Ошибка SuperSU «Su файл занят» означает, что приложение пытается дать root-права аналогичному софту (например, KingRoot). В результате приложения обращаются к одному и тому же бинарному файлу, что приводит к критической ошибке. Чаще всего она встречается в версиях 2.80, 2.81, 2.82. Лучше пользоваться стабильной версией 2.79 без обновлений.
Решение проблемы
Операционная система Android выводит пользователей смартфонов на совершенно новый уровень управления, а функционал root-устройства, позволяющий устанавливать на него корневые приложения, настраиваемые ядра и ПЗУ, делает его преимущества ещё более очевидными. Однако после укоренения устройства и установки SuperSU (самого популярного из множества приложений для администрирования Superuser, доступных в Play Маркете), многие пользователи Android сталкиваются и пытаются решить ошибку «SU файл занят».
Что делать? Эта ошибка чаще всего вызвана неправильной установкой или повреждённым бинарным файлом SuperSU. Большинство пользователей, которые испытывают трудности с рутированием своего устройства Android, пытаются избавиться от проблемы различными способами. Если вы также столкнулись с ошибкой «SU Binary Occupied», пользуйтесь только проверенными и работающими методами, описанными ниже.
Обновление бинарного файла SuperSU
Для обновления бинарного файла SuperSU на Андроиде выполните следующие действия:
- Перейдите на официальный сайт SuperSU.
- Загрузите предыдущую (не последнюю!) версию APK-файла на свой телефон.
- Установите APK-файл.
- После установки запустите приложение. Откроется диалоговое окно: «SU Binary нужно обновить». Нажмите «Продолжить», а затем нажмите «Нормальный».
- Установка обновлений будет продолжаться пару минут. Перезагрузите устройство.
- После того, как ваше устройство включится, перейдите в магазин Google Play и проверьте наличие обновлений. Обновите приложение SuperSU до последней версии.
Даже после обновления до последней версии приложение может предложить вам обновить SU Binary. Просто выполните действия и перезагрузите устройство. И проблема больше не возникнет.
Через командную строку
Root на андроиде позволяет разблокировать новые интересные возможности. После рутирования вашего устройства Android вы сможете легко делать то, что не могли раньше. Если после установки SuperSU появляется ошибка «SU файл занят», устранить её можно через командную строку. Итак, для начала:
- Загрузите и установите Terminal Emulator для Android.
- Найдите и скачайте «Replace_Kinguser_with_SuperSU-v2.4.zip». Распакуйте файл.
Шаги по решению ошибки SU Binary Occupied:
- Извлеките ZIP-файл Replace_Kinguser_with_SuperSU и перенесите извлечённую версию на внутреннюю память устройства. Установите Terminal Emulator для Android и извлеките файл Replace_Kinguser_with_SuperSU. После этого переместите извлечённую папку «mrw» на внешний накопитель.
- Откройте Terminal Emulator и введите команды.
Откройте приложение терминала и введите команду «su», после ввода вам будет предложено окно с запросом об отказе/предоставлении функций. После предоставления разрешений вам нужно будет набрать строку кода:
ВАЖНО. После ввода этой команды может возникнуть ошибка, которую нужно проигнорировать. SuperSU запустится в автоматическом или ручном режиме.
После этого перезагрузите смартфон, и вы увидите, что SuperSU установлен, обновлён и работает без ошибок.
Установка SU файла при помощи кастомного recovery
ВАЖНО. Вам нужно иметь TWRP или CWM Recovery, только тогда этот метод будет работать.
Прежде чем приступать к выполнению следующих действий, рекомендуется создать резервные копии файлов.
- Перейдите на официальный сайт SuperSU и загрузите на своё устройство самый последний zip-файл SuperSU.
- Переместите загруженный zip-файл в корень вашего внутреннего хранилища (не на карту памяти).
- Выключите устройство и перезагрузитесь в recovery, нажав одновременно кнопку Power и Volume Down в течение нескольких секунд.
- Нажмите «Установить» (Install).
- Найдите файл ZIP-файла SuperSU. Помните, что в TWRP внутреннее хранилище называется sdcard, а внешнее хранилище называется sdcard1. Если вы переместили ZIP-файл SuperSU в корень внутреннего хранилища, искать его нужно в каталоге sdcard.
- Выберите zip-файл и подтвердите выбор свайпом.
- Нажмите Wipe Cache https://nastroyvse.ru/programs/review/kak-reshit-problemu-su-fajl-zanyat.html» target=»_blank»]nastroyvse.ru[/mask_link]