Bash
Новый пользователь
Для генерации паролей удобно использовать pwgen -s
.
Создание пользователя qwerty
с группой qwerty
,
башем в качестве шелла по-умолчанию
и с домашней директорией:
U=qwerty G=$U
groupadd $G useradd --create-home -s /bin/bash -g $G $U passwd $U
Запрет на чтение домашней директории другими пользователями:
chmod 750 /home/$U
Скрыть юзернейм и хостнейм
Например, чтобы делать скриншоты и скринкасты для документации.
Приглашение баша определяется переменной PS1
.
Чтобы скрыть имя пользователя и хост, но оставить текущее местоположение,
можно указать такой формат:
PS1="\\w \$ "
Пример вывода:
~ $
~ $
~ $ cd folder/
~/folder $
~/folder $ cd anotherFolder
~/folder/anotherFolder $
Чтобы без лишних настроек получить чистое окно консоли:
PS1="\\w \$ ";clear
Переменную PS1
можно определить в ~/.bashrc
.
Подробнее об этой переменной.
Освободить место
Когда забивается диск, перестают работать самые базовые вещи. Даже клавиша TAB в баше. Ничего нельзя доустановить, чтобы решить проблему.
Поэтому NCurses Disk Usage лучше устанавливать сразу после развёртывания сервера.
sudo apt-get install ncdu
Программа рекурсивно сканирует папки и сортирует их в порядке убывания размера. Навигация как в mc, выход — q.
Когда место кончится:
-
df -h
чтобы понять, какие разделы переполнены. -
ncdu
из точки монтирования нужного раздела.
Команда |
Команда |
При использовании |
Подсветка синтаксиса в less
В Ubuntu:
sudo apt install source-highlight
Затем в $HOME/.bashrc
добавить
export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s"
export LESS=' -R -N'
При открывании больших файлов могут появиться существенные задержки. |
Опция -N
необязательна. Она добавляет номера строк.
Шпаргалка по nano
Чтобы видеть номер текущей строки при редактировании:
nano -c file.txt
Комбинации клавиш:
-
Вырезать строку — CTRL+K.
-
Вставить строку — CTRL+U.
-
Undo — ALT+U или Esc+U (под M в справке подразумевается клавиша meta).
-
Redo — ALT+E или Esc+E.
Сканирование портов
Иногда nmap не может просканировать порты, т.к. устройство игнорирует пинг.
Там есть опция -Pn
, чтобы не пинговать перед сканированием.
В строчке ниже сканируются порты с первого по сотый.
nmap -p 1-100 -Pn 192.168.1.1
Бэкапы для несекретной информации
Должны обладать:
-
избыточностью;
-
простым чтением и навигацией;
-
простотой в удалении старых снапшотов.
Предлагаю использовать cron и tar.
На инстансе, откуда делаются бэкапы, из-под рута настраивается безпарольный доступ к файл-серверу по SSH.
Полагаю, если:
-
файл-сервер находится в локальной сети,
-
cron-задача на клиенте настроена из-под рута,
-
публичный ключ на клиенте защищен от чтения другими пользователями,
то приватный ключ можно делать без парольной фразы.
Открытый ключ копируется на сервер в файл /home/USER/.ssh/authorized_keys.
Права:
drwx------ (700) user user .ssh -rw------- (600) user user .ssh/authorized_keys
Может потребоваться изменить настройки SSH-сервера (разрешить publickey- или RSA-аутентификацию). И нужно сделать reload SSH-сервера.
Затем, например, в /usr/local/bin
клиента кладём скрипт
с правами 700 root:root
примерно следующего содержания:
#!/bin/sh tar -cvpz --one-file-system -C "/путь/к/папке/" папка | ssh логин@сервер "(cat > /бэкапы/`date +\"%Y-%m-%dT%H.%M.%S\"`-названиеПапки.tar.gz)"
sudo crontab -u root -e
0 0,6,12,18 * * * /usr/local/bin/myScript.sh
Проблема, которая тут может возникнуть — закончится место на файл-сервере. В моём случае, это несущественно. Буду удалять старые снапшоты вручную время от времени.
Проверить файл на вирусы самым дешевым способом
sudo apt-get install clamav
clamscan файл
status=$?
А если нужно проверить целую папку, удобнее всего это сделать так:
clamscan --infected --recursive=yes папка
Предлагаю также увеличивать лимиты, чтобы при сканировании
не игнорировались файлы больше 25 мегабайт:
--max-filesize=4000m --max-scansize=4000m
(см. man clamscan
).
Есть также опции для увеличения лимита
времени на файл (--max-scantime
, по-умолчанию 120000
миллисекунд),
предела уровней вложенности директорий и т.д.
MD5 всех файлов в директории в Linux и FreeBSD
Во FreeBSD результат выводится в другом формате, нежели в Linux.
Команде
md5sum * > checklist.chk
во FreeBSD приблизительно соответствует команда
md5 -r * > checklist.chk
где -r
означает «reversed»:
сначала хэш-сумма, потом имя файла.
И можно было бы сравнивать эти файлы хотя бы Meld’ом визуально, если бы порядок строк не отличался. Если я правильно понял, порядок glob зависит от переменной LC_COLLATE, но мне не удалось сделать его одинаковым. Поэтому я решил прибегнуть к универсальному средству — к Перлу.
# Linux:
perl -e 'opendir DIR,"."; my @f = sort grep {!/^\.\.?$/} readdir(DIR); closedir DIR; foreach(@f) { print "\"$_\"\n"; }' | xargs md5sum > x.chk
# FreeBSD:
perl -e 'opendir DIR,"."; my @f = sort grep {!/^\.\.?$/} readdir(DIR); closedir DIR; foreach(@f) { print "\"$_\"\n"; }' | xargs md5 -r > x.chk
# Удобно сравнивать даже из консоли:
diff --ignore-space-change x1.chk x2.chk
colordiff --ignore-space-change x1.chk x2.chk
# Оба файла работают в Linux.
md5sum -c x1.chk
md5sum -c x2.chk
# Во FreeBSD (11.1-RELEASE) проверка MD5
# списка файлов не поддерживается.
Расшифровка однострочника:
# Открыть текущую директорию в handle с названием DIR.
opendir DIR,".";
# Справа налево:
# прочитать содержимое директории;
# убрать '.' и '..';
# отсортировать,
# сохранить в массив @f.
my @f = sort grep {!/^\.\.?$/} readdir(DIR);
# Закрыть директорию DIR.
closedir DIR;
# Вывести каждое имя файла с новой строки в кавычках.
foreach(@f) {
print "\"$_\"\n";
}
Поддиректории игнорируются самими командами md5
и md5sum
.
Удалить конфиденциальные сведения из истории консоли
Конечно, можно удалить всю историю из текущего окна консоли (history -c
),
но для многих ситуаций это может быть слишком радикальным шагом,
ведь есть возможность удалить отдельные строки из истории.
Вначале надо узнать идентификаторы последних команд.
history | tail -n 20
Затем удалить конкретные команды.
history -d идентификатор
Главное не забыть стереть в терминале результат первой команды.
clear
Выйти из sudo
Sudo позволяет не вводить пароль какое-то время после первого использования. Это настраивается.
Можно явно попрощаться, не закрывая окно терминала:
sudo -k
В следующий раз sudo снова спросит пароль.
Linux UI
Адресная строка в Gnome Files
По-умолчанию, в файловом менеджере Gnome путь текущей папки показан в виде последовательности кнопок. Чтобы переключиться на текстовое поле, нужно нажать Ctrl+L.
Туда можно также ввести sftp-адрес.
Например, sftp://username@192.168.0.1/folder
Здоровье
Эргономика рабочего места
Чтобы не сломать руку об мышку, рекомендую программу Workrave. Она заставляет делать перерывы раз в три минуты по 30 секунд и длинные перерывы время от времени. Идея в том, чтобы убирать руки и вообще ничего ими не делать.
Минус: она может выбивать из состояния потока.
Иногда нужно просто проверить эргономику рабочего места. Можно не заметить, что поза очень неудобная.
Я в очередной раз поменял всё, и вроде стало лучше. Привыкаю. Текущие девайсы:
-
Кронштейны настенные KROMAX ATLANTIS-15 для мониторов (нет регулировки по высоте, к сожалению);
-
Стол с регулируемой высотой (ручной привод) SKARSTA СКАРСТА 120x70 см. (похоже, он теперь называется TROTTEN);
-
Стул на колёсиках LOBERGET ЛОБЕРГЕТ / BLYSKÄR БЛИСКЭР на винтовой опоре (по происшествии полугода могу сказать, что не самая удобная спинка, и на нём накапливается статическое электричество, но стул точно удобнее нерегулируемого);
-
Любая вертикальная мышь. Я использую какую-то NoName 870174 для правшей.
-
Большой тканевый коврик без подушки (я использую с подушкой, но она развёрнута в другую сторону). Подушка помогала только первые пару недель. Вертикальная мышь намного лучше.