Как получить доступ к Ubuntu с помощью Root

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

Подготовка

Прежде всего, нам нужно установить некоторые инструменты , Это xdotool для типизации эмуляции и управления окнами и byzanz для видеозаписи. Установите их, используя:

sudo apt install xdotool byzanz

Затем скопируйте код в конце этого ответа и сохраните его как скрипт bash на вашем компьютере, например. как ~/bin/typerec. Если вы сохраните его в папке на $PATH, вы сможете выполнить его без указания его пути. Не забудьте сделать его исполняемым позже, используя chmod +x PATH/TO/SCRIPT.

Использование

Теперь, чтобы записать ввод определенного файла, сначала откройте свою цель редактор, в который мы будем печатать. Удостоверьтесь, что у него есть какая-либо функция «автоматического отступа», иначе отступы введенного кода будут испорчены!

Затем запустите мой скрипт, например. от терминала. Правильный синтаксис -

typerec INPUT_FILE OUTPUT_FILE [DELAY]

, где INPUT_FILE - путь к текстовому файлу кода, а OUTPUT_FILE - путь выходного файла, в котором должна храниться запись. Он должен иметь расширение, принятое byzanz, то есть один из gif, webm, ogg, ogv, flv, byzanz (мои рекомендации выделены полужирным шрифтом). Аргумент DELAY не является обязательным и устанавливает задержку между двумя нажатиями клавиш в миллисекундах. По умолчанию 20, если не указано, я рекомендую не идти ниже 5.

Пример:

typerec /path/to/my/code.py ~/Videos/code.webm 100

Ваш курсор мыши изменится на какие-то перекрестие (не видно на скриншоте ), и вы получите пузырь уведомлений с просьбой щелкнуть окно целевого редактора:

Выполняйте, как вам сказали, но gif ! Если вы не хотите запускать запись, немедленно нажмите Ctrl + C, в то время как терминал все еще сфокусирован и перед щелчком в любом месте.

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

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

Вот сценарий:

#!/bin/bash
THIS="$(basename "$0")"
INPUT_FILE="$1"
OUTPUT_FILE="$2"
DELAY="${3:-20}"

show_usage() {
    echo "  Usage:  $THIS INPUT_FILE OUTPUT_FILE [DELAY]"
    echo "where INPUT_FILE is the text file with the content to be typed"
    echo "and OUTPUT_FILE is where the recorded video shall get saved."
    echo "You can set the DELAY between keystrokes in ms (default 20)."
    echo "Note that OUTPUT_FILE will be overwritten if it exists already."
    echo "It must have one of the extensions {gif|webm|ogg|ogv|flv|byzanz}."
    exit 1
}

if [[ -z "$INPUT_FILE" || ! -r "$INPUT_FILE" ]] ; then
    echo "Missing INPUT_FILE argument or file is not existing or readable!"
    show_usage
fi
if [[ -z "$OUTPUT_FILE" ]] ; then
    echo "Missing OUTPUT_FILE argument!"
    show_usage
fi
if [[ ! "$DELAY" -gt 0 ]] ; then
    echo "Invalid argument for DELAY, must be a number > 0 or omitted."
    show_usage
fi

notify-send -i "media-record" "$THIS" "Please select your target editor window."
eval $(xdotool selectwindow getwindowgeometry --shell)
if [[ -z "$WINDOW" || -z "$X" || -z "$Y" || -z "$WIDTH" || -z "$HEIGHT" ]]; then
    echo "Failed to obtain all required target window information. Aborting."
    exit 2
fi

TYPE_COMMAND="xdotool windowactivate --sync \"$WINDOW\" \
              getactivewindow \
              windowfocus --sync \
              sleep 1 \
              type --clearmodifiers --delay "$DELAY" \
                   --file <( tr \\\\n \\\\r < \"$INPUT_FILE\" )"

byzanz-record -e "bash -c '$TYPE_COMMAND'" \
        -x "$X" -y "$Y" -w "$WIDTH" -h "$HEIGHT" \
        "$OUTPUT_FILE" &&

echo "Recording screencast and saving to $OUTPUT_FILE finished successfully."

Альтернативный однострочный

[d36 ] Если вы предпочитаете не сохранять сценарий в любом месте, однострочный, который вы можете просто вставить в терминал, который в основном делает то же самое (но опускает входные параметры и проверки, записывая file.txt как typerec.gif с задержкой 20 мс ) ниже. Вы отвечаете за его редактирование, чтобы использовать правильные пути и убедиться, что все там правильно.

