*nix-way: Даже если тебя съели, у тебя есть как минимум два выхода

    В процессе работы с операционными системами GNU/Linux обычно привыкаешь делать какие-то операции одними и теми же средствами. Философия UNIX (*nix-way) предполагает наличие большого количества простых программ для выполнения простых действий, а результаты работы можно передавать между разными программами через потоки. Но вот представьте, что возникает ситуация, когда кто-то нечаянно, по глупости или из нехороших побуждений удалил исполнимый файл, который являлся бинарным файлом какой-то команды, которой вы более или менее часто пользовались. И что тогда делать?

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



    1) Нумерация строк
    nl <file>
    
    =
    cat -n <file>
    


    2) Просмотр таблицы маршрутов
    route -e
    
    =
    netstat -r
    
    =
    ip route
    


    3) Просмотр списка сетевых интерфейсов
    ifconfig -s
    
    =
    netstat -i
    
    =
    ip addr
    


    4) Создание пользователя:
    adduser <username>
    
    =
    useradd <username>; mkdir /home/<username>; chown <username>:<username> /home/<username>; passwd <username>
    


    5) Блокировка пароля пользователя
    passwd -l <username>
    
    =
    usermod -L <username>
    


    6) Разблокировка пароля пользователя
    passwd -u <username>
    
    =
    usermod -U <username>
    


    7) Добавление пользователя в группу
    adduser <username> <groupname>
    
    =
    usermod -aG <groupname> <username>
    


    8) Смена группы владения файла
    chown :<groupname> <filename>
    
    =
    chgrp <groupname> <filename>
    


    9) Просмотр содержимого директории
    ls
    
    =
    dir
    
    =
    vdir
    


    10) Создание жесткой ссылки
    ln <file> <linkname>
    
    =
    cp -l <file> <linkname>
    


    11) Создание символической ссылки
    ln -s <file> <linkname>
    
    =
    cp -s <file> <linkname>
    


    12) Замена traceroute командой ping. Не совсем честный способ, потому что разные типы пакетов ICMP, но в общем случае подходит, если все хосты трассы пингуемы.
    traceroute remote-host
    
    =
    pingtrace.sh (Если в качестве аргумента указать айпишник, то трасса получается ОЧЕНЬ быстро)
    #!/bin/bash
    REMOTE_HOST=$1
    REMOTE_HOST_2=`host $1 | grep 'has address' | awk '{printf $4}'`
    TARGET_HOST="_"
    TARGET_TTL=1
    
    echo Tracing host $REMOTE_HOST\($REMOTE_HOST_2\)
    
    while [ "$REMOTE_HOST" != "$TARGET_HOST" -a "$REMOTE_HOST_2" != "$TARGET_HOST" ]
    do
        TARGET_HOST=`ping -c 1 -t $TARGET_TTL $REMOTE_HOST | grep 'exceeded' | awk '{printf $2}'`
        if [ "$TARGET_HOST" != "" ]
        then
            echo $TARGET_HOST, TTL=$TARGET_TTL
            TARGET_TTL=$(($TARGET_TTL+1))
        else
            echo $REMOTE_HOST, TTL=$TARGET_TTL
            exit
        fi
    done
    


    В комментариях, надеюсь, будет еще много подобных примеров
    Поделиться публикацией

    Комментарии 126

      +6
      Создать пустой файл:
      > <file>
      =
      echo "" > <file>
      =
      tee <file>
      ctrl+D


      Создать файл с текстом:
      cat > <file>
      <text>
      ctrl+D
      =
      echo "<text>" > <file>
      =
      tee <file>
      <text>
      ctrl+D
        +53
        Пустой файл можно создать командой touch.
          +3
          А еще так:
          :> <filename>
          То же самое с существующим файлом сделает его пустым. Иногда так удобно вручную чистить логи.
            +3
            Всё-равно мой первый вариант на 1 символ короче и магии в нём на одно двоеточие меньше :)
              +2
              Да, но эта магия работает далеко не на всех шеллах. Вариант с двоеточием надёжнее.
          +12
          [зануда]
          echo -n "" > <file>
          или
          echo -n > <file>
          [/зануда]
            –5
            Юмора ради, — вариант через Ж (не во всех *sh, но работает):
            /dev/ass > /tmp/shit
            
              0
              как вариант
              cp /dev/null [filename]
                0
                не сработает — получится или блочное устройство-копия /dev/null (под рутом) или сфейлит (под юзером).
                  +1
                  А Вы попробуйте? Получается вполне регулярный пустой файл. По крайней мере под Debian 6 и MacOS.
                    +1
                    zsh, debian sid:
                    kom@ideacat ~ % cp /dev/null ll
                    cp: cannot create special file 'll': Operation not permitted
                    

                      +1
                      Интересно… Под zsh на 6.0.7 под обычным пользователем у меня то же проблем нет. А можете попробовать так: /bin/cp /dev/null ll?
                        0
                        Аналогично, zsh, получается пустой файл.
                        0
                        Перепробовал все шеллы, которые стояли, получается пустой файл. Чини шелл ;)
                          +1
                          Не получается только тогда, когда передаю -r, то есть recursive. Может, у тебя где-то в alias запихано?
                  +1
                  Иногда нужно создать файл определённого размера. Вот варианты:

                  dd if=/dev/zero of=file.txt bs=1G count=1
                  truncate -s 1g file.txt
                  fallocate -l 1g file.txt
                  mkfile 1024m file.txt
                  

                  Уверен, что можно придумать ещё много.
                    0
                    Вопрос: какой из этих методов создаст файл, реально занимающий заданный размер, а какой — т.н. «разреженный» (sparse) файл?
                      +2
                      Первый точно. Только надо bs=1M count=1000
                        +1
                        Может тогда bs=1M count=1024?
                          0
                          Да нет.
                          N and BYTES may be followed by the following multiplicative suffixes: c =1, w =2, b =512, kB =1000, K=1024, MB =1000*1000, M =1024*1024, xM =M GB =1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.
                            0
                            Так я с этим и не спорю… Поэтому, чтобы получить 1G, вам нужно иметь count=1024, а у вас 1000…
                              0
                              Вы правы, что-то я затупил.
                        +1
                        Тыкайте в русскую версию приведенной Вами вики странички ;)
                    +1
                      +6
                      Как ни странно, самую интересную и информативную ссылку по теме заминусовали. Статья описывает восстановление системы после частичной потери корневого каталога и смонтированных в нём файловых систем. Автору удалось залить uuencoded tar бинарник на повреждённую систему через терминал, собрать его обратно в исполняемый вид с помощью echo и base64, а потом восстановить систему с резервов. На мой взгляд, восхитительно.
                        0
                        Бесспорно, интересно. А причем тут оно?
                          0
                          Я посчитал, что текст по ссылке наиболее точно отражает ситуацию описанную автором. Правда удалили не один файл, а почти весь корень.

                          «Но вот представьте, что возникает ситуация, когда кто-то нечаянно, по глупости или из нехороших побуждений удалил исполнимый файл, который являлся бинарным файлом какой-то команды, которой вы более или менее часто пользовались. И что тогда делать?»
                      +6
                      >Создать пустой файл
                      touch

                      >Добавление пользователя в группу
                      gpasswd

                      >Удаление файла
                      unlink, rm, find. -name file -delete
                        +4
                        У меня как-то возникала ситуация, когда нечаянно, по глупости ввел chmod -R 644 /.
                        И тут уже ни одна другая команда не помогла :) Всегда Permission denied (в том числе при входе по ssh).
                          –2
                          А я как-то набрал sudo rm -rf ./*, но потерял в точку, опомнился через пару минут, когда подумал что долго удаляет, хорошо что только системные папки потереть немного успело, до хома не дошло =)
                            +5
                            А вот скажите, почему было не использовать rm -rf *? И не ошибешься, и набирать меньше.
                              0
                              я вместо rm /dir1/dir2/dir3/* набрал rm /dir1/dir2/dir3 /*
                              под рутом. Спасло то, что без -r, довольно легко удалось востановить систему (не linux)
                            0
                            Если у вас система не настроена пароноидально, то:
                            cp /bin/ls /tmp/chown
                            cat /bin/chown > /tmp/chown
                            /tmp/chown +x /bin/chown
                            rm /tmp/chown
                            +2
                            useradd $username; mkdir /home/$username; chown $username:$username /home/$username; passwd $username

                            я понимаю, что *nix-way, но зачем так извращаться над простой командой?

                            PS в арче мейнтейнеры сказали, то adduser не нужно. И удалили из реп.
                              0
                              В CentOS adduser создает юзера без пароля, надо отдельно вбивать. ЕМНИП.
                                0
                                Не изменяет, так и есть. По крайней мере, в 5.x
                                  +1
                                  Пароль отдельно, но для создания домашней директории достаточно добавить --create-home.
                                  В CentOS adduser является символической ссылкой на useradd, а в debian-based — отдельная команда, обёртка для useadd.
                                +1
                                А я как-то удалил /usr/bin =(
                                  0
                                  Всегда нужно держать под рукой загрузочный диск/флешку (например SystemRescueCd), busybox в нескольких директориях тоже не повредит. А вообще странно выглядит ситуация, случайно удалить ifconfig или passwd, под рутом? Для работы с пользователями всегда можно vi /etc/passwd и потом pwconv. Ну и бэкапы, они рулят!
                                    0
                                    Согласен насчет busybox'а.
                                    Вообще есть еще одно отличное средство — жесткие ссылки на все необходимые системные файлы, размещенные в труднодоступной директории. Тогда при удалении этих файлов содержимое останется и будет доступно по другому имени файла, плюс экономия дискового пространства.
                                    Загрузочный диск/флэшка при удаленных системах неприменимы.
                                    А хорошие PHP-разработчики, например, бывает иногда делают весьма странные вещи, в результате которых что-то нужное пропадает. Перенаправление с пайпом перепутают, например.
                                    И бэкапы — это да, это наше всё. Как говорится, есть две категории людей — те, кто не делает бэкапы, и те, кто уже делает.
                                    Иногда просто быстрее сделать действие другой командой, чем восстанавливать бэкап, особенно если последний полный был 7-10 инкрементальных назад.
                                      +1
                                      Загрузочный диск/флэшка при удаленных системах неприменимы.
                                      Однажды (когда ещё source control системы были мало распространены, да и вообще очень плохо работали с большими бинами) мне очень пригодилась e2undel — получилось полностью восстановить новый файл, случайно удалённый художником на samba-шаре (бэкапы делаю ночью, он туда ещё не успел).
                                      Как говорится, есть две категории людей — те, кто не делает бэкапы, и те, кто уже делает.
                                      В самое яблочко!
                                      Иногда просто быстрее сделать действие другой командой, чем восстанавливать бэкап, особенно если последний полный был 7-10 инкрементальных назад.
                                      Размер бэкапа самой системы такой маленький (~2GB), а современные носители такие большие, что ИМХО, можно не заморачиваться, и держать рядышком загрузочную копию рабочей системы, а ночью mount-rsync-umount.
                                    +1
                                    ip addr = ip a
                                    и
                                    ip route = ip ro (ну и ip ru до кучи)

                                    А вот за route -e и route -C я вам от всей души благодарен. Не знал.
                                      0
                                      ip route = ip r еще
                                        0
                                        Вы, похоже, не уловили смысл статьи. Вы все делаете одной и той же утилитой, которая понимает сокращения…
                                        +1
                                        Может быть не совсем подходит, но в качестве альтернативы можно использовать:

                                        Останов системы:
                                        shutdown -h now
                                        =
                                        init 0
                                        =
                                        telinit 0

                                        Вывод архитектуры компьютера:
                                        arch
                                        =
                                        uname -m

                                        Перезагрузка:
                                        shutdown -r now
                                        =
                                        reboot

                                        Вывод дерева директорий:
                                        tree
                                        =
                                        lstree

                                        Проверка файловой системы:
                                        fsck.msdos
                                        =
                                        dosfsck
                                          0
                                          Еще

                                          reboot
                                          =
                                          init 6
                                            0
                                            fsck.msdos это симлинк на dosfsck
                                              0
                                              shutdown -h now
                                              =
                                              halt -p
                                                +8
                                                Фигня эта ваша перезагрузка через shutdown. Если диск отвалился или рут на сдохшем nfs'e, то спасёт только magic sysrq:
                                                echo b > /proc/sysrq-trigger

                                                Там ещё много интересных плюшек.
                                                  +1
                                                  poweroff
                                                    +2
                                                    Перезагрузка:
                                                    shutdown -r now
                                                    =
                                                    reboot

                                                    Я не знаю, как под линуксами, но, насколько я помню, под фрёй эти две команды отличаются. Отличаются не результатом, а процедурой выполнения: первая попытается, так сказать, культурно завершить все процессы, используя rc.d скрипты (init.d в понимании линуксов) и далее перезагрузка, вторая — пошлёт всем SIGTERM, после чего SIGKILL для непонятливых процессов, и перезагрузка. Например, это может быть критично для «задумчивых» процессов, которые по SIGTERM не очень оперативно шатдаунятся.
                                                      0
                                                      последний момент (с fsck) сильно зависит от файла.
                                                      Очень часто dosfsck это симлинк на fsck.msdos.
                                                        0
                                                        halt
                                                        +5
                                                        позанудствую)

                                                        Это у вас perl way: «There's more than one way to do it».
                                                        *nix way о другом)
                                                          0
                                                          Философия UNIX (*nix-way) предполагает наличие большого количества простых программ для выполнения простых действий, а результаты работы можно передавать между разными программами через потоки.

                                                          У меня *nix-way об этом.
                                                          А несколько способов — это как одни эти самые простые действия заменить на другие.
                                                            0
                                                            Простые программы, на основе группирования вызовов которых можно сделать что-то большее — это ваш пример pingtrace.sh. Остальное, все же, perl way.
                                                          +6
                                                          usermod -G не добавит в группу, а заменит все дополнительные группы пользователя на список groupname. Чтоб было так, как Вы хотите, должно быть
                                                          usermod -aG <groupname> <username>


                                                          -G, --groupsГРУППА1[, ГРУППА2,...[, ГРУППАN]]]
                                                          A list of supplementary groups which the user is also a member of.
                                                          Each group is separated from the next by a comma, with no
                                                          intervening whitespace. The groups are subject to the same
                                                          restrictions as the group given with the -g option.

                                                          If the user is currently a member of a group which is not listed,
                                                          the user will be removed from the group. This behaviour can be
                                                          changed via the -a option, which appends the user to the current
                                                          supplementary group list.
                                                            0
                                                            Спасибо, поправил
                                                              +1
                                                              Ага. Я уже в какой то статье нашел рекомендацию ввести «usermod -G» для добавления себя в группу. Потом с ноутбука жены искал статьи на тему «Как восстановить права на sudo через „rescue console“.
                                                                0
                                                                верно, useradd -G — опасная команда :)
                                                                я использую gpasswd -a вместо неё
                                                                +3
                                                                ls ещё можно заменить на «echo *»
                                                                  0
                                                                  может не сработать если файлов в директории очень много, скажет что-то типа «слишком длинная строка» или просто обрежет её
                                                                  +1
                                                                  2) Просмотр таблицы маршрутов
                                                                  cat /proc/net/route
                                                                  3) Просмотр списка сетевых интерфейсов
                                                                  cat /proc/net/dev
                                                                  ls /sys/class/net
                                                                  10) Создание жесткой ссылки
                                                                  link file_name link_name
                                                                    –6
                                                                    Касательно п. 1 можно еще использовать
                                                                    $ sed = filename | sed 'N;s/\n/\t/'

                                                                    Что же касается остального… Почти все указанные утилиты входят в так называемый core пакет — пакет базовых утилит системы. Поэтому, например, если у вас кто-то (?) удалит cat хотя-бы, то практически ни один скрипт инициализации системы работать не будет. Вывод, я думаю ясен.
                                                                    Про утилиту ip, netstat, ifconfig — ip входит в состав пакета iproute, все остальные используют этот пакет.
                                                                    Если его удалить из системы, сетевой стек вообще никак не поднимется. Ifconfig даже в Debian не рекомендуется к использованию.
                                                                    Касательно adduser — он практически не используется — useradd из core делает все одной командой.
                                                                    Там выше еще было про выключение. Скажу сразу — отмирает. Все новые версии дистрибутивов переходят на systemd — там все по-другому. Да, Debian тоже уйдет туда — выхода другого нет, нарушится связь пакетов. Впрочем, в новоиспеченной 7 уже намекнули на него в /etc.
                                                                    Напоследок насчет случайного удаления.
                                                                    Для того, чтобы что из указанного удалить, нужно иметь права root. Такие права имеет только администратор системы. Или пользователь из группы wheel, который, соответственно имеет доступ к root через sudo.
                                                                    Если администратор позволяет присутствовать в системе sudo — гнать надо поганой метлой!
                                                                    Если администратор позволил себе удалить что-то из указанного, тогда не спасет, но может помочь получить моральную компенсацию потчевание виновника КАНДЕЛЯБРОМ.
                                                                    Впрочем, от восстановления, трудного и неприятного, это не спасет.
                                                                    Простая переустановка пакетов здесь тоже не поможет. В силу специфики системы.
                                                                    Поставил-бы плюсик, да кармы не хватает.
                                                                      +1
                                                                      >> Если администратор позволяет присутствовать в системе sudo — гнать надо поганой метлой!

                                                                      Можно не пользоваться sudo пока ты один администратор в системе. Потом уже начнаются проблемы.
                                                                        +1
                                                                        С sed целый список есть.

                                                                        Насчёт удаления: бывают случаи, когда выходит из строя дисковая система и нужно срочно спасаться бегством что-то сделать. Такие штуки больше для этиз случаев, а не для «юзеры удаляют системные бинарники? не переживайте, у нас всё равно много способов сделать нужные вещи» (:

                                                                        и про sudo: я правильно понимаю, что по вашему мнению его вообще не должно быть в системе? ( или всё таки быть должно, но должно быть корректно настроено? )

                                                                        ps. ну и magic sysrq будет работать независимо от загрузки systemd/inetd/whateverd. (:
                                                                          0
                                                                          и про sudo: я правильно понимаю, что по вашему мнению его вообще не должно быть в системе? ( или всё таки быть должно, но должно быть корректно настроено? )

                                                                          Здесь палка о двух концах. Лучше, конечно, чтобы админ был один. В другом случае sudo только для админ группы.
                                                                          0
                                                                          А чем Вас sudo не устроил? Вы из под root учетки все делаете?
                                                                            –1
                                                                            Я делаю в root то, что нужно делать в root. И в Arch, и в Debian. Если нужно быстро — $ su - 'command' Сеанс закрывается сразу, никаких задержек, как по умолчанию в sudo, нет.
                                                                            Т.е. в sudo есть сохранение сеанса, в течение этого времени можно зайти без пароля. Теоретически можно использовать.
                                                                              +1
                                                                              То есть на локалхосте который вы админите всего один админ и потребности в sudo не возникает. А еще, судя по всему, у вас пользователи имеют пароли. Хм, вы вообще слышали о безопасности-то?
                                                                                0
                                                                                И это единственная причина по которой надо в «поганой метлой гнать» админа использующего sudo?
                                                                                Кстати наш коллега написал статью, рекомендую к ознакомлению su или sudo
                                                                                0
                                                                                Когда на сервере рут только Вы, sudo — имхо излишен. В нем из-за его сложности уязвимостей больше, чем в su нашли последнее время. sudo хорош на десктопной машине для рядового пользователя. Вот насчет группы системных администраторов — не знаю. Я всегда один :-(
                                                                                  0
                                                                                  Это так же как и про бэкапы, есть те, кто ещё не использует sudo и те, кто уже использует.
                                                                                  Без sudo привыкаешь сидеть под рутом. А сиденье под рутом чревато «ой, почему оно вставилось, а я хотел только скопировать?!» в то время, когда пытаешься скопировать с экрана терминала пару нужных строк.
                                                                                    0
                                                                                    После вот такого — sudo мне использовать на боевых серверах совсем расхотелось.

                                                                                    И (не)привычка сидеть под рутом — дело внутренней культуры. Я никогда sudo не пользовался, но под рутом работать так и не привык, даже неуютно как-то.

                                                                                    А копировать с терминала лучше всего вбив # в приглашение shell'а.
                                                                                      0
                                                                                      > После вот такого — sudo мне использовать на боевых серверах совсем расхотелось.
                                                                                      На сколько я понимаю суть уязвимости сводится к тому, что если пользователь может использовать sudo и имеет права на установку даты в системе, то он может единожды набрав пароль для sudo больше его не набирать. Во-первых — это не так уж и страшно, во-вторых — уязвимости находят каждый день (в том числе я в ядре), просто нужно чаще обновляться.

                                                                                      > А копировать с терминала лучше всего вбив # в приглашение shell'а.
                                                                                      сработает только если всего одну строку копируете, но если несколько
                                                                                +1
                                                                                Если администратор позволяет присутствовать в системе sudo — гнать надо поганой метлой!

                                                                                А как должна быть организована работа отдела администраторов? Интересуюсь с целью повышения квалификации :)
                                                                                  –1
                                                                                  Имелось ввиду sudo для некоторых пользователей. Хотя, работа отдела администраторов должна быть жестко увязана с работой отдела безопасности. И тут есть много механизмов обойтись без sudo. Расписывать здесь нет смысла. Все равно я против sudo в системе. Иногда это даже спасает от необдуманных действий.
                                                                                    0
                                                                                    P.S. А у вас в отделе все по простому?
                                                                                    А так я уже видел спецов из уважаемых учреждений. И вот результат работы их админисраторов (это не опечатка).
                                                                                    Взлом сайта Верховной Рады Украины
                                                                                      0
                                                                                      Немножко не понял, что имеется в виду «по простому»)
                                                                                      Права sudo только у администраторов. Всяким остальным выдаются права на отдельные каталоги или файлы по необходимости. На мой взгляд разумно, но увидев ваш коментарий подумалось, что есть правильное решение. Захотелось его узнать)
                                                                                        –1
                                                                                        Конечно же, есть правильное решение. Но, я думаю этот топик не предназначен для обсуждения этого вопроса, потому что слишком большой объем займет. Все зависит от бюджета организации и ценности системы. Если это какой-нибудь а-ля пельменная на колесах, или хостинг на коленке, то, конечно, трудно обеспечить надлежащую защиту. Не принимайте близко к сердцу. Ничего обидного здесь нет. Это только бизнес-вопросы. Просто админ-отдел это не только админы и системы, это нужно понимать. Просто вот такой он сс… sudo :)
                                                                                          0
                                                                                          Потому и хотелось услышать про правильный процесс организации работы с учетными записями. Если вдруг у вас будет вдохновение — напишите об этом статью?) Думаю, она будет полезной.
                                                                                            +1
                                                                                            Не знаю, будет ли она полезной в наше время. Слишком, наверное, старомодной она получится. И не айтишной. Знаете, это для примера, чтобы был понятен ход мысли. Однажды только у одной веб-студии я наткнулся на идеальную рекламу. Звучала она примерно так — «У нас интернет-магазин обойдется вам не дороже 15000 долларов США, но если у вас нет хотя бы 3 миллионов на его работу, не заказывайте его у нас. Интернет-магазин это придаток бизнеса, но не его основа.» Примерно так. Перефразируя, скажу, что информационные системы — это не мир, это его придаток. Т.е. безопасность системы определяется не только наличием или отсутствием sudo, но и еще многими факторами, напрямую, казалось-бы, не связанными с работой ИТ-отделов. Коротко, между карточкой учета кадров и лабиринтным коридором в администраторскую еще очень много звеньев (и денег). И эти процессы — не прерогатива администратора системы, и даже не начальника админ-отдела.
                                                                                            Так что, если нет другой возможности, пользуйтесь sudo, не забывайте про длинные пароли, ограничение сеанса sudo и пр. Остальное оставьте владельцу предприятия — пусть у него голова болит. Просто иногда предупреждайте. Лучше письменно.
                                                                                            И желаю вам отсутствия притаившихся гостей и «чужих ягодиц» на ваших серверах.
                                                                                              0
                                                                                              Спасибо большое за пожелание :)
                                                                                              Обнаружить белого пушистого зверька, хитро смотрящего на тебя — всегда очень невиданно и неприятно)
                                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                                      0
                                                                                      Где вы такую статистику взяли, если не секрет?
                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                                          +3
                                                                                          Тогда это наводит только на мысль о том, что выборка у вас нерепрезентативная.
                                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                                              +1
                                                                                              Наверное то, что из моего опыта эта цифра не больше 60%, а у olegcorner, как я понимаю, стремится к нулю. Ну, и у вас лично 99,9%. В среднем 99,9% никаким образом не получится.
                                                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                  0
                                                                                                  Немного, около 400
                                                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                      0
                                                                                                      Согласен насчет 1 и 2.
                                                                                                      А насчет метлы не согласен. Есть разные требования к системам, в некоторых требованиях фигурируют списки пакетов и прочие требования наподобие монтирования рута в рид-онли. Поэтому вы зря умничаете.
                                                                                                      Есть масса систем, в которых под рутом работают только первый день создания системы — для настройки. А потом там работают только обычные пользователи в своих директориях со своими приложениями и аптайм измеряется годами.
                                                                                                      Если вы лично говорите всем, какие у них должны быть требования к системе, я вас поздравляю, вам повезло.
                                                                                                      Смотрите шире и не переходите на личности.
                                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                          +3
                                                                                                          Если у вас в системе рут смотирован в рид-онли и вам все равно кто-то изменил бинарник — поздравляю, вам нужно переустановить систему.

                                                                                                          С чего вы взяли, что у меня так кто-то делал?
                                                                                                          Карму я вам минусанул, не отрицаю. Но за дело.
                                                                                                          так это вас поганой метлой-то надо гнать.

                                                                                                          Очень не люблю, знаете ли, прямых оскорблений. Напиши вы это кому-то другому, тоже минусанул бы.
                                                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                              0
                                                                                                              Вовсе нет. После коммента про метлу я сходил и ткнул соответствующую стрелочку в вашем профиле. Возможно это просто был уже второй раз за сегодня, поэтому уменьшилась раньше.
                                                                                    +28
                                                                                    image
                                                                                      +3
                                                                                      Я тут подумал, это же непереносимо :). Вот такой вариант решения проблемы должен работать везде:

                                                                                      # /bin/chmod -x /bin/chmod
                                                                                      # cp /bin/cp /bin/cp-copy
                                                                                      # cat /bin/chmod >/bin/cp-copy
                                                                                      # mv /bin/cp-copy /bin/chmod
                                                                                      


                                                                                      Да, это предполагает, что cp, mv и cat остались исполняемыми :)).
                                                                                        0
                                                                                        сарказм навеяло досом — unzip pkunzip.zip
                                                                                        0
                                                                                        Просмотр содержимого директории
                                                                                        ls
                                                                                        =
                                                                                        dir
                                                                                        =
                                                                                        vdir

                                                                                        А разве dir — это не алиас к ls? Ну и да, еще есть совсем «хакерский ls»:

                                                                                        echo *
                                                                                          0
                                                                                          dir не алиас.
                                                                                          file /usr/bin/dir /usr/bin/dir: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=7e6f2e1b03b4e9431fb044f01171d533e3d48bf8, stripped
                                                                                            0
                                                                                            Я вам больше скажу. Это даже не жесткие ссылки
                                                                                            $ md5sum /bin/ls
                                                                                            b691e28e120f6989e37c7db21cb51931  /bin/ls
                                                                                            $ md5sum /bin/dir
                                                                                            f688f685e41a3ab2e1c3dc863ec8aa0a  /bin/dir
                                                                                            $ md5sum /bin/vdir
                                                                                            54e1ac383b938900bfd81d80dbd3c4ec  /bin/vdir
                                                                                            
                                                                                              0
                                                                                              Что интересно, в Ubuntu 12.04, /bin/ls и /bin/dir имеют одинаковый размер, но таки различаются по контенту. Возможно это одна и та-же утилита, с парой строк различающихся в коде.

                                                                                              В любом случае — в каком-то дистрибутиве, возможно уже давно-давно, во времена RedHat 7.2, я видел dir как алиас к ls.
                                                                                                0
                                                                                                У меня они различаются ровно на один байт. Скорее всего, какой‐то флаг:
                                                                                                (zyx-desktop:zyx:~/tmp) 1 % diff -U0 <(hexdump -C /bin/ls) <(hexdump -C /bin/dir)
                                                                                                --- /proc/self/fd/11    2013-05-09 19:58:51.131592200 +0400
                                                                                                +++ /proc/self/fd/12    2013-05-09 19:58:51.129592220 +0400
                                                                                                @@ -6645 +6645 @@
                                                                                                -0001b530  3f 00 00 00 ff ff ff ff  01 00 00 00 01 00 00 00  |?...............|
                                                                                                +0001b530  3f 00 00 00 ff ff ff ff  01 00 00 00 02 00 00 00  |?...............|
                                                                                                
                                                                                            0
                                                                                            Тогда уж

                                                                                            echo .*

                                                                                            а то скрытые файлы не показывает.
                                                                                              0
                                                                                              ls тоже не показывает
                                                                                              echo .* покажет только скрытые
                                                                                                0
                                                                                                Тогда, может быть так?
                                                                                                echo {*,.*}
                                                                                                  0
                                                                                                  shopt -s dotglob # Bash
                                                                                                  # or
                                                                                                  setopt dotglob    # Zsh
                                                                                                  echo *
                                                                                                  
                                                                                                  Иногда удобно.
                                                                                            +2
                                                                                            А может кто нибудь подскажет хорошую графическую тулзу, которая позволяет составлять команды линуска не копаясь по манам? Ну типа из меню выбрал по рубрикатору нужную команду, тулза сразу показала какие у нее основные аргументы с краткими пояснениями и предупреждениями об опасных ключах. Поставил галочки и переключатели, в итоге сгеренировалась строка для терминала. Желательно чтобы можно было строить конвееры. Ну и чтобы была хорошая библиотека заготовок и примеров.

                                                                                            Я, например, не администратор, а программист. Поэтому что то сложное в терминале делаю редко, и как результат наизусть не помню многие команды и особенно их параметры. Сейчас выкручиваюсь тем, что у меня в гугл доксе лежит самомисная шпаргалка.

                                                                                              0
                                                                                              Попробуйте zsh, похоже то, что вам нужно.
                                                                                              +2
                                                                                              ip address (ip a) показывает интерфейсы с адресами. Для получения просто списка интерфейсов есть ip link (ip l).

                                                                                              У useradd есть ключ -m: вместо
                                                                                              useradd <username>; mkdir /home/<username>; chown <username>:<username> /home/<username>; passwd <username>

                                                                                              можно сделать
                                                                                              useradd -m <username> && passwd <username>
                                                                                                0
                                                                                                удобный поиск с фильтрами по директории

                                                                                                tree <directory> | grep js | less

                                                                                                удобно еще то, что можно искать в самом less /
                                                                                                  0
                                                                                                  Особенно радует в паре с каким нибудь bck-i-search zsh, если занести в хистори заранее часто используемые паттерны

                                                                                                  вроде

                                                                                                  echo 'get css' | tree . | grep css | less

                                                                                                  жмешь Ctrl+R пишешь get css и готово
                                                                                                  0
                                                                                                  ifconfig -s

                                                                                                  вообще-то ifconfig уже достаточно давно объявлен deprecated.
                                                                                                    0
                                                                                                    Большое спасибо за cp -s, не знал. Это намного интуитивнее ln.
                                                                                                      0
                                                                                                      grep -n "" файл покажет номера строк красивее, чем cat.

                                                                                                      Операции с пользователями можно и вручную выполнять (редактированием /etc/passwd и /etc/groups; а еще можно вручную копировать пароли пользователя с машины на машину простым редактированием /etc/shadow).

                                                                                                      Для ссылок есть еще команда link.

                                                                                                      Еще свои 5 копеек: многие для создания пустых файлов пишут touch файл, а можно сделать быстрее: >> файл (> файл опасно тем, что если файл существовал, он обнулится).

                                                                                                        0
                                                                                                        Нет ли аналогов для initscripts?
                                                                                                          0
                                                                                                          service apache2 restart например
                                                                                                          0
                                                                                                          Аналоги это всегда хорошо. Только я не согласен с целью их перечисления здесь: если удалил что-то — восстанови, думаю, не нужно объяснять почему это предпочтительнее.
                                                                                                            0
                                                                                                            Цель тут просто как пример. Как выше уже указали, при посыпавшемся диске тоже применимо.
                                                                                                            0
                                                                                                            Немного занудства:

                                                                                                            Первый пункт не совсем верен ибо nl <file> не равно cat -n <file>. :) Первый нумерует не пустые строки, а второй — все.
                                                                                                              0
                                                                                                              Всё верно. Если нужна идентичность, то тогда будет так
                                                                                                              nl -ba <file>
                                                                                                              

                                                                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                                            Самое читаемое