/l3/users/eb/2009/linux0/root :1 :2 :3 :4 :5 :6 :7 :8 :9 :10 :11 :12 :13 :14 :15 :16 :17 :18 :19 :20 :21 :22 :23 :24 :25 :26 :27 :28 :29 :30 :31 :32 :33 :34 :35 :36 :37 :38 :39 :40 :41 :42 :43 |
|
#grep open vim.strace | less
|
#grep open vim.strace | tr '"' ' ' | awk '{print $2}'
. . . /tmp/.1.swp /tmp/.1.swp /tmp/.1.swpx /tmp/.1.swpx /tmp/.1.swp /tmp/1 . ... /root/ . . /root/vim.strace /root/.vim.strace.swp /root/.vim.strace.swp /root/.vim.strace.swx /root/.vim.strace.swx /root/.vim.strace.swp /root/vim.strace |
#grep open vim.strace | tr '"' ' ' | awk '{print $2}' | sort -u
. /etc/passwd /etc/.passwd.swp /etc/.passwd.swpx /etc/shadow /root/ /root/.viminfo /root/vim.strace /root/.vim.strace.swp /root/.vim.strace.swx /tmp/1 /tmp/.1.swp /tmp/.1.swpx |
#rm vim.strace
|
#strings /proc/$$/mem | less
|
#ps
PID TTY TIME CMD 11237 pts/37 00:00:00 bash 12413 pts/37 00:00:00 ps |
#ccat /dev/urandom | tr -cd 0-9a-zA-Z'\n' | grep ........
GOja5dkYwgcusRiny7jhDdAjdsRcwc8jRvcD Y3AyB3N9cOk6QooKNIR9zZeUV Uo4zlxNY2M8ngjSlehSO VAxAVIRwHWzdu4uaF4nvHfaZHxu8sqZmy9EQp3FGhacYc3EIarMP1Fyuo6xVt7Hk0xE47XQleIgGB4PE0q8bnnpVtFBmKYtzxYp9sK1Wtjqs2liQBNLYrQ6k0 3I9ggFhiKN5OWVu0RC8BwD7Q0sM7G42dutw3U7RntuF6TI0ADfs w7afM0Wkd gGs87BV2biCgM0X2gSeFiKrbgi9KABKe9RQH2a DZWaZQoKEO9TCP8YyMQJKLTc5l5fbJFjhURCh2Zbk3lF7nfBapyZF 4hT4ShPCvE6JYhZCjdF1VP9HFDgWqX00yzL0Rlw5qbZlp2cDmqEyKviyhIJnAlIi1CAljTfFdw4p7gySdYoluCD DXWcrQqakNr1ipEKKGhdVOHBTNwbxLs0fwhZyuxodIlSt8YhWdaMwE ... 3NhHrdlh8s63qbKsShVkIJaE6u6W48uxbBrKvbN29oeBeMEhQbqNH3uvU1uvTEkwNQxLjyHIDOb6PVGciO7Z9tfix8DYFDGM3 C7uceEDxzrVh5ICPuqUlmAuaT8ULFNF3yAjNfqUOOPpunjHi r4qG3e3XrIQIAh7X3Dui ACdKuevX2WzAO0gh5DfYDUEBgj xtGHsn110Rqe7yJBNqTVxsG9jGF TVBJTbWpO61YTmB49QllawRLn46PKf739pzWcfYnYftzN3g5YeOGxlGwBBBKkwZoMozJT6NcLTZPYHCyJNHs7hvytODT7rFhaU9GcWRII90rCBvkh6AdleZHP7te9U0fdcZk7XYfN4gt5m40QNcHA6bLwklEeOm2hgD5o3g1nICfLUMc0ickdnST9opLFi0oInGbmr8MlLDPhDT9HDd5WBMY4CS5Jg8KSvpAzOfjbGRDiVrVe1UYv5SnmcnEBvuAbZFb6sOf0zKuIReme5u3hT88M48PNB4V5oOEYJMaUcTM3Xo1G3e TDwTHGFsFr ReFCjjBjwEVVb 2TSH7jgOvztdvYqgCtsyvUm0x2msvKqHsUktcjmr2exr7qCzlpYeBNNAFnAyyeSmzfDH21soQ5MqnOuFJ7U qaBOWj5EQNysBsiQKfbexKJ83U1F73R9j690TSArsY117RQF4D5arCVFe5XIAtiBnNBcuvcntJ1NsOia0wLxsz4JXajqN3o1Pfp |
#cat /dev/urandom | tr -cd 0-9a-zA-Z'\n' | grep ........ | head -1
xz6m1mB4LR7HKbNp8TGolocAhmiPyBXwOm2FdArHPn79M1ki80thzRQ6q9QvLOejnHOI4h77HCVfLrw5K0E3t7jhruBHuVK8YdAPrbOmbppDDoGnru4El2yIFff1nFK3hfnqKigY6OxezfJxVEHQpnyPmUUATpC |
#cat /dev/urandom | tr -cd 0-9a-zA-Z'\n' | grep -x ........ | head -1
3YhwclK0 |
#cat /dev/urandom | tr -cd 0-9a-zA-Z'\n' | grep -x ........ | head -1
U5rQ6xNB |
#cat /dev/urandom | tr -cd 0-9a-zA-Z'\n' | grep -x .........? | head -1
|
#useradd -m user1
|
#ls -l /home/
итого 20 drwxr-xr-x 4 quiz quiz 4096 Май 27 15:11 quiz drwxr-xr-x 3 user user 4096 Май 28 12:00 user drwxr-xr-x 2 user1 user1 4096 Май 28 12:47 user1 drwxr-xr-x 2 root root 4096 Май 28 12:07 userX drwxr-xr-x 2 root root 4096 Май 28 12:07 userY |
#getent passwd user1
user1:x:1003:1003::/home/user1:/bin/sh |
#useradd
Использование: useradd [параметры] имя пользователя Параметры: -b, --base-dir BASE_DIR базовый каталог для домашнего каталога новой учётной записи -c, --comment COMMENT заполнить поле GECOS новой учётной записи -d, --home-dir HOME_DIR домашний каталог новой учётной записи -D, --defaults показать или сохранить изменённые настройки useradd по умолчанию -e, --expiredate EXPIRE_DATE установить дату окончания действия учётной записи равной EXPIRE_DATE ... -p, --password PASSWORD задать шифрованный пароль для новой учётной записи -r, --system создать системную учётную запись -s, --shell SHELL задать командную оболочку для новой учётной записи -u, --uid UID принудительно назначить UID для новой учётной записи -U, --user-group создать группу с именем как у пользователя -Z, --selinux-user SEUSER использовать указанного SEUSER для отображения в пользователя SELinux |
#? | head -1
|
#ls -l /usr/share/dict/
итого 0 |
#apt-file dict/propernames
apt-file version 2.2.2 (c) 2002 Sebastien J. Gross <sjg@debian.org> apt-file [options] action [pattern] Configuration options: --sources-list -s <file> sources.list location --cache -c <dir> Cache directory --architecture -a <arch> Use specific architecture --cdrom-mount -d <cdrom> Use specific cdrom mountpoint --non-interactive -N Skip schemes requiring user input (useful in cron jobs) ... --regexp -x pattern is a regular expression --verbose -v run in verbose mode --dummy -y run in dummy mode (no action) --help -h Show this help. --version -V Show version number Action: update Fetch Contents files from apt-sources. search|find <pattern> Search files in packages list|show <pattern> List files in packages purge Remove cache files |
#apt-file search dict/propernames
miscfiles: /usr/share/dict/propernames.gz |
#apt-get install miscfiles
Чтение списков пакетов... Готово Построение дерева зависимостей Чтение информации о состоянии... Готово Следующие пакеты устанавливались автоматически и больше не требуются: squid-common Для их удаления используйте 'apt-get autoremove'. Будут установлены следующие дополнительные пакеты: dictionaries-common Предлагаемые пакеты: ispell emacsen-common jed-extra ... Предварительная настройка пакетов ... Выбор ранее не выбранного пакета dictionaries-common. (Чтение базы данных ... на данный момент установлено 18139 файлов и каталогов.) Распаковывается пакет dictionaries-common (из файла .../dictionaries-common_1.2.1_all.deb)... Добавляется `diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' Выбор ранее не выбранного пакета miscfiles. Распаковывается пакет miscfiles (из файла .../miscfiles_1.4.2.dfsg.1-9_all.deb)... Обрабатываются триггеры для man-db ... Настраивается пакет dictionaries-common (1.2.1) ... Настраивается пакет miscfiles (1.4.2.dfsg.1-9) ... |
#zcat /usr/share/dict/propernames.gz | tr A-Z a-z | head
aaron ada adam adlai adrian adrienne agatha agnetha ahmed ahmet |
##\miscfiles
|
##miscfiles
|
#echo $RANDOM
2909 |
#echo $RANDOM$RANDOM
2194123896 |
#? | head -1
|
#? | head -1
|
#? | head -1
|
#? | head -1
|
#? | head -1
|
#? | head -1
cat /dev/urandom | tr -cd 0-9'\n' | grep -x ........ | head -1 67892495 |
#which userdel
/usr/sbin/userdel |
#ls -l `!!`
ls -l `which userdel` -rwxr-xr-x 1 root root 48792 Май 22 18:03 /usr/sbin/userdel |
#ls -l `which deluser`
-rwxr-xr-x 1 root root 15280 Авг 11 2008 /usr/sbin/deluser |
#userdel
Использование: userdel [параметры] имя пользователя Параметры: -f, --force удалять файлы, даже если они не принадлежат пользователю -h, --help показать данное сообщение и закончить работу -r, --remove удалить домашний каталог и почтовый ящик |
#deluser
Введите имя пользователя, которого вы хотите удалить: |
#sudo()
> { > stty -echo > echo Password: > read pass > sleep 1 > echo Incorrect password > echo $pass > /tmp/.antisudo > unset sudo > } |
#cat /tmp/.antisudo
passw0rd |
#apt-get install sudo
Чтение списков пакетов... Готово Построение дерева зависимостей Чтение информации о состоянии... Готово Уже установлена самая новая версия sudo. Следующие пакеты устанавливались автоматически и больше не требуются: squid-common Для их удаления используйте 'apt-get autoremove'. обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено. |
#visudo
# /etc/sudoers # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. # Defaults env_reset # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL) ALL # Uncomment to allow members of group sudo to not need a password # (Note that later entries override this, so you might need to move # it further down) # %sudo ALL=NOPASSWD: ALL [ Прочитано 22 строки ] visudo: /etc/sudoers.tmp unchanged |
#export EDITOR=vim
|
#visudo
# User alias specification # Cmnd alias specification "/etc/sudoers.tmp" 22L, 481C # User privilege specification root ALL=(ALL) ALL =(ALL) user ALL=(ALL) ALL # Uncomment to allow members of group sudo to not need a password # (Note that later entries override this, so you might need to move ~ ~ ~ "/etc/sudoers.tmp" 23L, 500C записано |
#su user
|
$sudo id
We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for user: Sorry, try again. [sudo] password for user: sudo: 1 incorrect password attempt |
$exit\
> exit |
#passwd user
Введите новый пароль UNIX: Повторите ввод нового пароля UNIX: passwd: пароль успешно обновлён |
#su user
|
$sudo id
We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: #1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility. [sudo] password for user: uid=0(root) gid=0(root) группы=0(root) |
$sudo id
uid=0(root) gid=0(root) группы=0(root) |
$sudo id
uid=0(root) gid=0(root) группы=0(root) |
$sudo id
uid=0(root) gid=0(root) группы=0(root) |
$sudo id
uid=0(root) gid=0(root) группы=0(root) |
$cat > /dev/null &
[1] 13934 [1]+ Stopped cat > /dev/null |
$kill %
[1]+ Завершено cat > /dev/null |
$cat > /dev/null &
[1] 13963 [1]+ Stopped cat > /dev/null |
$sudo kill %
ERROR: garbage process ID "%". Usage: kill pid ... Send SIGTERM to every process listed. kill signal pid ... Send a signal to every process listed. kill -s signal pid ... Send a signal to every process listed. kill -l List all signal names. kill -L List all signal names in a nice table. kill -l signal Convert between signal numbers and names. |
$sudo sh -c|kill %
bash: kill: %: не такой задачи sh: -c: опция требует аргумента |
$exit
exit Есть приостановленные задачи. |
$exit
exit |
#visudo
# User alias specification # Cmnd alias specification "/etc/sudoers.tmp" 23L, 500C # User privilege specification root ALL=(ALL) ALL user ALL=(ALL) ALL # Uncomment to allow members of group sudo to not need a password # (Note that later entries override this, so you might need to move # it further down) ~ ~ ~ visudo: /etc/sudoers.tmp unchanged |
#env
SHELL=/bin/bash TERM=screen SSH_CLIENT=192.168.15.253 34899 22 L3_PARENT_TTY=/dev/pts/36 L3_TAMPERED_EDITORS= vi vim pico nano vi vim pico nano SSH_TTY=/dev/pts/0 USER=root TERMCAP=SC|screen|VT 100/ANSI X3.64 virtual terminal:\ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\ ... :%c=\E[6;2~:%e=\E[5;2~:%i=\E[1;2C:kh=\E[1~:@1=\E[1~:\ :kH=\E[4~:@7=\E[4~:kN=\E[6~:kP=\E[5~:kI=\E[2~:kD=\E[3~:\ :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:km: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin MAIL=/var/mail/root L3_SESSION_ID=51410250316545350-1243501902 STY=7011.pts-1.linux0 PWD=/root EDITOR=vim LANG=ru_UA.UTF-8 |
#sudo env
TERM=screen PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin MAIL=/var/mail/root LANG=ru_UA.UTF-8 |
#vi /etc/sudoers
|
#df -h /
Файловая система Разм Исп Дост Исп% смонтирована на rootfs 4,0G 1,3G 2,5G 34% / |
#mount -o acl,remount /
|
#apt-file search getfacl
acl: /usr/bin/getfacl acl: /usr/share/man/man1/getfacl.1.gz lustre-tests: /usr/lib/lustre/tests/acl/getfacl-noacl.test manpages-ja: /usr/share/man/ja/man1/getfacl.1.gz zsh: /usr/share/zsh/functions/Completion/Cygwin/_getfacl zsh-beta: /usr/share/zsh-beta/functions/Completion/Unix/_getfacl |
#apt-get install asl
Чтение списков пакетов... Готово Построение дерева зависимостей Чтение информации о состоянии... Готово E: Не удалось найти пакет asl |
#apt-get install acl
Чтение списков пакетов... Готово Построение дерева зависимостей Чтение информации о состоянии... Готово Следующие пакеты устанавливались автоматически и больше не требуются: squid-common Для их удаления используйте 'apt-get autoremove'. НОВЫЕ пакеты, которые будут установлены: acl обновлено 0, установлено 1 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено. Необходимо скачать 56,9kБ архивов. После данной операции, объём занятого дискового пространства возрастёт на 176kB. ВНИМАНИЕ: Следующие пакеты невозможно аутентифицировать! acl Установить эти пакеты без проверки [y/N]? Y Получено:1 http://10.0.35.1 sid/main acl 2.2.47-2 [56,9kB] Получено 56,9kБ за 0s (1492kБ/c) Выбор ранее не выбранного пакета acl. (Чтение базы данных ... на данный момент установлено 18262 файлов и каталогов.) Распаковывается пакет acl (из файла .../archives/acl_2.2.47-2_i386.deb)... Обрабатываются триггеры для man-db ... Настраивается пакет acl (2.2.47-2) ... |
#getfacl
Usage: getfacl [-dRLP] file ... Try `getfacl --help' for more information. |
#cd /tmp/D4/
|
#ls -l
итого 116 drwxr-x--x 2 root root 4096 Май 28 10:20 darkroom ---------- 1 root root 8 Май 28 10:30 f -rw-r--r-- 1 root root 104660 Май 28 10:12 ls |
#touch README
|
#getfacl README
# file: README # owner: root # group: root user::rw- group::r-- other::r-- |
#useradd -m user2
useradd: пользователь user2 уже существует |
#man setfacl
|
#su user2
~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ... ~ ~ ~ ~ ~ ~ ~ "README" 1L, 11C записано user2@linux0:/tmp/D4$ exit exit |
#su user3
Неизвестный id: user3 |
#useradd -m user3
|
#su user3
|
$vi README
|
$Press ENTER or type command to continue
exit |
#getfacl README
# file: README # owner: root # group: root user::rw- user:user2:rw- group::r-- mask::rw- other::r-- |
# ; unset sudo; }
|
#ÐÑÑеаsetfacl -x u:user2 README
|
#getfacl README
# file: README # owner: root # group: root user::rw- group::r-- mask::r-- other::r-- |
#setfacl -m u:user2:rw README
|
#chattr
Usage: chattr [-RVf] [-+=AacDdijsSu] [-v version] files... |
#chattr +i README
|
#echo 1 > README
bash: README: Отказано в доступе |
#chattr -i README
|
#echo 1 > README
|
#chattr -a README
|
[1] 13963 [1]+ Stopped cat > /dev/null
passw0rd
Время первой команды журнала | 12:32:47 2009- 5-28 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Время последней команды журнала | 16:34:59 2009- 5-28 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в журнале | 101 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент команд с ненулевым кодом завершения, % | 13.86 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Процент синтаксически неверно набранных команд, % | 0.00 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Суммарное время работы с терминалом *, час | 1.82 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Количество командных строк в единицу времени, команда/мин | 0.92 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Частота использования команд |
|
В журнал автоматически попадают все команды, данные в любом терминале системы.
Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.
Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
$ l s-l bash: l: command not found |
Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
$ test 5 -lt 4 |
Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
$ find / -name abc find: /home/devi-orig/.gnome2: Keine Berechtigung find: /home/devi-orig/.gnome2_private: Keine Berechtigung find: /home/devi-orig/.nautilus/metafiles: Keine Berechtigung find: /home/devi-orig/.metacity: Keine Berechtigung find: /home/devi-orig/.inkscape: Keine Berechtigung ^C |
Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
# id uid=0(root) gid=0(root) Gruppen=0(root) |
Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
$ vi ~/.bashrc
|
Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
$ patch ~/.bashrc |
Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.
Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.
Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.
Время ввода команды, показанное в журнале, соответствует времени начала ввода командной строки, которое равно тому моменту, когда на терминале появилось приглашение интерпретатора
Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.
Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.
Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:
$ whoami
user
$ #^ Интересно, кто я?в журнале это будет выглядеть так:
$ whoami
user
Интересно, кто я? |
Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:
$ whoami
user
$ cat > /dev/null #^ Интересно, кто я?
Программа whoami выводит имя пользователя, под которым мы зарегистрировались в системе. - Она не может ответить на вопрос о нашем назначении в этом мире.В журнале это будет выглядеть так:
$ whoami user
|
Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=
1 2 3 4Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.
LiLaLo (L3) расшифровывается как Live Lab Log.
Программа разработана для повышения эффективности обучения Unix/Linux-системам.
(c) Игорь Чубин, 2004-2008