• Как вывести список процессов без использования команды ps?

    @shuraosipov
    find /proc -maxdepth 1 -regex ".*[0-9]"

    Вернет pid всех процессов:
    /proc/1
    /proc/2
    /proc/39
    /proc/40
    /proc/41
    /proc/211


    Выдержка из man 5 proc
    /proc/[pid]
    There is a numerical subdirectory for each running process; the subdirectory is named by the process ID. Each such subdirectory contains the following pseudo-files and directories.
    Ответ написан
    3 комментария
  • Как назначить пароль юзеру без моего участия?

    @shuraosipov
    Можно так еще:
    echo password123 | passwd --stdin username
    Ответ написан
    Комментировать
  • Как восстановить права на папку /usr?

    @shuraosipov
    При вызове chown вы поменяли не только права доступа - rwx.

    Самое неприятное в данной ситуации это то, что при смене владельца были удалены специальные биты (setuid, setgid).
    Цитата из info файла info '(coreutils) chown invocation'
    The ‘chown’ command sometimes clears the set-user-ID or set-group-ID
    permission bits.  This behavior depends on the policy and functionality
    of the underlying ‘chown’ system call, which may make system-dependent
    file mode modifications outside the control of the ‘chown’ command.  For
    example, the ‘chown’ command might not affect those bits when invoked by
    a user with appropriate privileges, or when the bits signify some
    function other than executable permission (e.g., mandatory locking).
    When in doubt, check the underlying system behavior.


    Например, setuid бит выставлен для команд sudo и passwd, что позволяет выполнять даные команды в с привилегиями владельца файла (в данном случае root), а не с привилегиями пользователя, который запускает команду (https://en.wikipedia.org/wiki/Setuid).
    Также важно, что специальные биты не восстанавливаются при повторном выполнении chown -R root:root /usr

    Возможное решение:
    1. Если у вас есть аналогичный сервер, то можно сделать бэкап прав доступа на нем и восстановить их на вашем сервере - https://www.linux.com/learn/how-easily-back-and-re...
    2. Переставить систему
    Ответ написан
  • Как включить запись администратора?

    @shuraosipov
    В Windows Server 2008 и Windows Server 2008 R2 при создании домена вводится пароль для DSRM (Directory Services Restore Mode).
    Соответственно, при наличии данного пароля (он должен быть в любом случае, вопрос лишь в том известен он или нет:)) потребуется перезагрузить DC и запустить режим DSRM.
    Как это сделать описано здесь - https://technet.microsoft.com/en-us/library/cc8168...
    Ответ написан
  • Можно ли глобально в настройках Apache редиректить по User-agent?

    @shuraosipov
    httpd.apache.org/docs/2.0/misc/rewriteguide.html
    RewriteCond %{HTTP_USER_AGENT}  ^Mozilla/3.*
    RewriteRule ^foo\.html$         foo.NS.html          [L]
    
    RewriteCond %{HTTP_USER_AGENT}  ^Lynx/.*         [OR]
    RewriteCond %{HTTP_USER_AGENT}  ^Mozilla/[12].*
    RewriteRule ^foo\.html$         foo.20.html          [L]
    
    RewriteRule ^foo\.html$         foo.32.html          [L]
    Ответ написан
    2 комментария
  • FIFO-пайпы и Unix Sockets?

    @shuraosipov
    pipe - это механизм коммуникации между процессами. pipe, как уже было сказано выше, является однонаправленным потоком данных, все данные, записанные процессом в пайп перенаправляются ядром другому процессу для чтения.
    pipe это объект VFS (Virtual File System), поэтому pipe не имеет соответсвутющего образа на диске, грубо говоря он хранится в памяти (pipefs).
    Главным недостатком pipe является тот факт, что невозможно открыть уже существующий pipe. Поэтому два произвольных процесса не могут использовать одновременно один и тот же pipe, за исключением случаев если pipe был создан общим родительским процессом.

    fifo (named pipe) - это специальный файл, очень похожий на pipe, за исключением того, что fifo inode содержится в файловой системе, плюс fifo это двунаправленный механизм обмена данными между двумя и более процессами, поэтому доступ к fifo на чтение и запись может получить любой процесс. Грубо говоря процесс общения с использованием fifo выглядит следующим образом - "сервер" создает fifo файл, который успользуется "клиентами" для выполнения запросов. Каждый "клиент", прежде чем установить соединение с "сервером", создает другой fifo файл, в который "сервер" может записать ответ клиенту, при это указывая имя fifo в изначальном запросе.

    socket (unix socket) - это специальный файл, используемый для коммуникации между двумя и более различными процессами, выполняющимися на одной машине. Процессы обращаются к socket по его inode.

    Итак в чем же отличие fifo (named pipe) от unix socket:
    1. "Сервер" (или принимающий процесс) в fifo не умеет различать "Клиентов".
    "Клиенты", использующие unix socket имеют отдельные соединения с сервером. В fifo различные "клиенты" могут писать в pipe, но "Сервер" не может различить "Клиентов" друг от друга.
    2. При создании fifo и unix socket используются различные системные вызовы.
    Unix socket создается системным вызовом "socket()". fifo создается "mkfifo()"
    3. Для подключения к fifo и unix используюся различные системные вызовы.

    Сравнение по производительности - fifo vs unix socket:
    1. unix socket обеспечивает лучшую производительнось при передаче большого объема данных
    2. для малых объемов unix socket уступает в производительности fifo. это вызвано накладными раскодами, связанными с созданием сокета, инициализацией и подключением к нему.
    Ответ написан
    Комментировать
  • Зависает сервер при большом количестве обращений?

    @shuraosipov
    Попробуйте поставить nginx перед apache.
    По ссылке вы найдете performance comparison для nginx и apache - wiki.dreamhost.com/Web_Server_Performance_Comparison
    Ответ написан
  • Как в haproxy сделать редирект с http на https?

    @shuraosipov
    Redirect all HTTP traffic to HTTPS when SSL is handled by haproxy.
    redirect scheme https if !{ ssl_fc }

    Reference - cbonte.github.io/haproxy-dconv/configuration-1.7.h...
    Ответ написан
    Комментировать
  • Где полностью можно изучить про HTTP/HTTPS запросы?

    @shuraosipov
    1. HTTP Tutorial - www.tutorialspoint.com/http
    2. The Secure Sockets Layer (SSL) Protocol Version 3.0 - https://tools.ietf.org/html/rfc6101
    3. Hypertext Transfer Protocol -- HTTP/1.1 - https://www.w3.org/Protocols/rfc2616/rfc2616.txt
    4. HTTP и HTTPS - https://www.youtube.com/watch?v=WNVcwW7mC34
    Ответ написан
    Комментировать
  • Какие лучшие практики настройки SSH для вебсервера?

    @shuraosipov
    По воводу SSH
    1. запретить ssh login для root
    2. изменить порт, на котором работает sshd c 22 на любой другой.
    3. явно указать в конфиг файле, что будет использоваться ssh version 2.
    4. ограничить доступ по SSH только для конкретных пользователей (директива AllowUsers).
    5. использовать KeyBased Authentication с сильным ключом.
    6. В iptables разрешить доступ по ssh/sftp только с определенных ip адресов.
    7. Используй chroot jails для пользователей, которые будут логиниться по ssh/sftp.

    Что касается прав доступа и вебсервера:
    1. Создать учетную запись (sftp_uploader), которая будет использоваться для загрузки и обновления файлов на веб сервере.
    2. Создать отдельную группу (site_operations), выдать группе права на папку с картинками /var/www/pictures
    3. Добавить в группу пользователя site_operations и www-data.
    4. Выставить права chmod -R 2770 /var/www/pictures. 2 означает SGID. Все файлы, которые будут изменяться/добавляться в папке /var/www/pictures будут иметь ID группы site_operations. Так как пользователи www-data и sftp_uploader состоят в этой группе, то оба аккаунта будут иметь доступ к файлам, также не потребуется переустанавливать права доступа.
    5. Для предоставлния прав доступа вместо группы можно использовать ACL.
    6. Для пользователя www-data изменить дефолтный shell на /sbin/nologin

    Общесистемные:
    1. Дроп ICMP пакетов (не отвечать на ping)
    2. Обновить ядро, yum.
    3. Держать как можно меньше софта на машине.
    Ответ написан
    Комментировать
  • Как правильно проксировать SSL сайт в Apache 2.4?

    @shuraosipov
    how-to с примерами конфигов для apache 2.4 - https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html
    В SSL сертификатах в качестве common name указывается FQDN имя, но я не вижу технических ограничений от указания в качестве common name IP адреса - https://support.globalsign.com/customer/portal/art...
    Ответ написан
    Комментировать
  • Администрирование Linux - актуально ли?

    @shuraosipov
    Если есть желание учиться и развиваться технически я бы посоветовал следующее:

    1. Учи английски - необязательно говорить, но читать ты просто обязан. огромное количество ресурсов (книги, курсы и т.п.) гораздо проще читаются и воспринимаются от первоисточника. Также не забывай про огромное комьюнити. Не лишай себя возможности получить знания, только за счет того, что ты не знаешь язык.
    2. Учи матчасть. Так как тема топика удаленная работа, то учи скриптовые языки - bash, perl, python, ruby.
    3. Изучай основы: сети, операционные системы, протоколы и т.д. В конечном счете все сводится к основам.
    4. Выбери себе "любимую ОС" - debian, centos... whatever. Изучи ее. Подготовься к сертификации (rhsca, rhce...). Сама по себе сертификация ничего не значит, но в ходе подготовки ты выучишь базовые понятия, как и что работает, будешь иметь общее представление о системе.
    5. Практикуйся. Elance и тому подобные ресурсы помогут найти примеры конкретных задач.
    6. Смотри курсы (Яндекс КИТ, eDX, youtube каналы).
    7. Замечательный Technical Development Guide от Google - www.google.ru/about/careers/students/guide-to-tech...
    8. Так как времени всегда не хватает и приходится работать в цейтноте обрати внимание на time management и GTD техники. Мне очень нравится "Time Management для системных администраторов" Лимончелли.

    Немного банальности. Выбери то, что тебе нравится и практикуйся в этом.

    Успехов.
    Ответ написан
    Комментировать