( eval $(xdotool selectwindow getwindowgeometry --shell) ; byzanz-record -e "bash -c 'xdotool windowactivate --sync $WINDOW getactivewindow windowfocus --sync sleep 1 type --clearmodifiers --delay 20 --file <( tr \\\\n \\\\r < file.txt )'" -x $X -y $Y -w $WIDTH -h $HEIGHT typerec.gif )

0
задан 13 May 2018 в 00:52

9 ответов

Вы используете sudo для получения корневой оболочки. Это не означает, что вы включили учетную запись root.

Чтобы включить регистрацию root, вы должны установить пароль для root:

sudo passwd root

Затем вам нужно отредактировать свой [ f5]

 sudo editor /etc/ssh/sshd_config

Измените

PermitRootLogin prohibit-password

на

PermitRootLogin yes

Выйдите из редактора и перезапустите sshd с помощью

sudo systemctl restart openssh-server

Обратите внимание, что это не рекомендуется. Я не могу думать о каких-либо причинах, по которым вам нужен root-доступ через ssh. Команды могут быть добавлены с помощью sudo и sudo для использования без пароля. Копии файлов? Обычно вы можете изменить разрешения адресата, чтобы вам не нужно было быть root.

1
ответ дан 22 May 2018 в 10:45

Вы используете sudo для получения корневой оболочки. Это не означает, что вы включили учетную запись root.

Чтобы включить регистрацию root, вы должны установить пароль для root:

sudo passwd root

Затем вам нужно отредактировать свой sshd_config

sudo editor /etc/ssh/sshd_config

Измените

PermitRootLogin prohibit-password

на

PermitRootLogin yes

Выйдите из редактора и перезапустите sshd с помощью

sudo systemctl restart openssh-server

Обратите внимание, что это не рекомендуется. Я не могу думать о каких-либо причинах, по которым вам нужен root-доступ через ssh. Команды могут быть добавлены с помощью sudo и sudo для использования без пароля. Копии файлов? Обычно вы можете изменить разрешения адресата, чтобы вам не нужно было быть root.

1
ответ дан 17 July 2018 в 14:27

Вы используете sudo для получения корневой оболочки. Это не означает, что вы включили учетную запись root.

Чтобы включить регистрацию root, вы должны установить пароль для root:

sudo passwd root

Затем вам нужно отредактировать свой sshd_config

sudo editor /etc/ssh/sshd_config

Измените

PermitRootLogin prohibit-password

на

PermitRootLogin yes

Выйдите из редактора и перезапустите sshd с помощью

sudo systemctl restart openssh-server

Обратите внимание, что это не рекомендуется. Я не могу думать о каких-либо причинах, по которым вам нужен root-доступ через ssh. Команды могут быть добавлены с помощью sudo и sudo для использования без пароля. Копии файлов? Обычно вы можете изменить разрешения адресата, чтобы вам не нужно было быть root.

1
ответ дан 20 July 2018 в 14:32

Здесь может быть несколько причин.

Во-первых, многие дистрибутивы Linux приходят или, по крайней мере, предлагают заблокировать пользователя root из ssh. Это связано с тем, что каждая система поставляется с root, и это упрощает переборку машины, если вы знаете о пользователе.

В противном случае вам нужно понять, что каждый пользователь имеет свой собственный пароль, и он является паролем этого пользователя, а записи, найденные для sudo в /etc/sudoers, - которые позволяют пользователю успешно выполнять команду с помощью sudo.

Чтобы уточнить, когда вы используете эту команду, вы используете пароль USER:

sudo su -i

sudo проверяет, разрешено ли вам запускать эту команду, а также запрашивает пароль пользователя.

При входе в систему вы снова используете этот пароль пользователя. Маловероятно, и плохая практика заключается в том, чтобы ваш ПОЛЬЗОВАТЕЛЬ и ваш корневой аккаунт делили пароли. В этом случае, поскольку вы знаете пароль USER, вы должны сделать следующее:

ssh USER@myserver
sudo su -

Здесь вы получаете доступ к системе, используя учетную запись USER, и известный пароль, а затем переходите в root. Это решает любую проблему, и как вы должны эскалации в root.

Если вы обнаружите, что ваш сервер разрешает вход в систему root, но вы неправильно используете пароль, обязательно заблокируйте его. Другие ответы на ваш вопрос предполагают, что вы разрешаете вход в систему root, но вместо этого я прошу вас понять ситуацию и оставаться в безопасности, следуя этому совету. Посмотрите на ssh упрочнение и, по крайней мере, настройте fail2ban.

1
ответ дан 22 May 2018 в 10:45

