Страницы

Поиск по вопросам

Показаны сообщения с ярлыком root. Показать все сообщения
Показаны сообщения с ярлыком root. Показать все сообщения

воскресенье, 29 марта 2020 г.

Права администратора в Qt

#cpp #qt #root


Есть приложение на Qt, и обычно располагается в Program Files. В некоторых случаях,
когда запускается программа, она запрашивает/не запрашивает права администратора. 
Что нужно дописать, чтобы запускался всегда с правами админа.
    


Ответы

Ответ 1



Чтобы программа запрашивала права администратора в Windows, нужно внедрить в неё файл манифеста. Файл внедряется в готовый исполняемый файл программой mt. Обычно она устанавливается вместе с Visual Studio. Если вы не используете Visual Studio, то вам придётся установить эту программу отдельно, читайте соответствующую документацию. Файл манифеста может выглядеть следующим образом: Description of application Сохраните этот файл под именем manifest.xml рядом с вашим исполняемым файлом. После этого запустите в командной строке: mt -manifest manifest.xml -outputresource:your_program.exe Чтобы манифест автоматически внедрялся в файл при сборке проекта в Qt Creator, нужно добавить в pro-файл сценарий пост-линковки: win32 { QMAKE_POST_LINK += mt -manifest $$PWD/manifest.xml -outputresource:$$OUT_PWD/$$TARGET".exe" $$escape_expand(\n\t) }

пятница, 31 января 2020 г.

Автоматическое включение Android телефона при подключении зарядки

#android #файловая_система #system #root


Всем доброго времени суток. Есть телефон, из которого я хотел бы сделать видео-регистратор
для моего автомобиля. Програмку то написал, которая будет видео записывать, сохранять
и т.д. Но как сделать так, чтобы телефон включался при подключении USB-зарядки, провод
которой вставлен в розетку 220B?

ROOT доступ полный. Модель телефона - ZTE Blade Q Lux 3G PRO. Android 4.4.2.

В интернете читал статьи как это сделать на телефонах Samsung. Как сказано тут в
одном из ответов, необходимо изменить содержимое файлов /system/bin/playlpm или /system/bin/lpm,
но ни того, ни другого файла в моём телефоне не существует. Насколько я понял принцип,
надо найти файл, который запускает анимацию батарейки



и добавить строчки включения системы:


  #!/system/bin/sh
  
  /system/bin/reboot


Пробовал менять всё содержимое на эти строки в следующих файлах:


/system/bin/bootanimation
/system/bin/ipod
/system/bin/chcon


Безрезультатно. Может какие-то другие файлы надо изменить? Или вообще в другой папке
копаться надо? Подскажите.



Когда попробовал проделать такой трюк с файлом /system/bin/chcon у меня перестала
работать кнопка отключения дисплея. То есть, короче, как я включил телефон, так дисплей
и работает, не отключается и не реагирует на кнопку выключения. Только после восстановления
прежнего файла всё стало нормально после перезагрузки телефона. Так что делаю вывод,
что автоматическое включение реализовать возможно. Каждый системный файл действительно
запускает скрипты, каждый свой, и отвечает каждый сам за себя. Необходимо лишь понять
где нужный файл анимации заряда батареи телефона и где в нём именно надо вписать команду
включения.
    


Ответы

Ответ 1



