Выключение компьютера в Linux
1. shutdown
Самая простая и самая часто используемая команда выключения компьютера linux, отключит компьютер немедленно:
Как видите, используется обычное выключение, и константа времени now, тоесть сейчас.
Теперь попробуем запланировать выключение компьютера linux через пять минут:
Мы запланировали вывод сообщения перед выключением.
Теперь давайте отменим выключение компьютера Linux:
Точно так же мы можем указать точное время выключения, например в девять вечера:
Как я уже говорил, не только команда shutdown linux умеет выключать компьютер, есть еще несколько утилит способных на это. Рассмотрим их тоже.
2. reboot
Команда reboot обычно используется для перезагрузки системы, но она также умеет выключать компьютер. Мы не будем ее подробно рассматривать, потому, что она еще проще команды shutdown. Для выключения нужно задать опцию -p:
3. halt
Эта команда тоже выключает компьютер. Только делает она это очень по-своему. Она не выполняет никаких подготовительных действий перед выключением, а просто отключает питание:
Использование halt может повредить систему
5. SysRq
Помните, в начале статьи, я говорил о сочетании клавиш для включения компьютера? Рассмотрим этот вопрос подробнее.
SysRq — это подсистема, реализованная на уровне ядра. Ядро обрабатывает все нажатия клавиш, а с помощью этой подсистемы, оно может принимать от пользователя команды, даже когда система полностью зависла. Основное предназначение этой подсистемы — работа с компьютером в проблемных ситуациях, например, если вы думаете что ваш компьютер заразил вирус, или компьютер завис и его нужно выключить. Для доступа к SysRq используются сочетания клавиш Alt+PrtScr+номер
Самое интересное, что мы можем выполнить безопасное выключение компьютера linux. Для этого зажмите клавиши Alt + PrtScr и поочередно нажимайте:
- R — разблокировать клавиатуру
- E — послать всем процессам сигнал SIGTERM
- I — послать всем процессам сигнал SIGKILL
- S — перенести все данные из кеша файловых систем на диск
- U — перемонтировать файловые системы только для чтения
- B — перезагрузить
Также вместо всего этого можно воспользоваться сочетанием клавиш Alt+PrtScr+O, в таком случае, вся процедура будет выполнена автоматически, эта команда поддерживается не всеми ядрами.
Дистанционное выключение Windows сервера
Начнем с самого сложного. На практике реализовать надежный способ выключения windows машин по сети для меня оказалось сложнее, чем linux. Методов и подходов к решению данной задачи много. Я пробовал разные варианты и остановился на одном, который мне показался самым надежным, он сработал без проблем во всех случаях во время тестирования.
Обязательным условием удаленного выключения сервера является сетевой доступ к нему по rdp. Вы можете находится в локальной сети с ним, подключиться по vpn или пробросить rdp соединение редиректом со шлюза
Не важно, главное попасть в систему по rdp
Принцип работы удаленного отключения следующий:
- На компьютере или сервере создается пользователь, которому будет разрешено подключаться по rdp и завершать работу сервера.
- В автозагрузке этого пользователя будет скрипт для завершения работы.
- Пользователям, которые будут удаленно выключать сервер, дается специально подготовленный rdp клиент, который без всяких запросов будет подключаться нужным пользователем, у которого будет срабатывать скрипт на завершение работы.
Все достаточно просто, но на каждом этапе я сталкивался с проблемами, которые требовали не тривиального решения. Но обо все по порядку.
Итак, идем на север и создаем там простой bat файл следующего содержания:
Сохраняем файл и создаем пользователя, под которым будем выключать сервер. Не забудьте добавить этому пользователю разрешение подключаться по rdp. Если вы выключаете компьютер с десктопной системой, то прав обычного пользователя достаточно. Если же вам надо погасить Windows Server, то пользователя нужно либо сделать админа, либо дать ему права на разрешение выключение сервера через локальную политику безопасности. Живет эта политика по адресу — параметры безопасности — локальные политики — назначение прав пользователей — завершение работы системы.
Вот тут я напоролся на первые неприятности. Я назвал свой скрипт shutdown.bat и очень долго не мог понять, почему он не срабатывает. При вводе команды shutdown с параметрами в консоли все отлично работало, но скрипт не запускался. Оказывается, его нельзя называть таким именем. После того, как переименовал в shut.bat, все отлично заработало. Какая-то нелепая загвоздка, но мне пришлось потратить немало времени, пока я разобрался, в чем тут дело.
Дальше заходим нашим новым пользователем, чтобы создались стандартные папки профиля и кладем скрипт автовыключения сервера ему в автозагрузку — C:Usersshut-userAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup.
Теперь нам нужно настроить автоматический вход пользователя по rdp, чтобы выполнить удаленное завершение работы. Причем пользователь должен заходить на сервер без запроса имени и пароля. Штатными средствами rdp клиента windows это сделать невозможно. Даже если вы сохраните параметры, то при переносе настроек на другой компьютер нужно будет снова вводить пароль. Мне это не подходило.
Я пробовал использовать старую портированную версию rdp 5.2. Это последняя версия, где пароль в зашифрованном виде можно было хранить в файле настроек. Но при переносе этого файла на другой компьютер, все равно выскакивало окно с вводом пароля. Добиться полного автоматизма не получалось.
Но решение было найдено. Существует любопытный проект Remote Desktop Plus, который является надстройкой над rdp. С помощью этой надстройки можно передать параметры в rdp через командную строку, в том числе и имя пользователя с паролем. Мне это полностью подходит. Скачиваем файлик rdp.exe либо с сайта автора проекта, либо с моего. Я скопировал на всякий случай эту очень полезную утилиту. Кладем его в папку и создаем в этой же папке rem-shut.bat файл следующего содержания:
10.10.5.14 | адрес удаленного сервера |
shut-user | пользователь rdp от имени которого будет происходить выключение |
pass123 | пароль пользователя |
640 480 | параметры разрешения экрана, можно не указывать |
Всего этого достаточно, чтобы выполнить дистанционное завершение работы на windows сервере. Пользователю необходимо передать 2 файла:
- rdp.exe
- rem-shut.bat
Важно, чтобы они лежали в одной папке. При запуске батника произойдет подключение rdp пользователя и выполнится скрипт завершения работы
Задача выполнена.
Получение прав root без переключения
Чтобы реализовать максимально безопасный интерфейс для работы с правами суперпользователя в Linux была разработана команда sudo. Давайте рассмотрим что такое sudo. Эта команда пишется перед каждой командой, которую нужно выполнить от имени суперпользователя, и для ее выполнения нужно ввести пароль уже не root, а всего лишь вашего пользователя. Так же, как и в предыдущей, в этой утилиты есть свои опции. Сначала рассмотрим синтаксис:
$ sudo опции команда
Опции программы:
- -b — выполнять запускаемую утилиту в фоне
- -E — сохранить переменные окружения
- -g — запустить команду от группы
- -H — использовать домашний каталог
- -l — показать список полномочий в sudo для текущего пользователя
- -r — использовать для команды роль SELinux
- -s — использовать оболочку
- -u — запустить команду от имени пользователя, если не задано используется root
- -i — не выполнять команду, а войти в оболочку, эквивалентно su —
Вы можете выполнить те же эксперименты, только для этой команды, чтобы понять как использовать команду sudo. Например:
Или:
Использование sudo — это рекомендованный способ выполнять команды от имени суперпользователя в Linux. Так вы не забудете с чем имеете дело и меньше всего рискуете повредить систему. Более подробно о команде sudo читайте здесь. Но остался еще один нерешенный вопрос — как быть с графическими утилитами? Ведь команда sudo их не запускает, а запускать графическую оболочку от имени root небезопасно. Это мы и рассмотрим далее.
Настройка
Использование visudo
Файл настроек всегда следует редактировать с помощью команды . блокирует файл , сохраняет изменения во временный файл и проверяет, что файл грамматически корректен, перед тем как скопировать его в .
Важно:
Крайне важно, чтобы файл был без синтаксических ошибок! Любая ошибка делает sudo неработоспособным
Всегда редактируйте его только с помощью для предотвращения ошибок.
Из : Обратите внимание, что это дыра в безопасности, поскольку позволяет пользователю запускать любую программу, какую он захочет, просто прописав её в VISUAL или EDITOR.. visudo использует в качестве текстового редактора по умолчанию
В core репозитории sudo скомпилирована с по умолчанию и использует переменные и
не используется, если задана переменная .
visudo использует в качестве текстового редактора по умолчанию. В core репозитории sudo скомпилирована с по умолчанию и использует переменные и . не используется, если задана переменная .
Чтобы сделать nano редактором visudo в течение текущего shell сеанса, задайте и экспортируйте переменную перед тем, как выполнять visudo.
Он будет использован, если вы не определили другой редактор, установив переменные окружения или (используемые в таком порядке) в качестве желаемого редактора, например . Выполните команду с правами суперпользователя:
# EDITOR=nano visudo
Для изменения редактора на постоянной основе для текущего пользователя, прочтите . Для того, чтобы установить выбранный редактор на постоянной основе для всей системы, но только для , добавьте следующее в (предположим, что вы предпочитаете в качестве редактора):
# Сброс окружения Defaults env_reset # Установка nano в качестве редактора по умолчанию и запрет visudo использовать EDITOR/VISUAL. Defaults editor=/usr/bin/nano, !env_editor
Примеры настроек
Настройка sudo осуществляется добавлением записей в файл . Чтобы дать пользователю привилегии суперпользователя, когда он вводит перед командой, добавьте следующую строку:
имя_пользователя ALL=(ALL) ALL
Разрешить пользователю выполнять все команды от любого пользователя, но только на машине с определенным названием хоста:
имя_пользователя название_хоста=(ALL) ALL
Предоставить членам группы доступ sudo:
%wheel ALL=(ALL) ALL
Чтобы не спрашивать пароль у пользователя:
Defaults:имя_пользователя !authenticate
Разрешить выполнять только конкретные команды и только пользователю на определенном хосте:
имя_пользователя название_хоста=/usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu
Примечание: Наиболее общие опции должны идти в начале файла, а наиболее частные — наоборот, в конце файла, так как более нижние строки переопределяют более верхние. В частности, добавляемая строка должна быть после строки , если ваш пользователь находится в этой группе.
Разрешить выполнять конкретно определённые команды только для пользователя на определенном хосте и без пароля:
имя_пользователя название_хоста= NOPASSWD: /usr/bin/halt,/usr/bin/poweroff,/usr/bin/reboot,/usr/bin/pacman -Syu
Права доступа к файлам sudoers по умолчанию
Файл должен иметь владельца root и группу root (0). Права доступа всегда должны быть установлены как (0440). Эти права установлены по умолчанию, однако если вы случайно измените их, они должны быть немедленно изменены обратно, иначе sudo не будет работать.
# chown -c root:root /etc/sudoers # chmod -c 0440 /etc/sudoers
Время действия введённого пароля
Возможно, вы захотите изменить промежуток времени, в течение которого sudo действует без ввода пароля. Этого легко добиться добавив опцию в :
Defaults:имя_пользователя timestamp_timeout=время_в_минутах
Например, чтобы установить тайм-аут на 20 минут:
Defaults:имя_пользователя timestamp_timeout=20
Совет: Если вы хотите чтобы sudo всегда требовал ввод пароля, установите равным 0. Чтобы срок действия пароля никогда не истекал, установите любое отрицательное значение.
Печать файлов из DOS
На данный момент, скорее всего, принтер у вас не работает, так что вот способ создания
файла из справочной страницы, перемещения её на дискету, а затем печать из DOS
Положим,
что вы хотите внимательно прочесть об изменении прав доступа на файлы (весьма важно). Вы
можете воспользоваться командой man chmod для того, чтобы
прочесть об этом
Команда
% man chmod | col -b > chmod.txt
удалит коды форматирования и перенаправит страницу справки в файл chmod.txt, не выдавая её на экран. Теперь поместите отформатированную
dos-дискету в дисковод a, выполните su, перейдя к пользователю root, и наберите
# /sbin/mount -t msdosfs /dev/fd0 /mnt
для монтирования дискеты в каталог /mnt.
Теперь (и вам больше не нужно быть пользователем root, так
что можете набрать exit для возврата к пользователю jack) вы
можете перейти в каталог, где создали chmod.txt и скопировать
файл на дискету следующей командой:
% cp chmod.txt /mnt
и воспользоваться командой ls /mnt для получения списка
файлов каталога /mnt, которая теперь должна показать файл
chmod.txt.
Вы также можете захотеть создать файл из /sbin/dmesg,
набрав
% /sbin/dmesg > dmesg.txt
и скопировав dmesg.txt на дискету. /sbin/dmesg является протоколом загрузки системы, который полезно
понимать, потому что в нём перечисляется всё, что обнаружила при загрузке FreeBSD. Если
вы будете задавать вопросы в списке рассылки Список
рассылки, посвящённый вопросам и ответам пользователей FreeBSD или в конференции
USENET—наподобие »FreeBSD не обнаруживает моего ленточного накопителя, что мне
делать?»—отвечающие захотят узнать, что выдаёт dmesg.
Теперь вы можете (как root) отмонтировать гибкий диск, чтобы
его вынуть, по команде
# /sbin/umount /mnt
и перезагрузиться в DOS. Скопируйте эти файлы в каталог DOS, вызовите их при помощи
редактора DOS EDIT, Windows Notepad или Wordpad, или даже
с текстовым процессором, внесите маленькое изменение, чтобы файл сохранился, и
напечатайте его обычным образом из DOS или Windows. Надеемся, это срабатывает! Справочные
страницы лучше всего выглядят при печати командой DOS print.
(Копирование файлов из FreeBSD на смонтированный раздел DOS в некоторых случаях всё ещё
немного рискованная операция.)
Отключить root-вход
Больше не хотите входить в систему через SSH? К счастью, эту функцию так же легко отключить, как и включить. Первый способ — просто заблокировать учетную запись Root. Выполнение этого способа позволяет включать и выключать параметр на лету, разблокировав учетную запись Root. Чтобы заблокировать Root, получите оболочку суперпользователя через sudo и запустите:
passwd --lock root
Эта команда шифрует учетную запись root и фактически отключает ее. Чтобы вернуть его для использования с Root over SSH, следуйте инструкциям в верхней части статьи.
В качестве альтернативы, чтобы полностью отключить вход в систему Root, откройте терминал (с Root):
su -
или же
sudo -s
В файле конфигурации SSH найдите «PermitRootLogin» и измените его с «да» на «нет».
nano /etc/ssh/sshd_config
Нажмите Ctrl + O, чтобы сохранить, выйдите, нажав Ctrl + X, а затем перезагрузитесь. После сброса вход в систему Root работать не будет.
Способы выключения ПК:
На рабочем столе нажмите сочетания клавиш ALT+F4. Высветится окошко, где можно выключить или перезагрузить ПК.
Через Пуск
Нажмите «Пуск» в левом нижнем углу, а затем «Завершение работы».
В операционной системе Windows 8 / 8.1
Наведите указатель мыши в правый верхний угол, и нажмите «Параметры». При нажатии на кнопку «Выключение» появится список действий для того, чтобы перезагрузить или выключить ОС.
Через кнопку включения или выключения
В некоторых случаях компьютер может перейти в спящий режим (или в сон). Настроить можно, если перейти в «Панель управления» > «Все элементы панели управления» > «Электропитание» > слева «Действия кнопок питания».
Через командную строку (cmd)
Нажмите на клавиатуре сочетания клавиш Win (Пуск) + R, и введите cmd.exe или просто cmd.
Или нажмите «Пуск» > «Все программы» (если есть) > «Служебные» > нажмите правой кнопкой мыши на пункте «Командная строка» > «Дополнительно» > «Запуск от имени администратора».
В командной строке введите следующее: shutdown /s /t 5
Цифра 5 обозначает количество секунд, через которое произойдет выключение.
Чтобы узнать все допустимые значения для команды shutdown (при этом командная строка обязательно должна быть запущена от имени администратора), введите следующее:
Через ярлык
На рабочем столе нажмите правой кнопкой мыши и в выпадающем списке выберите «Создать» > «Ярлык». В качестве расположения объекта укажите следующие команды:
Для выключения: Shutdown.exe -s -t 00
Для перезагрузки: Shutdown.exe -r -t 00
Через диспетчер задач
Нажмите на панели задач правой кнопкой мыши и выберите «Диспетчер задач» (или нажмите Ctrl + Shift + Esc). Затем нажмите «Файл» > «Запустить новую задачу». Введите следующие команды:
Для выключения: Shutdown.exe -s -t 00
Для перезагрузки: Shutdown.exe -r -t 00
Через планировщик заданий
Нажмите «Пуск» > «Панель управления» > «Система и безопасность» > «Администрирование» > «Планировщик заданий».
Еще сюда же можно попасть на Windows 8 и 10, если нажать правой кнопкой мыши на «Пуск», выбрать «Управление компьютером», и слева во вкладке нажать «Планировщик заданий», или через меню «Пуск» > «Все программы» (если есть) > «Средства администрирования» или «Служебные» > «Планировщик заданий».
Далее нажмите в боковой колонке справа «Создать простую задачу». В имени и описании введите «Отключение компьютера» или всё, что захотите (желательно, если заголовок и описание будут понятны любому пользователю). Нажмите «Далее».
Укажите, когда или через какое время необходимо выключать ПК (н-р, ежедневно). В следующем окне укажите дату начала выполнения этой задачи. Можно указать сегодняшнюю. А вот в указанное время ПК будет каждый раз выключаться. Нажимаем «Далее».
Проверяем, чтобы был выбран пункт «Запустить программу» и нажимаем «Далее».
В поле «Программа или сценарий» указываем команду: shutdown.exe
В поле «Добавить аргументы» добавляем следующее:
Для выключения: -s -f
Для перезагрузки: -r –f
В следующем окне нажимаем «Готово».
Для просмотра всех заданий, найдите в левой колонке пункт «Библиотека планировщика заданий» и нажмите на него. В средней части окна отобразятся все события, в том числе и «Отключение компьютера». Чтобы проверить правильность ввода команды, нажмите на задачу правой кнопкой мыши и выберите пункт «Выполнить». Отобразится завершение работы и ПК сразу начнет выключаться или перезагружаться.
Принудительное выключение компьютера или ноутбука
Этот способ использовать только в самых-самых крайних ситуациях (н-р, если ноутбук окончательно завис или не до конца выключился или происходит бесконечное обновление), так как при частом использовании некоторые комплектующие ПК могут выйти из строя (н-р, жесткий диск).
Нажмите и удерживайте кнопку включения / выключения на системном блоке или ноутбуке в течение нескольких секунд. ПК мгновенно отключится.
Что-то похожее можно сделать, если на обратной стороне системного блока выключить блок питания или вообще отсоединить системный блок от розетки. А с ноутбуком это можно сравнить, если отсоединить шнур питания и изъять на некоторое время батарею.
Для Windows 8 хотим отметить, что если отсутствует кнопка завершения работы в меню «Пуск» — попробуйте применить все обновления через «Центр обновления Windows». После перезагрузки, кнопки автоматически появятся.
1.6 Как самому сделать компакт-диск с дистрибутивом FreeBSD?
Первым делом нужно сделать зеркало официального каталога с соответствующим релизом
FreeBSD, например, взяв ftp://ftp.gamma.ru/pub/FreeBSD/3.2-RELEASE. Зеркало нужно делать с
сохранением регистра всех файлов, поэтому это лучше делать из-под FreeBSD утилиткой,
поддерживающей зеркалирование, типа lftp.
Нужно зазеркалировать каталоги bin, catpages, compat1x, compat20, compat21, dict, doc, flopppies, games, info, manpages, ports, proflibs, src, XF86333, tools, а также взять файлы в корне каталога с релизом (*.TXT,
*.inf). Каталог des брать не следует, так как он содержит
программное обеспечение, запрещённое к использованию вне пределов США. Кроме того, вы
можете взять дополнительные программы из каталогов xperimnt и
commerce.
Всё выкачанное складывается в один каталог, скажем, /usr/cd, так же, как и на
официальном мирроре (то есть файл cdrom.inf должен находиться в
каталоге /usr/cd)
Обратите внимание, что общий размер не должен превышать 650 Мб (325000
extents), максимум 330000 extents.
Во FreeBSD нужно установить порт (или пэкидж) sysutils/mkhybrid
Выполняем команду # mkhybrid -b floppies/boot.flp -h -r -J -o cdimage.iso usr/cd/ -b
Бутявый сидюк получается, круто -h гибридный имедж (чтоб и под МастДаем читались
длинные имена) -r Generate Rock Ridge + что то там полезное делает с пропертями файлов -J
Generate the Joliet extensions (расширение МастДая) -o имя имеджа, в который будет все
енто хозяйство литься.
Другие полезные команды
df
выдаёт данные о занятом файлами пространстве и смонтированных файловых системах.
ps aux
показывает работающие процессы
ps ax является
частоупотребительной формой.
rm filename
удаляет filename.
rm -R dir
удаляет каталог dir и все его
подкаталоги—осторожно!
ls -R
выдаёт список файлов в текущем каталоге и всех его подкаталогах; я использовал
вариант, ls -AFR > where.txt, для получения перечня всех
файлов в и (отдельно) /usr до
того, как узнал о более эффективном способе поиска файлов.
passwd
для изменения пароля пользователя (или пароля root)
man hier
справочная страница по файловой структуре UNIX. Используйте find для поиска filename в /usr или в любом из её подкаталогов
при помощи команды
Используйте find для поиска filename в /usr или в любом из её подкаталогов
при помощи команды
% find /usr -name "filename"
Вы можете использовать * в качестве шаблона внутри
(это
выражение должно быть в кавычках). Если вы укажете команде find
на поиск в , а не в /usr, то она
будет искать файл(ы) во всех смонтированных файловых системах, включая CDROM и раздел
DOS.
Как зайти под root в Ubuntu Desktop GUI
Если вы хотите зайти в систему как пользователь root не в консоли, а на графическом рабочем столе Ubuntu, тогда вам нужно выполнить несколько дополнительных шагов после включения пользователя root:
Откройте фаил /etc/gdm3/custom.conf . Здесь Вам надо будет добавить AllowRoot = true в блоке . Вот так:
Затем откройте файл /etc/pam.d/gdm-password и найдите такую строку:
Закомментируйте её, поставив знак # перед ней:
Далее перезагрузите компьютер. Когда он перезапустится и появится экрану входа в систему — кликните на ссылку «Нет в списке?». Остаётся лишь ввести root в поле username и указать пароль для суперпользователя. Вот и всё!
Как вы знаете, Linux очень серьезно относится к управлению пользователями и предоставлению им прав на работу с системой. Обычный пользователь может записывать файлы только в свой каталог и каталог /tmp/. Также есть возможность читать некоторые файлы в корневой файловой системе. Но вы не можете устанавливать программы, ведь для этого нужно право на запись, не можете изменять атрибуты файлов, не можете запускать сервисы, не можете читать некоторые файлы логов и еще много чего не можете.
В Linux управлять корневой файловой системой и создавать там файлы имеет право только пользователь root.
В этой статье мы рассмотрим какие программы нужны для того, чтобы получить права root пользователя linux, как они работают, как выполнять программу с правами root от обычного пользователя и как запускать графические программы с правами root. А также выясним что такое sudo в чем разница su или sudo.