Intereting Posts
команда sed добавить несколько строк Как распечатать общее количество файловых дескрипторов с индексом 24 Что происходит с файлами во время установки триплекс «./configure, make, make install»? удаление `nullok` из system-auth предотвращает любой пароль root Postfix не может отправлять почту только из моего домена Почему в dev нет sda1 и как я могу это исправить? IBM DB2 для Linux AMD64 не устанавливается на Debian Jessie, журнал установки предлагает проблему с поставляемым IBM libdb2ure.so Как разбить RX и TX байты по процессу? «Слишком много открытых файлов ssh», когда количество открытых файлов намного ниже ulimit Подключение к сети с терминалом Удаленное выполнение команд, но все же контроль над хостом Почему прокси-сервер PCI не передает мое устройство гостевой ОС? Как удалить файл с именем «-C» Как поместить текущую строку вверху / центру / внизу экрана в vim? Огромное использование диска на виртуальной машине разработки под управлением Centos 7

Как имитировать Windows, например, пароль администратора в Linux?

Я использую приложение для mint install много, но не думаю, что это безопасно, если я разрешу нормальному пользователю, который я использую, иметь полные права над ним. Мне было интересно, есть ли способ получить доступ к этому приложению только при вводе пароля root. В принципе, можно использовать что-то вроде подсказки пароля администратора для Windows при установке нового приложения в терминал. Я знаю, что могу войти в root с su, но я знаю, что это определенно небезопасно. Есть идеи?

Изменить: Опять же, я не хочу предоставлять привилегии нормальному пользователю, используя sudo или chmod или что-то еще.

Если вам нужно сделать что-то, что требует прав root, вам нужно использовать некоторый метод получения привилегий root, который в большинстве современных систем означает su , sudo или обертку вокруг одного из них. Что опасно в том, что запуск команд с правами root (будь то с su или sudo ) заключается в том, что он дает вам гораздо больше способов повредить вашу систему. Таким образом, вы должны запускать команду только как root, когда команда действительно требует ее.

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

Если вы работаете в терминале и хотите запустить команду с правами root, с помощью su выполните:

 su -c 'somecommand an_argument another_argument' 

С sudo :

 sudo somecommand an_argument another_argument 

В любом случае вам будет предложено ввести пароль (пароль root для su , собственный пароль для sudo ). Судо может запомнить ваш пароль и не спрашивать вас в течение следующих нескольких минут; с su , вам придется вводить его снова каждый раз.

Вы также можете получить графическое приглашение ввести пароль (с помощью gksu , kdesu , …), но если вы уже работаете в терминале, это менее удобно.

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

Если вы хотите запустить свой скрипт как root и немедленно выйти без подсказки пароля и exit командной строки, вам придется немного скомпрометировать.

Следующее решение позволяет хранить зашифрованный дважды (или более) пароль root любом месте с текущими разрешениями пользователя.

Высокий уровень:

  1. Шифрование пароля root в base64 два раза один раз и размещение файла в любом месте (например, 1234.txt).

  2. Вызов сценария expect с аргументом (строка, декодированная сверху)

  3. Expect запускает желаемый скрипт и завершает работу.

  4. Файл очистки под /root вызывается из bash_history и удаляет bash_history (общего пользователя), содержащие файл с root , пароль и base64 . Чтобы удалить любую трассировку, сценарий был вызван (с точки зрения общего пользователя). Этот скрипт доступен только пользователю root .

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

Кроме того, двойное шифрование base64 , кажется довольно случайным для меня невиновным (хотя я не эксперт по безопасности, я бы не узнал его как 2x base64 ). Например:

 V1c5MVFYSmxWMlZzWTI5dFpRbz0K decrypted to YouAreWelcome 

Кодирование пароля дважды в base64 один раз :

 $ cat pass.txt | base64 | base64 > innocent_name.txt $ rm pass.txt 

Затем:

Запуск скрипта:

 $ ./root_wrap.exp "$(cat innocent_name.txt | base64 -d | base64 -d)" 

Ожидайте сценарий:

 #!/usr/bin/expect -f set root_user root; set root_pass [ lindex $argv 0 ]; spawn bash expect "*$ " send -- "whoami\r" expect "*$ " send -- "su $root_user\r" expect "*?assword:*" send -- "$root_pass\r" expect "*# " send -- "./whoam.sh\r" expect "*# " send -- "/root/rm_trace.sh\r" expect "*# " send -- "exit\r" send -- "whoami\r" expect "*$ " expect eof 

Сценарий истории очистки /root/rm_trace.sh :

 #!/bin/bash sed -i '/base64/d' /home/<user>/.bash_history sed -i '/root_wrapp/d' /home/<user>/.bash_history sed -i '/innocent_name/d' /home/<user>/.bash_history 

Пример скрипта bash для запуска от имени root:

  #!/bin/bash echo "now running as root" whoami