Для того, чтобы телефон запускался при подключении зарядки необходимо выполнить следующие действия. Скачать и установить на компьютер программу Adb Run. Она необходима для установки соединения с телефоном по USB-проводу. Скачать и установить на компьютер программу Bootimg. Она необходима для редактирования файла boot.img прошивки телефона. Патч программы должен быть C:\Users\Admin\. Скачать прошивку (ZIP-архив) на компьютер. Из архива достать файл boot.img и положить в папку с программой Bootimg. Открыть системную консоль (Меню пуск -> cmd). Ввести следующую команду: bootimg --unpack-bootimg Открыть создавшуюся папку initrd, найти в ней файлы init.rc и init.charging.rc. Открыть их. В каждом из них находим строки: service ipod /system/bin/ipod user root group root и после них ниже пишем: class_start core class_start main class_start default Сохраняем и закрываем оба файла. Возвращаемся в консоль. Пишем следующую команду: bootimg --repack-bootimg Запускаем программу Adb Run. По умолчанию она устанавливается в C:\adb\. Выбираем пункт 5, затем 0. Телефон должен войти в режим Fastboot. Затем выбираем пункт 1, и затем 1. В консоли должны отобразится как минимум две строки: List of devices attached 0123456789ABCDEF device Если вы видите только это: List of devices attached то у Вас могут быть следующие ошибки: Не включена отладка USB в режиме разработчика Некорректно подключён USB-провод или, возможно, повреждён В диспетчере устройств (Правой кнопкой мыши по ярлыку "Мой компьютер"; Свойства; Диспетчер устройств) телефон отображается как неизвестное устройство, например, как на скриншоте здесь Затем выбираем пункт 5, затем 0. Ждём, когда на экране телефона появится надпись FASTBOOT mode.. или что-то наподобие. Выбираем пункт 7, затем 1, и затем пишем: fastboot flash boot C:\Users\Admin\boot-new.img Ждём, когда в консоли появится надпись Done... в конце в случае успешной установки boot.img. Затем опять пишем в консоли: fastboot reboot Закрываем программу Adb Run (консоль). Отключаем телефон от компьютера. После загрузки телефона выключаем его. Подключаем телефон к зарядке 220В, и, в течение 10 секунд телефон сам включится. На этом всё готово. Если у Вас произошли какие-то ошибки или что-то пошло не так, я прошу написать в комментариях. Буду рад помочь! Я хочу ещё дать людям совет: Если с первой попытки выполнить процедуру не получилось по какой-либо причине, попробуйте ещё несколько раз внимательно выполнить все выше перечисленные действия. Если версия Android - 4.4 и выше, то могут возникнуть ошибки и, возможно, ничего не получится. Как мне, например, ответила поддержка корпорации ZTE на вопрос "возможно ли хоть как-то реализовать автовключение телефона при..." мне ответили, что видите ли на данном лаунчере такая функция недоступна. И я понял, что решить проблему можно лишь откатом версии Android с 4.4 на 4.2.

Ответ 2



Если я правильно помню, такая фишка зависит от загрузчика, типа TWRP. Но в старых версиях при подключении usb-зарядки, загрузка начинается и заканчивается только на самом загрузчике. Чтобы запустить далее андройд, нужно вручную выбрать пункт system reboot. Покопайте в этом направлении.

вторник, 31 декабря 2019 г.

Получение прав root

#linux #пароль #root


Как получить права root в CentOS 6.6, если пароль root не был задан при установке
(система не требовала) на виртуальную машину WMVare?

Не помогает sudo или su - требует пароль root или мой, при вводе которого сообщается,
что меня нет в файле sudoers.
    


Ответы

Ответ 1



Нужно загрузится в single режим, для этого пускаем систему в ребут, на момент выбора ядра ос (загрузщик GRUB) нажимаем кнопку "E", после чего откроется окно в котором будут написаны параметры загрузки, Вам нужно в конце строки с параметрами дописать single или s. После редактирования нажимаем Enter, а потом кнопку "b" для загрузки. После загрузки будет открыт термиал, вводим команду passwd root , дальше задаем новый пароль для рута. Перезагружаемся, все готово

Ответ 2



если при установке не предлагалось ввести пароль для пользователя root, то созданный во время установки первый пользователь, как правило, включается в группу sudo или wheel (в разных дистрибутивах по-разному), которая, как правило, присутствует в файле /etc/sudoers. поэтому этот пользователь может использовать программу sudo (и различные «обёртки» вокруг неё, типа gksudo, kdesudo и т.п.), подтвердив (при запросе) полномочия вводом своего пароля. но если уже после установки был, например, утерян пароль этого первого пользователя, или он был исключён из этой группы, или вносились изменения в /etc/sudoers по поводу группы sudo/wheel, то следует: загрузиться в single-режим, добавив к параметрам ядра (через пробел) букву s. в разных дистрибутивах/версиях это может быть сделано по-разному, но обычно встречаются лишь два глобальных варианта: а) строка параметров ядра отображается сразу (или предлагается нажать какую-нибудь f-клавишу для её редактирования). после добавления (через пробел) s обычно достаточно нажать enter (но могут быть варианты: читайте подсказку на экране); б) с помощью кнопки (обычно e, но могут быть варианты: читайте подсказку на экране) отредактировать параметры загрузки. там будет много строк, надо найти строку(-и), начинающуюся со слова linux — это и будут параметры ядра, к которым и надо дописать (через пробел) s (если таких строк больше одной — на всякий случай исправьте их все). продолжить загрузку можно обычно клавишей f10 или b, но могут быть варианты: читайте подсказку на экране. после загрузки вы попадёте в root-овую консоль, где можно вводить команды от имени root. сначала надо перемонтировать корневую файловую систему в режим чтения-записи такой командой: mount -o remount,rw / затем сменить пароль пользователя root командой passwd root (старый пароль при этом не будет запрошен). затем сбросить дисковый кэш на диск командой sync теперь можно перезагружать компьютер клавишами ctrl+alt+delete (или кнопкой reset или кнопкой питания).

