LINUX.ORG.RU

Можно ли из программы инициировать «заблокировать систему», как WIN+L в винде? Не знаю как коротко точнее объяснить.


0

1

Привет

У меня есть debian без графической оболочки. При старте системы консоль заблокирована - просит логин и пароль. Я всё это ввожу, и работаю нормально. А можно ли в процессе, не останавливая все запущенные в фоне задачи, заблокировать консоль, чтобы она снова начала требовать пароль, после ввода которого можно работать дальше? Если да, то есть ли какие-то api функции, чтобы это действие могла совершать написанная мной программа?

Извиняюсь за несколько сумбурное объяснение, только начинаю изучать linux)


Cтандартных средств для этого нет даже близко. Впрочем, можно отнять у foreground-процесса терминал (подобно тому, что происходит по Ctrl+Z) и запустить какую-то свою привилегированную программу, попутно запретив Ctrl+Z... В общем, что бы это ни было, тебе придётся писать это самостоятельно, включая демона-блокировщика, и API придумывать тоже самостоятельно.

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 2)

Теоретически, можно написать скрипт, который будет разлогинивать тебя в консоли по нажатию win+L.

Deleted
()

Например можно убить процесс оболочки.
Например в консоли можно отдать команду kill $PPID
Ну понятно что PPID для запущенного сценария будет не тот же, что и для оболочки.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 1)

ALT+CTRL+F2

В качестве временного решения для блокировки.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)

screen, tmux... Залогинился, запустил, работаешь, нужно отойти - отцепился и вышел. Затем например из дома вошел через ssh, снова подцепился, продолжаешь работать...

Jameson ★★★★★
()
Ответ на: комментарий от torvn77

Например можно убить процесс оболочки.
Например в консоли можно отдать команду kill $PPID

Вот это мне подходит, проверил. А что, нельзя как-то поприличнее разлогиниться в линуксе?)

termik
() автор топика

Может тебе просто wm сессию заблокировать? Для этого есть инструменты для различный wm/de.

pi11 ★★★★★
()
Ответ на: комментарий от termik

Я может не совсем точно сформулировал задачу сначала. У меня все нужные задачи запущены через nohup, они же продолжат выполняться после разлогинивания в консоли?

termik
() автор топика
Ответ на: комментарий от termik

Блин, у меня получается прям вылитая «Сага об x, y и z» http://www.riuson.com/blog/post/saga-about-x-y-and-z =))))

Сначала не хотел загружать тупик ненужной лишней информацией, но лучше наверное рассказать всё-таки о глобальной цели всего этого.

В качестве одного из этапов защиты от копирования эмбед-устройства необходимо сделать так, чтобы некий бинарный файл можно было запустить только от имени root с определенным паролем. Хэш пароля зашит в бинарник, и при запуске он сравнивается с текущим хэшем пароля root из /etc/shadow. Если сходится - бинарник расшифровывает на рам диск кое-какую информацию, если нет - не расшифровывает. Это сделано потому, что пароль root легко обнулить, а такая система на первый взгляд полностью от этого защищает.

Но есть один нюанс - злоумышленник может сбросить пароль рута, залогиниться, и записать исходный /etc/shadow, где хэш пароля рута пройдет проверку бинарником. После чего бинарник расшифрует данные и злоумышленник сможет прочитать их. Я же хочу от этого защититься разлогиниванием сразу же после проверки хэша.

termik
() автор топика
Ответ на: комментарий от termik

А что, нельзя как-то поприличнее разлогиниться в линуксе?)

Если я тебя правильно понял то тебе надо вот одно из двух:
script.sh && exit
script.sh ; exit

torvn77 ★★★★★
()
Ответ на: комментарий от torvn77

нет, нельзя так, надо чтобы вся реализация была спрятана в скомпилированном бинарнике. То есть требуется api-функция разлогинивания ОС, чтобы ее использовать в бинарнике

termik
() автор топика
Ответ на: комментарий от termik

В качестве одного из этапов защиты от копирования эмбед-устройства

некий бинарный файл можно было запустить

Если сходится - бинарник расшифровывает на рам диск кое-какую информацию,

Гнусный проприетарщик.

Хэш пароля зашит в бинарник,

и меняется с помощью любого hex редактора.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от torvn77

Гнусный проприетарщик

Надо же как-то защищать свой труд)))

и меняется с помощью любого hex редактора.

а как же узнать, где менять? Если раскидать его старательно, а не подряд хранить.

termik
() автор топика
Ответ на: комментарий от termik

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

LiBer ★★★
()

А можно ли в процессе, не останавливая все запущенные в фоне задачи, заблокировать консоль, чтобы она снова начала требовать пароль

Ты хочешь какую-то фигню. Просто выйди из шелла и всё.

no-such-file ★★★★★
()
Ответ на: комментарий от termik

запущены через nohup, они же продолжат выполняться после разлогинивания в консоли

Да.

no-such-file ★★★★★
()
Ответ на: комментарий от LiBer

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

Ну понятно, что всё можно хакнуть, иначе бы не было столько вареза на просторах интернета. Другое дело, что можно затруднить хакинг настолько, что проще будет купить, чем взломать)

termik
() автор топика
Ответ на: комментарий от termik

А прецеденты были? Кажется люди покупают не от недостатка вареза, а из совокупности большего удобства легальной доставки контента и нужд совести и тп

LiBer ★★★
()

Выключи монитор.

tm4
()
Ответ на: комментарий от termik

Единственное что тут смогли придумать это выность части функционала программы непосредственно в переферийное железо.
Всякие USB брелочки с расчётами или спец контролёры как в пинакле студио.

torvn77 ★★★★★
()

А можно ли в процессе, не останавливая все запущенные в фоне задачи, заблокировать консоль

vlock

arson ★★★★★
()

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

Добавлю только, что неплохо бы в твоём случае шифровать всю файловую систему, расшифровывать во время загрузки (с помощью initrd, ключ для расшифровки вводить с клавиатуры). Иначе можно тем или иным образом твой бинарник из образа ФС достать и разобрать на мелкие кусочки.

tiandrey ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.