Linux известен своим отношением к безопасности, хотя надо признать, что в последние годы дела шли не очень хорошо при наличии множества эксплойтов и брешей. Ранее в наших статьях мы упомянули файл /etc/passwd, который записывает подробную информацию о пользователях в системе. Файл использует следующий формат:n
[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
Некоторые поля, вроде [username] и [Home directory], понятны сами по себе. Во втором поле x указывает на тот факт, что учетная запись защищена теневым паролем. [UID] и [GID] являются цифровым представлением пользователя и первичной группы, к которой принадлежит пользователь. [Default shell] — это оболочка, которая станет доступна для этого пользователя при его входе в систему. Большинство дистрибутивов Linux по умолчанию используют оболочку Bash, но есть и другие. Далее имеется файл /etc/shadow, который содержит зашифрованный пароль и прочую информацию, такую, как учетная запись или срок действия пароля.nnРазрешения в /etc/shadow настроены так, чтобы не разрешить никаким пользователям даже чтение файла. Но если никто не может получить доступ к файлу, как тогда пользователи изменяют свои пароли, которые хранятся в этом файле? Дело в том, что утилита passwd имеет специальное разрешение, известное как SUID (Set User ID — Задать ID пользователя).nnБлагодаря этому особому условию пользователь, запускающий команду passwd, на время работы команды становится root, и ему разрешено писать в файле /etc/shadow. Чтобы добавить к файлу часть setuid, добавьте +s для пользователя, например, chmod u+s /path/to/file. Теперь любой, кто попытается получить доступ к этому файлу, сможет сделать это, как если бы являлся владельцем этого файла.n
Букварь по Sudo
Чтобы предоставить доступ к sudo, системный администратор должен отредактировать файл /etc/sudoers. Рекомендуется редактировать этот файл с помощью команды visudo, а не открывать его напрямую в текстовом редакторе. Если ввести sudo visudo, файл /etc/sudoers откроется с помощью текстового редактора vi. По умолчанию secure_path=line указывает использование пути для каждой команды, запущенной через sudo. Далее следуют строки, которые указывают разрешения для root, любого другого пользователя и определенных групп (отмеченных знаком %) в системе. Правило для пользователя root выглядит примерно так: root ALL=(ALL) ALLnnЭто означает, что пользователь root может запускать любую команду на любом хосте от имени любого пользователя. Чтобы разрешить пользователю mayank добавлять и удалять пользователей на всех машинах, мы добавляем такую строку: mayank ALL=/usr/bin/useradd, /usr/bin/userdelnnЭтот файл снабжен весьма пространной man-страницей (man sudoers), где имеется куда больше функций и примеров.n
Управление процессами
Обычному домашнему пользователю не нужны знания и умения профессионального системного администратора. Однако некоторые навыки обязаны быть в вашем репертуаре для эффективного управления компьютером.nnОдин из важных аспектов работы сисадмина заключается в том, чтобы обеспечить ровную работу компьютера, за который он отвечает, и этого можно добиться с помощью мониторинга. Команда ps -e выведет длинный список всех процессов в системе. Вы можете сократить этот список, отображая только процессы с тем же UID, что и у текущего пользователя, вызвав команду ps без каких- либо параметров. Вывод команды ps включает уникальный ID процесса (PID) и название соответствующей работающей программы.nnОбычно список отмечается вертикальной линией информации об определенной программе. Команда ps aux | grep libreoffice отобразит подробную информацию только о процессах, связанных с LibreOffice. Зная PID процесса, вы можете завершить этот процесс с помощью команды kill. Предположим, LibreOffice имеет PID 8899; вы можете завершить зависшую сессию командой sudo kill 8899. Можно также отправить сигналы на несколько процессов, соответствующих указанной программе или имени пользователя, используя команду killall, например, killall vlc.nnВы также можете использовать команду top для просмотра списка запущенных задач, где первыми идут задачи, наиболее интенсивно нагружающие процессор. Команда top также отображает разного рода полезную информацию о процессах, в том числе их PID. В ней также есть несколько интерактивных команд. Например, вы можете прекратить процесс изнутри top, нажав на клавишу K, после чего вам предложат ввести PID процесса, который вы хотите остановить.n
Планирование задач
Некоторые задачи будут эффективнее, если выполнять их по расписанию, например, регулярное резервное копирование и скачивание. Команда at поможет вам запланировать задачи, которые следует запускать в определенное время и дату. Например, если вам надо скачать большой файл, лучше запланировать это на ночное время, скажем, на час ночи.nnКоманда at 1am tomorrow поменяет строку подсказки на at>, и всё, что вы введете в этой строке, будет выполнено в указанное вами время. Чтобы скачать файл, укажите на его местоположение с помощью команды wget. Нажмите на Enter, чтобы указать еще одну команду, например, если вы хотите переместить файл в определенную папку. Закончив, нажмите Ctrl + D для сохранения. Команда at выполнит действия, заданные вами, причем она может работать с довольно сложными спецификациями времени. Помимо формата AM и PM, команда также принимает время в формате ЧЧ:ММ и определенные даты.nnКогда вы нажмете Ctrl + D, чтобы отправить задание, команда выдаст ID задания. Используйте команду atq для перечисления всех отправленных заданий, которые вы затем сможете удалить командой atrm, прибавив к ней ID задания, которое хотите удалить.nnЕсли вы хотите запускать задачу повторно, лучше использовать демон Cron. Используйте команду / crontab -e для редактирования файла crontab. При первом запуске команды вам предложат выбрать один из имеющихся текстовых редакторов командной строки. Каждое задание описывается семью полями, которые определяют время выполнения, владельца и команду. Первые пять команд указывают время выполнения, шестая определяет день недели, а последнее поле показывает команды для выполнения. Вы можете использовать команду / crontab -l для вывода списка запланированных задач. Относящиеся ко всей системе файлы crontab хранятся в /etc/crontab, а файлы crontab определенных пользователей — в директории /var/spool/cron.nnШаги ваши первые вы сделали, но освоение терминала — долгий путь, поэтому продолжайте читать наш блог.n
А если Вам все таки не удалось изучить LInux, то обращайтесь [email protected], мы предоставляем круглосуточную поддержку серверов.