воскресенье, 22 декабря 2019 г.

Sudo: command not found на некоторых командах

#linux #sudo #root


Подскажите почему может не работать команды с sudo, если sudo -s работает?

$ sudo ll
sudo: ll: command not found

    


Ответы

Ответ 1



Это может происходить, если ll — псевдоним. Например: $ which ll ll: aliased to ls -lh В таком случае sudo не сработает, потому что псевдоним не распознаётся. Выход такой: добавьте в ваш ~/.bashrc (~/.zshrc) строку alias sudo='sudo ' Теперь сработает: $ sudo ll Password: total 1240 ... Дело в том, что для распознавания псевдонима необходимо, чтобы первое слово в выполняемой команде было псевдонимом. Если последний символ значения псевдонима — пробел, то следующее за первым псевдонимом слово также будет проверяться как псевдоним. Из bash manual: Aliases allow a string to be substituted for a word when it is used as the first word of a simple command. The shell maintains a list of aliases that may be set and unset with the alias and unalias builtin commands. The first word of each simple command, if unquoted, is checked to see if it has an alias. If so, that word is replaced by the text of the alias. The characters ‘/’, ‘$’, ‘`’, ‘=’ and any of the shell metacharacters or quoting characters listed above may not appear in an alias name. The replacement text may contain any valid shell input, including shell metacharacters. The first word of the replacement text is tested for aliases, but a word that is identical to an alias being expanded is not expanded a second time. This means that one may alias ls to "ls -F", for instance, and Bash does not try to recursively expand the replacement text. If the last character of the alias value is a space or tab character, then the next command word following the alias is also checked for alias expansion. Решение и цитата взяты из этого ответа на Ask Ubuntu: Aliases not available when using sudo Кстати, не вижу большого смысла применять sudo к команде ls. Это сработает точно так же: $ sudo ls $ ls -A

вторник, 2 апреля 2019 г.

Автоматическое включение Android телефона при подключении зарядки

Всем доброго времени суток. Есть телефон, из которого я хотел бы сделать видео-регистратор для моего автомобиля. Програмку то написал, которая будет видео записывать, сохранять и т.д. Но как сделать так, чтобы телефон включался при подключении USB-зарядки, провод которой вставлен в розетку 220B?
ROOT доступ полный. Модель телефона - ZTE Blade Q Lux 3G PRO. Android 4.4.2.
В интернете читал статьи как это сделать на телефонах Samsung. Как сказано тут в одном из ответов, необходимо изменить содержимое файлов /system/bin/playlpm или /system/bin/lpm, но ни того, ни другого файла в моём телефоне не существует. Насколько я понял принцип, надо найти файл, который запускает анимацию батарейки

и добавить строчки включения системы:
#!/system/bin/sh /system/bin/reboot
Пробовал менять всё содержимое на эти строки в следующих файлах:
/system/bin/bootanimation /system/bin/ipod /system/bin/chcon
Безрезультатно. Может какие-то другие файлы надо изменить? Или вообще в другой папке копаться надо? Подскажите.

Когда попробовал проделать такой трюк с файлом /system/bin/chcon у меня перестала работать кнопка отключения дисплея. То есть, короче, как я включил телефон, так дисплей и работает, не отключается и не реагирует на кнопку выключения. Только после восстановления прежнего файла всё стало нормально после перезагрузки телефона. Так что делаю вывод, что автоматическое включение реализовать возможно. Каждый системный файл действительно запускает скрипты, каждый свой, и отвечает каждый сам за себя. Необходимо лишь понять где нужный файл анимации заряда батареи телефона и где в нём именно надо вписать команду включения.


Ответ

Для того, чтобы телефон запускался при подключении зарядки необходимо выполнить следующие действия.
Скачать и установить на компьютер программу Adb Run. Она необходима для установки соединения с телефоном по USB-проводу. Скачать и установить на компьютер программу Bootimg. Она необходима для редактирования файла boot.img прошивки телефона. Патч программы должен быть C:\Users\Admin\ Скачать прошивку (ZIP-архив) на компьютер. Из архива достать файл boot.img и положить в папку с программой Bootimg. Открыть системную консоль (Меню пуск -> cmd). Ввести следующую команду:
bootimg --unpack-bootimg
Открыть создавшуюся папку initrd, найти в ней файлы init.rc и init.charging.rc. Открыть их. В каждом из них находим строки:
service ipod /system/bin/ipod user root group root
и после них ниже пишем:
class_start core class_start main class_start default
Сохраняем и закрываем оба файла. Возвращаемся в консоль. Пишем следующую команду:
bootimg --repack-bootimg
Запускаем программу Adb Run. По умолчанию она устанавливается в C:\adb\. Выбираем пункт 5, затем 0. Телефон должен войти в режим Fastboot. Затем выбираем пункт 1, и затем 1. В консоли должны отобразится как минимум две строки:
List of devices attached 0123456789ABCDEF device
Если вы видите только это:
List of devices attached
то у Вас могут быть следующие ошибки:
Не включена отладка USB в режиме разработчика Некорректно подключён USB-провод или, возможно, повреждён В диспетчере устройств (Правой кнопкой мыши по ярлыку "Мой компьютер"; Свойства; Диспетчер устройств) телефон отображается как неизвестное устройство, например, как на скриншоте здесь
Затем выбираем пункт 5, затем 0. Ждём, когда на экране телефона появится надпись FASTBOOT mode.. или что-то наподобие. Выбираем пункт 7, затем 1, и затем пишем:
fastboot flash boot C:\Users\Admin\boot-new.img
Ждём, когда в консоли появится надпись Done... в конце в случае успешной установки boot.img. Затем опять пишем в консоли:
fastboot reboot
Закрываем программу Adb Run (консоль). Отключаем телефон от компьютера. После загрузки телефона выключаем его. Подключаем телефон к зарядке 220В, и, в течение 10 секунд телефон сам включится. На этом всё готово.
Если у Вас произошли какие-то ошибки или что-то пошло не так, я прошу написать в комментариях. Буду рад помочь!

Я хочу ещё дать людям совет: Если с первой попытки выполнить процедуру не получилось по какой-либо причине, попробуйте ещё несколько раз внимательно выполнить все выше перечисленные действия.

Если версия Android - 4.4 и выше, то могут возникнуть ошибки и, возможно, ничего не получится. Как мне, например, ответила поддержка корпорации ZTE на вопрос "возможно ли хоть как-то реализовать автовключение телефона при..." мне ответили, что видите ли на данном лаунчере такая функция недоступна. И я понял, что решить проблему можно лишь откатом версии Android с 4.4 на 4.2.

пятница, 16 ноября 2018 г.

Sudo: command not found на некоторых командах

Подскажите почему может не работать команды с sudo, если sudo -s работает?
$ sudo ll sudo: ll: command not found


Ответ

Это может происходить, если ll — псевдоним. Например:
$ which ll ll: aliased to ls -lh
В таком случае sudo не сработает, потому что псевдоним не распознаётся. Выход такой: добавьте в ваш ~/.bashrc (~/.zshrc) строку
alias sudo='sudo '
Теперь сработает:
$ sudo ll Password: total 1240 ...
Дело в том, что для распознавания псевдонима необходимо, чтобы первое слово в выполняемой команде было псевдонимом. Если последний символ значения псевдонима — пробел, то следующее за первым псевдонимом слово также будет проверяться как псевдоним.
Из bash manual
Aliases allow a string to be substituted for a word when it is used as the first word of a simple command. The shell maintains a list of aliases that may be set and unset with the alias and unalias builtin commands. The first word of each simple command, if unquoted, is checked to see if it has an alias. If so, that word is replaced by the text of the alias. The characters ‘/’, ‘$’, ‘`’, ‘=’ and any of the shell metacharacters or quoting characters listed above may not appear in an alias name. The replacement text may contain any valid shell input, including shell metacharacters. The first word of the replacement text is tested for aliases, but a word that is identical to an alias being expanded is not expanded a second time. This means that one may alias ls to "ls -F", for instance, and Bash does not try to recursively expand the replacement text. If the last character of the alias value is a space or tab character, then the next command word following the alias is also checked for alias expansion.
Решение и цитата взяты из этого ответа на Ask Ubuntu: Aliases not available when using sudo
Кстати, не вижу большого смысла применять sudo к команде ls. Это сработает точно так же:
$ sudo ls $ ls -A