По умолчанию root-доступ отключен по ssh. Вы можете включить root ssh access или ssh в качестве обычного пользователя и su или sudo.

Чтобы включить регистрацию root через ssh:

В качестве пользователя root отредактируйте файл sshd_config в файле / etc / ssh / sshd_config:

sudo nano /etc/ssh/sshd_config.

Добавить строку в разделе «Аутентификация» файла, который говорит

PermitRootLogin yes. ...

Сохранить обновленный файл / etc / ssh / sshd_config. Перезагрузите SSH-сервер:

sudo service sshd restart.

Чтобы включить регистрацию root через ssh:

Это нехорошее решение проблемы, поскольку оно предоставляет root , в то время как пользователь уже имеет правильного пользователя с привилегиями sudo.

Корневой вход с использованием SSH-ключей (возможно, более безопасный):

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

0
ответ дан 22 May 2018 в 10:45
  • 1
    спасибо за контакт. Я попробую ваши предложения. Я просто хочу сообщить вам, что я на самом деле пытаюсь сделать. Я пытаюсь изменить motd в / etc / motd с помощью пакета accountt. Тем не менее, эта учетная запись не может писать и т. Д. Поэтому есть ли команда, которую я мог бы использовать, чтобы разрешить пакету учетных записей одинаковые разрешения с правами root, чтобы он мог писать в / etc? – peter 13 May 2018 в 01:13
  • 2
    Это не является хорошим решением проблемы, поскольку она предоставляет root, в то время как у пользователя есть правильный пользователь с привилегиями sudo. Это не решает проблему, но вместо этого обеспечивает обходное решение, которое без необходимости увеличивает риск и поддерживает плохую практику. – earthmeLon 13 May 2018 в 02:40
  • 3
    @earthmeLon Я согласен и обновил ответ с вашей информацией. Благодарю. – Joshua Besneatte 13 May 2018 в 02:46
  • 4
    вы можете сделать так, чтобы ваш пользователь не нуждался в пароле при sudoing, но я не уверен, что это более безопасно. возможно, root logon с ключом ssh будет лучше? – Joshua Besneatte 13 May 2018 в 02:52
  • 5
    Одна из идей заключается в том, что она более безопасна, потому что противнику гораздо труднее догадываться josh по сравнению с root, но вы правы, у вас есть недостаток безопасности, позволяя эскалацию без пароля, и эти вещи начинают добавлять вверх. – earthmeLon 13 May 2018 в 05:40

Здесь может быть несколько причин.

Во-первых, многие дистрибутивы Linux приходят или, по крайней мере, предлагают заблокировать пользователя root из ssh. Это связано с тем, что каждая система поставляется с root, и это упрощает переборку машины, если вы знаете о пользователе.

В противном случае вам нужно понять, что каждый пользователь имеет свой собственный пароль, и он является паролем этого пользователя, а записи, найденные для sudo в /etc/sudoers, - которые позволяют пользователю успешно выполнять команду с помощью sudo.

Чтобы уточнить, когда вы используете эту команду, вы используете пароль USER:

sudo su -i

sudo проверяет, разрешено ли вам запускать эту команду, а также запрашивает пароль пользователя.

При входе в систему вы снова используете этот пароль пользователя. Маловероятно, и плохая практика заключается в том, чтобы ваш ПОЛЬЗОВАТЕЛЬ и ваш корневой аккаунт делили пароли. В этом случае, поскольку вы знаете пароль USER, вы должны сделать следующее:

ssh USER@myserver sudo su -

Здесь вы получаете доступ к системе, используя учетную запись USER, и известный пароль, а затем переходите в root. Это решает любую проблему, и как вы должны эскалации в root.

Если вы обнаружите, что ваш сервер разрешает вход в систему root, но вы неправильно используете пароль, обязательно заблокируйте его. Другие ответы на ваш вопрос предполагают, что вы разрешаете вход в систему root, но вместо этого я прошу вас понять ситуацию и оставаться в безопасности, следуя этому совету. Посмотрите на ssh упрочнение и, по крайней мере, настройте fail2ban.

1
ответ дан 17 July 2018 в 14:27

По умолчанию root-доступ отключен по ssh. Вы можете включить root ssh access или ssh в качестве обычного пользователя и su или sudo.

Чтобы включить регистрацию root через ssh:

В качестве пользователя root отредактируйте файл sshd_config в файле / etc / ssh / sshd_config:

sudo nano /etc/ssh/sshd_config.

Добавить строку в разделе «Аутентификация» файла, который говорит

PermitRootLogin yes. ...

Сохранить обновленный файл / etc / ssh / sshd_config. Перезагрузите SSH-сервер:

sudo service sshd restart.

Чтобы включить регистрацию root через ssh:

Это нехорошее решение проблемы, поскольку оно предоставляет root , в то время как пользователь уже имеет правильного пользователя с привилегиями sudo.

Корневой вход с использованием SSH-ключей (возможно, более безопасный):

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

0
ответ дан 17 July 2018 в 14:27

Здесь может быть несколько причин.

Во-первых, многие дистрибутивы Linux приходят или, по крайней мере, предлагают заблокировать пользователя root из ssh. Это связано с тем, что каждая система поставляется с root, и это упрощает переборку машины, если вы знаете о пользователе.

В противном случае вам нужно понять, что каждый пользователь имеет свой собственный пароль, и он является паролем этого пользователя, а записи, найденные для sudo в /etc/sudoers, - которые позволяют пользователю успешно выполнять команду с помощью sudo.

Чтобы уточнить, когда вы используете эту команду, вы используете пароль USER:

sudo su -i

sudo проверяет, разрешено ли вам запускать эту команду, а также запрашивает пароль пользователя.

При входе в систему вы снова используете этот пароль пользователя. Маловероятно, и плохая практика заключается в том, чтобы ваш ПОЛЬЗОВАТЕЛЬ и ваш корневой аккаунт делили пароли. В этом случае, поскольку вы знаете пароль USER, вы должны сделать следующее:

ssh USER@myserver sudo su -

Здесь вы получаете доступ к системе, используя учетную запись USER, и известный пароль, а затем переходите в root. Это решает любую проблему, и как вы должны эскалации в root.

Если вы обнаружите, что ваш сервер разрешает вход в систему root, но вы неправильно используете пароль, обязательно заблокируйте его. Другие ответы на ваш вопрос предполагают, что вы разрешаете вход в систему root, но вместо этого я прошу вас понять ситуацию и оставаться в безопасности, следуя этому совету. Посмотрите на ssh упрочнение и, по крайней мере, настройте fail2ban.

1
ответ дан 20 July 2018 в 14:32

По умолчанию root-доступ отключен по ssh. Вы можете включить root ssh access или ssh в качестве обычного пользователя и su или sudo.

Чтобы включить регистрацию root через ssh:

В качестве пользователя root отредактируйте файл sshd_config в файле / etc / ssh / sshd_config:

sudo nano /etc/ssh/sshd_config.

Добавить строку в разделе «Аутентификация» файла, который говорит

PermitRootLogin yes. ...

Сохранить обновленный файл / etc / ssh / sshd_config. Перезагрузите SSH-сервер:

sudo service sshd restart.

Чтобы включить регистрацию root через ssh:

Это нехорошее решение проблемы, поскольку оно предоставляет root , в то время как пользователь уже имеет правильного пользователя с привилегиями sudo.

Корневой вход с использованием SSH-ключей (возможно, более безопасный):

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

0
ответ дан 20 July 2018 в 14:32
  • 1
    спасибо за контакт. Я попробую ваши предложения. Я просто хочу сообщить вам, что я на самом деле пытаюсь сделать. Я пытаюсь изменить motd в / etc / motd с помощью пакета accountt. Тем не менее, эта учетная запись не может писать и т. Д. Поэтому есть ли команда, которую я мог бы использовать, чтобы разрешить пакету учетных записей одинаковые разрешения с правами root, чтобы он мог писать в / etc? – peter 13 May 2018 в 01:13
  • 2
    Это не является хорошим решением проблемы, поскольку она предоставляет root, в то время как у пользователя есть правильный пользователь с привилегиями sudo. Это не решает проблему, но вместо этого обеспечивает обходное решение, которое без необходимости увеличивает риск и поддерживает плохую практику. – earthmeLon 13 May 2018 в 02:40
  • 3
    @earthmeLon Я согласен и обновил ответ с вашей информацией. Благодарю. – Joshua Besneatte 13 May 2018 в 02:46
  • 4
    вы можете сделать так, чтобы ваш пользователь не нуждался в пароле при sudoing, но я не уверен, что это более безопасно. возможно, root logon с ключом ssh будет лучше? – Joshua Besneatte 13 May 2018 в 02:52
  • 5
    Одна из идей заключается в том, что она более безопасна, потому что противнику гораздо труднее догадываться josh по сравнению с root, но вы правы, у вас есть недостаток безопасности, позволяя эскалацию без пароля, и эти вещи начинают добавлять вверх. – earthmeLon 13 May 2018 в 05:40

Другие вопросы по тегам:

Похожие вопросы: