Журнал лабораторных работ

Содержание

Журнал

Среда (03/29/17)

/dev/pts/0
12:53:39
#a
l3script: a: команда не найдена
12:53:41
#$a
l3script: 1: команда не найдена
12:53:45
#echo $a
1
12:53:59
#bash
root@debian5:~# pstree
init─┬─acpid
     ├─cron
     ├─exim4
     ├─6*[getty]
     ├─2*[l3-agent]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd─┬─sshd───bash───script───script───l3script───bash───pstree
     │      └─sshd───sshd───bash
     └─udevd
root@debian5:~# exit
exit
12:57:45
#echo $a
1
12:57:53
#export a

12:58:05
#bash
root@debian5:~# echo $a
1
root@debian5:~# exit
exit
12:59:04
#set
BASH=/usr/local/bin/l3script
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="2" [2]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu")
BASH_VERSION='4.2.37(1)-release'
...
MACHTYPE=x86_64-pc-linux-gnu
MAIL=/var/mail/root
MAILCHECK=60
OLDPWD=/
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PIPESTATUS=([0]="0")
PPID=7476
12:59:19
#echo "Hello $LOGNAME"
Hello root
прошло 13 минут
13:12:57
#mkdir scripts

13:17:02
#cd scripts/

13:17:04
#vi shell.sh
--- /dev/null	2017-03-24 16:46:59.531999955 +0200
+++ shell.sh	2017-03-29 14:22:24.969108979 +0300
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+users='awk -F: '$3>=1000&&$3!=65534{print $1}' | tr "\n" " "'
+echo $users
13:22:25
#chmod u+x shell.sh

13:23:09
#ls -l
итого 4
-rwxr--r-- 1 root root 87 Мар 29 14:22 shell.sh
13:23:11
#./shell.sh
./shell.sh: line 3: !=65534{print: команда не найдена
awk -F:
13:25:47
#vi shell.sh
--- /tmp/l3-saved-7477.14979.6612	2017-03-29 14:26:17.733119866 +0300
+++ shell.sh	2017-03-29 14:27:16.721120301 +0300
@@ -1,4 +1,4 @@
 #!/bin/bash
 
-users='awk -F: '$3>=1000&&$3!=65534{print $1}' | tr "\n" " "'
+users='awk -F: '$3>=1000&&$3!=65534{print $1}' | tr "\n" " " /etc/passwd'
 echo $users
13:27:16
#./shell.sh
./shell.sh: line 3: !=65534{print: команда не найдена
awk -F:
13:27:19
#vi shell.sh
--- /tmp/l3-saved-7477.16863.16538	2017-03-29 14:27:39.273117356 +0300
+++ shell.sh	2017-03-29 14:28:58.609099529 +0300
@@ -1,4 +1,4 @@
 #!/bin/bash
 
-users='awk -F: '$3>=1000&&$3!=65534{print $1}' | tr "\n" " " /etc/passwd'
+users='awk -F: '$3>=1000&&$3!=65534{print $1}' /etc/passwd | tr "\n" " "'
 echo $users
13:28:58
#./shell.sh
./shell.sh: line 3: !=65534{print: команда не найдена
awk -F:
13:29:00
#./shell.sh
./shell.sh: line 3: !=65534{print: команда не найдена
awk -F:
13:29:10
#vi shell.sh
13:29:34
#~
  2      =`awk -F: '$3>=1000&&$3!=65534{print $1}' /etc/passwd | tr "\n" " "`
    echo $users
  3 users='awk -F: '$3>=1000&&$3!=65534{print $1}' /etc/passwd | tr "\n" " "'
~
~
~
~
~
~
~
...
~
~
~
~
~
~
~
~
~
"shell.sh" 4L, 99C записано
13:29:57
#./shell.sh
user ivan petr
13:30:00
#useradd anna -m

13:33:05
#./shell.sh
user ivan petr anna
13:33:24
#vi shell.sh
--- /tmp/l3-saved-7477.2568.5806	2017-03-29 14:34:07.053107369 +0300
+++ shell.sh	2017-03-29 14:37:38.449090034 +0300
@@ -1,4 +1,8 @@
 #!/bin/bash
 
 users=`awk -F: '$3>=1000&&$3!=65534{print $1}' /etc/passwd | tr "\n" " "`
-echo $users
+for user in $users
+	do
+		echo "Changing shell for user $user ..."
+		usermod -s /bin/sh $user
+	done
13:37:38
#./shell.sh
Changing shell for user user ...
Changing shell for user ivan ...
Changing shell for user petr ...
Changing shell for user anna ...
usermod: изменения не внесены
13:37:40
#vi shell.sh
--- /tmp/l3-saved-7477.8139.30897	2017-03-29 14:38:58.849109249 +0300
+++ shell.sh	2017-03-29 14:40:49.025101677 +0300
@@ -4,5 +4,5 @@
 for user in $users
 	do
 		echo "Changing shell for user $user ..."
-		usermod -s /bin/sh $user
+		usermod -s /bin/$1 $user
 	done
13:40:49
#./shell.sh bash
Changing shell for user user ...
Changing shell for user ivan ...
Changing shell for user petr ...
Changing shell for user anna ...
13:41:22
#finger petr\
> ^C
13:41:42
#finger petr
Login: petr                             Name:
Directory: /home/petr                   Shell: /bin/bash
Last login Mon Mar 27 11:05 (EEST) on pts/3 from 192.168.16.147
No mail.
No Plan.
13:41:43
#./shell.sh sh
Changing shell for user user ...
Changing shell for user ivan ...
Changing shell for user petr ...
Changing shell for user anna ...
13:41:53
#finger petr
Login: petr                             Name:
Directory: /home/petr                   Shell: /bin/sh
Last login Mon Mar 27 11:05 (EEST) on pts/3 from 192.168.16.147
No mail.
No Plan.
13:42:53
#vi shell.sh
--- /tmp/l3-saved-7477.20675.14535	2017-03-29 14:43:42.009117556 +0300
+++ shell.sh	2017-03-29 14:44:58.073107228 +0300
@@ -4,5 +4,5 @@
 for user in $users
 	do
 		echo "Changing shell for user $user ..."
-		usermod -s /bin/$1 $user
+		usermod -s /bin/${1:-bash} $user
 	done
13:44:58
#./shell.sh
Changing shell for user user ...
Changing shell for user ivan ...
Changing shell for user petr ...
Changing shell for user anna ...
13:45:03
#finger petr
Login: petr                             Name:
Directory: /home/petr                   Shell: /bin/bash
Last login Mon Mar 27 11:05 (EEST) on pts/3 from 192.168.16.147
No mail.
No Plan.
13:45:06
#./shell.sh sh
Changing shell for user user ...
Changing shell for user ivan ...
Changing shell for user petr ...
Changing shell for user anna ...
13:45:17
#finger petr
Login: petr                             Name:
Directory: /home/petr                   Shell: /bin/sh
Last login Mon Mar 27 11:05 (EEST) on pts/3 from 192.168.16.147
No mail.
No Plan.
13:45:19
#vi shell.sh
--- /tmp/l3-saved-7477.8450.14406	2017-03-29 14:48:19.697106219 +0300
+++ shell.sh	2017-03-29 14:54:49.193111391 +0300
@@ -1,5 +1,9 @@
 #!/bin/bash
 
+if [ $# -gt 1 ]
+	then
+		exit 2
+	fi
 users=`awk -F: '$3>=1000&&$3!=65534{print $1}' /etc/passwd | tr "\n" " "`
 for user in $users
 	do
13:54:49
#./shell.sh
Changing shell for user user ...
Changing shell for user ivan ...
Changing shell for user petr ...
Changing shell for user anna ...
13:55:04
#./shell.sh sh
Changing shell for user user ...
Changing shell for user ivan ...
Changing shell for user petr ...
Changing shell for user anna ...
13:55:12
#./shell.sh sh re

13:55:27
#echo $?
2
13:55:42
#echo $0
l3script
13:56:48
#echo $#
0
13:56:55
#cd shell.sh
=1000     shell.sh
13:56:55
#vi proc.sh
--- /dev/null	2017-03-24 16:46:59.531999955 +0200
+++ proc.sh	2017-03-29 15:47:11.745109718 +0300
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+i=1
+while [ $i -lt 1000000 ]
+	do
+		echo $i > /dev/`who | awk '$1~/ivan/{print $2}'`
+		clear > /dev/`who | awk '$1~/ivan/{print $2}'`
+		i=$ [$i+1]
+	done
прошло 50 минут
14:47:11
#./proc.sh
l3script: ./proc.sh: Отказано в доступе
14:47:53
#chmod u+x proc.sh

14:48:12
#./proc.sh
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
...
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
^C
14:48:16
#./proc.sh
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
...
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
./proc.sh: line 8: [1+1]: команда не найдена
^C
14:48:40
#vi proc.sh
--- /tmp/l3-saved-7477.19366.6843	2017-03-29 15:48:47.821107819 +0300
+++ proc.sh	2017-03-29 15:49:04.649113793 +0300
@@ -5,5 +5,5 @@
 	do
 		echo $i > /dev/`who | awk '$1~/ivan/{print $2}'`
 		clear > /dev/`who | awk '$1~/ivan/{print $2}'`
-		i=$ [$i+1]
+		i=$[$i+1]
 	done
14:49:04
#vi proc.sh
14:49:14
#~
^C
14:50:53
#./shell.sh
Changing shell for user user ...
Changing shell for user ivan ...
Changing shell for user petr ...
Changing shell for user anna ...
прошло 10 минут
15:01:28
#test -w /etc/passwd || \
> echo "We not rigth to change file /etc/passwd"
прошло 43 минуты
15:44:28
#test -w /etc/passwd || echo "We not rigth to change file /etc/passwd"

15:44:57
#test -w /etc/passwd || echo "We not rigth to change file /etc/passwd"

15:44:59
#test -w /etc/passwd || \
> echo "We not rigth to change file /etc/passwd"
15:45:16
#echo "OS?"; \
> read FAV_OS ; [ "$FAV_OS" == "BSD" ] || echo "Strange"
OS?
BSD
15:47:02
#echo "OS?"; read FAV_OS ; [ "$FAV_OS" == "BSD" ] || echo "Strange"
OS?
1
Strange
15:47:05
#A=0

15:47:28
#while [ $A -lt 10 ]
> do
> A=$((A+1))
> echo $A
> done
1
2
3
4
5
6
7
8
9
10
15:48:49
#for file in /etc/*
> do
> [ -r $file ] || echo $file
> done
15:50:24
#for file in /etc/*; do [ -r $file ] || echo $file; done

Четверг (03/30/17)

/dev/pts/0
08:44:57
#id ivan
uid=1001(ivan) gid=1001(ivan) группы=1001(ivan)
08:45:05
#id -u ivan
1001
08:48:27
#id ivan
uid=1001(ivan) gid=1001(ivan) группы=1001(ivan)
08:48:39
#chfn ivan
Изменение информации о пользователе ivan
Введите новое значение или нажмите ENTER для выбора значения по умолчанию
        Полное имя []: Ivan Ivanov
        Номер комнаты []: 9D
        Рабочий телефон []: 111
        Домашний телефон []: 111-11-111
        Другое []:
08:53:57
#id ivan
uid=1001(ivan) gid=1001(ivan) группы=1001(ivan)
08:54:01
#cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
...
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
Debian-exim:x:101:103::/var/spool/exim4:/bin/false
user:x:1000:1000:user,,,:/home/user:/bin/bash
sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
ivan:x:1001:1001:Ivan Ivanov,9D,111,111-11-111:/home/ivan:/bin/bash
petr:x:1002:1002::/home/petr:/bin/bash
anna:x:1003:1003::/home/anna:/bin/bash
08:54:08
#finger ivan
Login: ivan                             Name: Ivan Ivanov
Directory: /home/ivan                   Shell: /bin/bash
Office: 9D, 111                         Home Phone: 111-11-111
Last login Wed Mar 29 15:46 (EEST) on pts/1 from 192.168.16.147
No mail.
No Plan.
08:54:48
#cat /etc/shadow
root:$6$ppY7xZxX$CnutMU4XxetHko6DW5K/ckfiA6CFeC0cbV/d6rrWE6F5iszqxAaQTwekH3.vBTQPNCakvqusvPcBecndLcbX8.:16248:0:99999:7:::
daemon:*:16248:0:99999:7:::
bin:*:16248:0:99999:7:::
sys:*:16248:0:99999:7:::
sync:*:16248:0:99999:7:::
games:*:16248:0:99999:7:::
man:*:16248:0:99999:7:::
lp:*:16248:0:99999:7:::
mail:*:16248:0:99999:7:::
news:*:16248:0:99999:7:::
...
irc:*:16248:0:99999:7:::
gnats:*:16248:0:99999:7:::
nobody:*:16248:0:99999:7:::
libuuid:!:16248:0:99999:7:::
Debian-exim:!:16248:0:99999:7:::
user:$6$CkJHVC8E$ykTJUix/7qmcPBJgqnJtCHlWhYfEaImqXcQyeRrwYm6Xi4KaZSfb4FB20ocZ/VlrQzTR2wiEobMxT/OM/FXgd0:16248:0:99999:7:::
sshd:*:16248:0:99999:7:::
ivan:$6$uX3wKqbZ$rSTWFk0IOItlBiEO359iSZnNhie.BzK8LU/02VvRgFcVoT0tRMYaaEqUrwZnIEe8PIX06hnZ3JdL9z1g5ivsR/:17252:0:99999:7:::
petr:$6$g6yR6VJ7$bmo40qDX8BRNghm/N/abkut1uTK7OA6W5n0xRP5ilJA83S7CUd9cf1htF3hWrSbLfUVhiFAEC2dvfyKDClx3s0:17252:0:99999:7:::
anna:!:17254:0:99999:7:::
08:58:04
#chang -l ivan
l3script: chang: команда не найдена
09:04:37
#chage -l ivan
Последний раз пароль был изменён                                    : Мар 27, 2017
Срок действия пароля истекает                                 : никогда
Пароль будет деактивирован через                                   : никогда
Срок действия учётной записи истекает                                          : никогда
Минимальное количество дней между сменой пароля               : 0
Максимальное количество дней между сменой пароля             : 99999
Количество дней с предупреждением перед деактивацией пароля        : 7
09:04:53
#сфcat /etc/d
debconf.conf            default/                dhcp/                   discover-modprobe.conf
debian_version          deluser.conf            discover.conf.d/        dpkg/
09:04:53
#cat /etc/default/useradd
# Default values for useradd(8)
#
# The SHELL variable specifies the default login shell on your
# system.
# Similar to DHSELL in adduser. However, we use "sh" here because
# useradd is a low level utility and should be as general
# as possible
SHELL=/bin/sh
#
# The default group for users
...
# EXPIRE=
#
# The SKEL variable specifies the directory containing "skeletal" user
# files; in other words, files such as a sample .profile that will be
# copied to the new user's home directory when it is created.
# SKEL=/etc/skel
#
# Defines whether the mail spool should be created while
# creating the account
# CREATE_MAIL_SPOOL=yes
прошло 11 минут
09:16:20
#cat /etc/login.defs
#
# /etc/login.defs - Configuration control definitions for the login package.
#
# Three items must be defined:  MAIL_DIR, ENV_SUPATH, and ENV_PATH.
# If unspecified, some arbitrary (and possibly incorrect) value will
# be assumed.  All other items are optional - if not specified then
# the described action or option will be inhibited.
#
# Comment lines (lines beginning with "#") and blank lines are ignored.
#
...
# These options are no more handled by shadow.    #
#                                                 #
# Shadow utilities will display a warning if they #
# still appear.                                   #
#                                                 #
###################################################
# CLOSE_SESSIONS
# LOGIN_STRING
# NO_PASSWORD_CONSOLE
# QMAIL_DIR
прошло 11 минут
09:27:20
#cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
...
users:x:100:
nogroup:x:65534:
libuuid:x:101:
crontab:x:102:
Debian-exim:x:103:
ssh:x:104:
user:x:1000:
ivan:x:1001:
petr:x:1002:
anna:x:1003:
09:27:32
#groupadd developers

09:31:10
#cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
...
nogroup:x:65534:
libuuid:x:101:
crontab:x:102:
Debian-exim:x:103:
ssh:x:104:
user:x:1000:
ivan:x:1001:
petr:x:1002:
anna:x:1003:
developers:x:1004:
09:31:13
#u
ucf                         unicode_start               updatedb                    update-rc.d
ucfq                        unicode_stop                updatedb.findutils          update-usbids
ucfr                        uniq                        update-exim4.conf           update-xmlcatalog
udevadm                     unix_chkpwd                 update-exim4.conf.template  upgrade-from-grub-legacy
udevd                       unix_update                 update-exim4defaults        uptime
udpblast                    unlink                      update-grub                 usb-devices
ul                          unlzma                      update-grub2                usbhid-dump
ulimit                      unset                       update-info-dir             useradd
umask                       unshare                     update-initramfs            userdel
umount                      until                       update-locale               usermod
unalias                     unxz                        update-mime                 users
uname                       update-alternatives         update-passwd
uncompress                  update-ca-certificates      update-pciids
unexpand                    update-catalog              update-python-modules
09:31:13
#usermod -G developers ivan

09:33:38
#id ivan
uid=1001(ivan) gid=1001(ivan) группы=1001(ivan),1004(developers)
09:34:00
#gpasswd -a petr developers
Добавление пользователя petr в группу developers
09:36:55
#id petro
id: petro: Такого пользователя нет
09:37:47
#id petr
uid=1002(petr) gid=1002(petr) группы=1002(petr),1004(developers)
09:37:49
#cat /etc/gshadow
root:*::
daemon:*::
bin:*::
sys:*::
adm:*::
tty:*::
disk:*::
lp:*::
mail:*::
news:*::
...
nogroup:*::
libuuid:!::
crontab:!::
Debian-exim:!::
ssh:!::
user:!::
ivan:!::
petr:!::
anna:!::
developers:!::ivan,petr
09:38:22
#gpasswd -A anna developers

09:41:25
#passwd -l ivan
passwd: информация об истечении срока действия пароля изменена.
09:43:30
#passwd -u ivan
passwd: информация об истечении срока действия пароля изменена.
09:47:00
#cd /opt/

прошло 58 минут
10:45:51
#mkdir public

10:46:03
#ls -l
итого 4
drwxr-xr-x 2 root root 4096 Мар 30 11:46 public
10:46:17
#chmod
chmod: пропущен операнд
Попробуйте «chmod --help» для получения более подробного описания.
10:46:50
#chmod o+w
chmod: пропущен операнд после «o+w»
Попробуйте «chmod --help» для получения более подробного описания.
10:46:58
#chmod o+w public/

10:47:04
#ls -l
итого 4
drwxr-xrwx 2 root root 4096 Мар 30 11:46 public
10:47:07
#> public/f1

10:48:23
#chmod +t public/

10:52:37
#ls -l
итого 4
drwxr-xrwt 2 root root 4096 Мар 30 11:52 public

Файлы

  • /etc/default/useradd
  • /etc/group
  • /etc/gshadow
  • /etc/login.defs
  • /etc/passwd
  • /etc/shadow
  • /etc/default/useradd
    >
    # Default values for useradd(8)
    #
    # The SHELL variable specifies the default login shell on your
    # system.
    # Similar to DHSELL in adduser. However, we use "sh" here because
    # useradd is a low level utility and should be as general
    # as possible
    SHELL=/bin/sh
    #
    # The default group for users
    # 100=users on Debian systems
    # Same as USERS_GID in adduser
    # This argument is used when the -n flag is specified.
    # The default behavior (when -n and -g are not specified) is to create a
    # primary user group with the same name as the user being added to the
    # system.
    # GROUP=100
    #
    # The default home directory. Same as DHOME for adduser
    # HOME=/home
    #
    # The number of days after a password expires until the account
    # is permanently disabled
    # INACTIVE=-1
    #
    # The default expire date
    # EXPIRE=
    #
    # The SKEL variable specifies the directory containing "skeletal" user
    # files; in other words, files such as a sample .profile that will be
    # copied to the new user's home directory when it is created.
    # SKEL=/etc/skel
    #
    # Defines whether the mail spool should be created while
    # creating the account
    # CREATE_MAIL_SPOOL=yes
    
    /etc/group
    >
    root:x:0:
    daemon:x:1:
    bin:x:2:
    sys:x:3:
    adm:x:4:
    tty:x:5:
    disk:x:6:
    lp:x:7:
    mail:x:8:
    news:x:9:
    uucp:x:10:
    man:x:12:
    proxy:x:13:
    kmem:x:15:
    dialout:x:20:
    fax:x:21:
    voice:x:22:
    cdrom:x:24:user
    floppy:x:25:user
    tape:x:26:
    sudo:x:27:
    audio:x:29:user
    dip:x:30:user
    www-data:x:33:
    backup:x:34:
    operator:x:37:
    list:x:38:
    irc:x:39:
    src:x:40:
    gnats:x:41:
    shadow:x:42:
    utmp:x:43:
    video:x:44:user
    sasl:x:45:
    plugdev:x:46:user
    staff:x:50:
    games:x:60:
    users:x:100:
    nogroup:x:65534:
    libuuid:x:101:
    crontab:x:102:
    Debian-exim:x:103:
    ssh:x:104:
    user:x:1000:
    ivan:x:1001:
    petr:x:1002:
    anna:x:1003:
    developers:x:1004:
    
    /etc/gshadow
    >
    root:*::
    daemon:*::
    bin:*::
    sys:*::
    adm:*::
    tty:*::
    disk:*::
    lp:*::
    mail:*::
    news:*::
    uucp:*::
    man:*::
    proxy:*::
    kmem:*::
    dialout:*::
    fax:*::
    voice:*::
    cdrom:*::user
    floppy:*::user
    tape:*::
    sudo:*::
    audio:*::user
    dip:*::user
    www-data:*::
    backup:*::
    operator:*::
    list:*::
    irc:*::
    src:*::
    gnats:*::
    shadow:*::
    utmp:*::
    video:*::user
    sasl:*::
    plugdev:*::user
    staff:*::
    games:*::
    users:*::
    nogroup:*::
    libuuid:!::
    crontab:!::
    Debian-exim:!::
    ssh:!::
    user:!::
    ivan:!::
    petr:!::
    anna:!::
    developers:!::ivan,petr
    
    /etc/login.defs
    >
    #
    # /etc/login.defs - Configuration control definitions for the login package.
    #
    # Three items must be defined:  MAIL_DIR, ENV_SUPATH, and ENV_PATH.
    # If unspecified, some arbitrary (and possibly incorrect) value will
    # be assumed.  All other items are optional - if not specified then
    # the described action or option will be inhibited.
    #
    # Comment lines (lines beginning with "#") and blank lines are ignored.
    #
    # Modified for Linux.  --marekm
    # REQUIRED for useradd/userdel/usermod
    #   Directory where mailboxes reside, _or_ name of file, relative to the
    #   home directory.  If you _do_ define MAIL_DIR and MAIL_FILE,
    #   MAIL_DIR takes precedence.
    #
    #   Essentially:
    #      - MAIL_DIR defines the location of users mail spool files
    #        (for mbox use) by appending the username to MAIL_DIR as defined
    #        below.
    #      - MAIL_FILE defines the location of the users mail spool files as the
    #        fully-qualified filename obtained by prepending the user home
    #        directory before $MAIL_FILE
    #
    # NOTE: This is no more used for setting up users MAIL environment variable
    #       which is, starting from shadow 4.0.12-1 in Debian, entirely the
    #       job of the pam_mail PAM modules
    #       See default PAM configuration files provided for
    #       login, su, etc.
    #
    # This is a temporary situation: setting these variables will soon
    # move to /etc/default/useradd and the variables will then be
    # no more supported
    MAIL_DIR        /var/mail
    #MAIL_FILE      .mail
    #
    # Enable logging and display of /var/log/faillog login failure info.
    # This option conflicts with the pam_tally PAM module.
    #
    FAILLOG_ENAB            yes
    #
    # Enable display of unknown usernames when login failures are recorded.
    #
    # WARNING: Unknown usernames may become world readable.
    # See #290803 and #298773 for details about how this could become a security
    # concern
    LOG_UNKFAIL_ENAB        no
    #
    # Enable logging of successful logins
    #
    LOG_OK_LOGINS           no
    #
    # Enable "syslog" logging of su activity - in addition to sulog file logging.
    # SYSLOG_SG_ENAB does the same for newgrp and sg.
    #
    SYSLOG_SU_ENAB          yes
    SYSLOG_SG_ENAB          yes
    #
    # If defined, all su activity is logged to this file.
    #
    #SULOG_FILE     /var/log/sulog
    #
    # If defined, file which maps tty line to TERM environment parameter.
    # Each line of the file is in a format something like "vt100  tty01".
    #
    #TTYTYPE_FILE   /etc/ttytype
    #
    # If defined, login failures will be logged here in a utmp format
    # last, when invoked as lastb, will read /var/log/btmp, so...
    #
    FTMP_FILE       /var/log/btmp
    #
    # If defined, the command name to display when running "su -".  For
    # example, if this is defined as "su" then a "ps" will display the
    # command is "-su".  If not defined, then "ps" would display the
    # name of the shell actually being run, e.g. something like "-sh".
    #
    SU_NAME         su
    #
    # If defined, file which inhibits all the usual chatter during the login
    # sequence.  If a full pathname, then hushed mode will be enabled if the
    # user's name or shell are found in the file.  If not a full pathname, then
    # hushed mode will be enabled if the file exists in the user's home directory.
    #
    HUSHLOGIN_FILE  .hushlogin
    #HUSHLOGIN_FILE /etc/hushlogins
    #
    # *REQUIRED*  The default PATH settings, for superuser and normal users.
    #
    # (they are minimal, add the rest in the shell startup files)
    ENV_SUPATH      PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    ENV_PATH        PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    #
    # Terminal permissions
    #
    #       TTYGROUP        Login tty will be assigned this group ownership.
    #       TTYPERM         Login tty will be set to this permission.
    #
    # If you have a "write" program which is "setgid" to a special group
    # which owns the terminals, define TTYGROUP to the group number and
    # TTYPERM to 0620.  Otherwise leave TTYGROUP commented out and assign
    # TTYPERM to either 622 or 600.
    #
    # In Debian /usr/bin/bsd-write or similar programs are setgid tty
    # However, the default and recommended value for TTYPERM is still 0600
    # to not allow anyone to write to anyone else console or terminal
    # Users can still allow other people to write them by issuing
    # the "mesg y" command.
    TTYGROUP        tty
    TTYPERM         0600
    #
    # Login configuration initializations:
    #
    #       ERASECHAR       Terminal ERASE character ('\010' = backspace).
    #       KILLCHAR        Terminal KILL character ('\025' = CTRL/U).
    #       UMASK           Default "umask" value.
    #
    # The ERASECHAR and KILLCHAR are used only on System V machines.
    #
    # UMASK is the default umask value for pam_umask and is used by
    # useradd and newusers to set the mode of the new home directories.
    # 022 is the "historical" value in Debian for UMASK
    # 027, or even 077, could be considered better for privacy
    # There is no One True Answer here : each sysadmin must make up his/her
    # mind.
    #
    # Prefix these values with "0" to get octal, "0x" to get hexadecimal.
    #
    ERASECHAR       0177
    KILLCHAR        025
    UMASK           022
    #
    # Password aging controls:
    #
    #       PASS_MAX_DAYS   Maximum number of days a password may be used.
    #       PASS_MIN_DAYS   Minimum number of days allowed between password changes.
    #       PASS_WARN_AGE   Number of days warning given before a password expires.
    #
    PASS_MAX_DAYS   99999
    PASS_MIN_DAYS   0
    PASS_WARN_AGE   7
    #
    # Min/max values for automatic uid selection in useradd
    #
    UID_MIN                  1000
    UID_MAX                 60000
    # System accounts
    #SYS_UID_MIN              100
    #SYS_UID_MAX              999
    #
    # Min/max values for automatic gid selection in groupadd
    #
    GID_MIN                  1000
    GID_MAX                 60000
    # System accounts
    #SYS_GID_MIN              100
    #SYS_GID_MAX              999
    #
    # Max number of login retries if password is bad. This will most likely be
    # overriden by PAM, since the default pam_unix module has it's own built
    # in of 3 retries. However, this is a safe fallback in case you are using
    # an authentication module that does not enforce PAM_MAXTRIES.
    #
    LOGIN_RETRIES           5
    #
    # Max time in seconds for login
    #
    LOGIN_TIMEOUT           60
    #
    # Which fields may be changed by regular users using chfn - use
    # any combination of letters "frwh" (full name, room number, work
    # phone, home phone).  If not defined, no changes are allowed.
    # For backward compatibility, "yes" = "rwh" and "no" = "frwh".
    #
    CHFN_RESTRICT           rwh
    #
    # Should login be allowed if we can't cd to the home directory?
    # Default in no.
    #
    DEFAULT_HOME    yes
    #
    # If defined, this command is run when removing a user.
    # It should remove any at/cron/print jobs etc. owned by
    # the user to be removed (passed as the first argument).
    #
    #USERDEL_CMD    /usr/sbin/userdel_local
    #
    # If set to yes, userdel will remove the user´s group if it contains no
    # more members, and useradd will create by default a group with the name
    # of the user.
    #
    # Other former uses of this variable such as setting the umask when
    # user==primary group are not used in PAM environments, such as Debian
    #
    USERGROUPS_ENAB yes
    #
    # Instead of the real user shell, the program specified by this parameter
    # will be launched, although its visible name (argv[0]) will be the shell's.
    # The program may do whatever it wants (logging, additional authentification,
    # banner, ...) before running the actual shell.
    #
    # FAKE_SHELL /bin/fakeshell
    #
    # If defined, either full pathname of a file containing device names or
    # a ":" delimited list of device names.  Root logins will be allowed only
    # upon these devices.
    #
    # This variable is used by login and su.
    #
    #CONSOLE        /etc/consoles
    #CONSOLE        console:tty01:tty02:tty03:tty04
    #
    # List of groups to add to the user's supplementary group set
    # when logging in on the console (as determined by the CONSOLE
    # setting).  Default is none.
    #
    # Use with caution - it is possible for users to gain permanent
    # access to these groups, even when not logged in on the console.
    # How to do it is left as an exercise for the reader...
    #
    # This variable is used by login and su.
    #
    #CONSOLE_GROUPS         floppy:audio:cdrom
    #
    # If set to "yes", new passwords will be encrypted using the MD5-based
    # algorithm compatible with the one used by recent releases of FreeBSD.
    # It supports passwords of unlimited length and longer salt strings.
    # Set to "no" if you need to copy encrypted passwords to other systems
    # which don't understand the new algorithm.  Default is "no".
    #
    # This variable is deprecated. You should use ENCRYPT_METHOD.
    #
    #MD5_CRYPT_ENAB no
    #
    # If set to MD5 , MD5-based algorithm will be used for encrypting password
    # If set to SHA256, SHA256-based algorithm will be used for encrypting password
    # If set to SHA512, SHA512-based algorithm will be used for encrypting password
    # If set to DES, DES-based algorithm will be used for encrypting password (default)
    # Overrides the MD5_CRYPT_ENAB option
    #
    # Note: It is recommended to use a value consistent with
    # the PAM modules configuration.
    #
    ENCRYPT_METHOD SHA512
    #
    # Only used if ENCRYPT_METHOD is set to SHA256 or SHA512.
    #
    # Define the number of SHA rounds.
    # With a lot of rounds, it is more difficult to brute forcing the password.
    # But note also that it more CPU resources will be needed to authenticate
    # users.
    #
    # If not specified, the libc will choose the default number of rounds (5000).
    # The values must be inside the 1000-999999999 range.
    # If only one of the MIN or MAX values is set, then this value will be used.
    # If MIN > MAX, the highest value will be used.
    #
    # SHA_CRYPT_MIN_ROUNDS 5000
    # SHA_CRYPT_MAX_ROUNDS 5000
    ################# OBSOLETED BY PAM ##############
    #                                               #
    # These options are now handled by PAM. Please  #
    # edit the appropriate file in /etc/pam.d/ to   #
    # enable the equivelants of them.
    #
    ###############
    #MOTD_FILE
    #DIALUPS_CHECK_ENAB
    #LASTLOG_ENAB
    #MAIL_CHECK_ENAB
    #OBSCURE_CHECKS_ENAB
    #PORTTIME_CHECKS_ENAB
    #SU_WHEEL_ONLY
    #CRACKLIB_DICTPATH
    #PASS_CHANGE_TRIES
    #PASS_ALWAYS_WARN
    #ENVIRON_FILE
    #NOLOGINS_FILE
    #ISSUE_FILE
    #PASS_MIN_LEN
    #PASS_MAX_LEN
    #ULIMIT
    #ENV_HZ
    #CHFN_AUTH
    #CHSH_AUTH
    #FAIL_DELAY
    ################# OBSOLETED #######################
    #                                                 #
    # These options are no more handled by shadow.    #
    #                                                 #
    # Shadow utilities will display a warning if they #
    # still appear.                                   #
    #                                                 #
    ###################################################
    # CLOSE_SESSIONS
    # LOGIN_STRING
    # NO_PASSWORD_CONSOLE
    # QMAIL_DIR
    
    /etc/passwd
    >
    root:x:0:0:root:/root:/bin/bash
    daemon:x:1:1:daemon:/usr/sbin:/bin/sh
    bin:x:2:2:bin:/bin:/bin/sh
    sys:x:3:3:sys:/dev:/bin/sh
    sync:x:4:65534:sync:/bin:/bin/sync
    games:x:5:60:games:/usr/games:/bin/sh
    man:x:6:12:man:/var/cache/man:/bin/sh
    lp:x:7:7:lp:/var/spool/lpd:/bin/sh
    mail:x:8:8:mail:/var/mail:/bin/sh
    news:x:9:9:news:/var/spool/news:/bin/sh
    uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
    proxy:x:13:13:proxy:/bin:/bin/sh
    www-data:x:33:33:www-data:/var/www:/bin/sh
    backup:x:34:34:backup:/var/backups:/bin/sh
    list:x:38:38:Mailing List Manager:/var/list:/bin/sh
    irc:x:39:39:ircd:/var/run/ircd:/bin/sh
    gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
    nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
    libuuid:x:100:101::/var/lib/libuuid:/bin/sh
    Debian-exim:x:101:103::/var/spool/exim4:/bin/false
    user:x:1000:1000:user,,,:/home/user:/bin/bash
    sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
    ivan:x:1001:1001:Ivan Ivanov,9D,111,111-11-111:/home/ivan:/bin/bash
    petr:x:1002:1002::/home/petr:/bin/bash
    anna:x:1003:1003::/home/anna:/bin/bash
    
    /etc/shadow
    >
    root:$6$ppY7xZxX$CnutMU4XxetHko6DW5K/ckfiA6CFeC0cbV/d6rrWE6F5iszqxAaQTwekH3.vBTQPNCakvqusvPcBecndLcbX8.:16248:0:99999:7:::
    daemon:*:16248:0:99999:7:::
    bin:*:16248:0:99999:7:::
    sys:*:16248:0:99999:7:::
    sync:*:16248:0:99999:7:::
    games:*:16248:0:99999:7:::
    man:*:16248:0:99999:7:::
    lp:*:16248:0:99999:7:::
    mail:*:16248:0:99999:7:::
    news:*:16248:0:99999:7:::
    uucp:*:16248:0:99999:7:::
    proxy:*:16248:0:99999:7:::
    www-data:*:16248:0:99999:7:::
    backup:*:16248:0:99999:7:::
    list:*:16248:0:99999:7:::
    irc:*:16248:0:99999:7:::
    gnats:*:16248:0:99999:7:::
    nobody:*:16248:0:99999:7:::
    libuuid:!:16248:0:99999:7:::
    Debian-exim:!:16248:0:99999:7:::
    user:$6$CkJHVC8E$ykTJUix/7qmcPBJgqnJtCHlWhYfEaImqXcQyeRrwYm6Xi4KaZSfb4FB20ocZ/VlrQzTR2wiEobMxT/OM/FXgd0:16248:0:99999:7:::
    sshd:*:16248:0:99999:7:::
    ivan:$6$uX3wKqbZ$rSTWFk0IOItlBiEO359iSZnNhie.BzK8LU/02VvRgFcVoT0tRMYaaEqUrwZnIEe8PIX06hnZ3JdL9z1g5ivsR/:17252:0:99999:7:::
    petr:$6$g6yR6VJ7$bmo40qDX8BRNghm/N/abkut1uTK7OA6W5n0xRP5ilJA83S7CUd9cf1htF3hWrSbLfUVhiFAEC2dvfyKDClx3s0:17252:0:99999:7:::
    anna:!:17254:0:99999:7:::
    

    Статистика

    Время первой команды журнала12:53:39 2017- 3-29
    Время последней команды журнала10:52:37 2017- 3-30
    Количество командных строк в журнале101
    Процент команд с ненулевым кодом завершения, % 6.93
    Процент синтаксически неверно набранных команд, % 2.97
    Суммарное время работы с терминалом *, час 2.54
    Количество командных строк в единицу времени, команда/мин 0.66
    Частота использования команд
    shell.sh15|=============| 13.39%
    echo11|=========| 9.82%
    vi11|=========| 9.82%
    cat7|======| 6.25%
    id7|======| 6.25%
    chmod6|=====| 5.36%
    finger6|=====| 5.36%
    ls4|===| 3.57%
    test4|===| 3.57%
    cd3|==| 2.68%
    \3|==| 2.68%
    proc.sh3|==| 2.68%
    mkdir2|=| 1.79%
    passwd2|=| 1.79%
    ~2|=| 1.79%
    gpasswd2|=| 1.79%
    for2|=| 1.79%
    bash2|=| 1.79%
    groupadd1|| 0.89%
    while1|| 0.89%
    chfn1|| 0.89%
    сфcat1|| 0.89%
    useradd1|| 0.89%
    A=01|| 0.89%
    set1|| 0.89%
    [1|| 0.89%
    chage1|| 0.89%
    do1|| 0.89%
    chang1|| 0.89%
    $a1|| 0.89%
    >1|| 0.89%
    export1|| 0.89%
    read1|| 0.89%
    f11|| 0.89%
    u1|| 0.89%
    usermod1|| 0.89%
    a1|| 0.89%
    done1|| 0.89%
    ____
    *) Интервалы неактивности длительностью 30 минут и более не учитываются

    Справка

    Для того чтобы использовать LiLaLo, не нужно знать ничего особенного: всё происходит само собой. Однако, чтобы ведение и последующее использование журналов было как можно более эффективным, желательно иметь в виду следующее:
    1. В журнал автоматически попадают все команды, данные в любом терминале системы.

    2. Для того чтобы убедиться, что журнал на текущем терминале ведётся, и команды записываются, дайте команду w. В поле WHAT, соответствующем текущему терминалу, должна быть указана программа script.

    3. Команды, при наборе которых были допущены синтаксические ошибки, выводятся перечёркнутым текстом:
      $ l s-l
      bash: l: command not found
      

    4. Если код завершения команды равен нулю, команда была выполнена без ошибок. Команды, код завершения которых отличен от нуля, выделяются цветом.
      $ test 5 -lt 4
      Обратите внимание на то, что код завершения команды может быть отличен от нуля не только в тех случаях, когда команда была выполнена с ошибкой. Многие команды используют код завершения, например, для того чтобы показать результаты проверки

    5. Команды, ход выполнения которых был прерван пользователем, выделяются цветом.
      $ 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
      

    6. Команды, выполненные с привилегиями суперпользователя, выделяются слева красной чертой.
      # id
      uid=0(root) gid=0(root) Gruppen=0(root)
      

    7. Изменения, внесённые в текстовый файл с помощью редактора, запоминаются и показываются в журнале в формате ed. Строки, начинающиеся символом "<", удалены, а строки, начинающиеся символом ">" -- добавлены.
      $ vi ~/.bashrc
      2a3,5
      >    if [ -f /usr/local/etc/bash_completion ]; then
      >         . /usr/local/etc/bash_completion
      >        fi
      

    8. Для того чтобы изменить файл в соответствии с показанными в диффшоте изменениями, можно воспользоваться командой patch. Нужно скопировать изменения, запустить программу patch, указав в качестве её аргумента файл, к которому применяются изменения, и всавить скопированный текст:
      $ patch ~/.bashrc
      В данном случае изменения применяются к файлу ~/.bashrc

    9. Для того чтобы получить краткую справочную информацию о команде, нужно подвести к ней мышь. Во всплывающей подсказке появится краткое описание команды.

      Если справочная информация о команде есть, команда выделяется голубым фоном, например: vi. Если справочная информация отсутствует, команда выделяется розовым фоном, например: notepad.exe. Справочная информация может отсутствовать в том случае, если (1) команда введена неверно; (2) если распознавание команды LiLaLo выполнено неверно; (3) если информация о команде неизвестна LiLaLo. Последнее возможно для редких команд.

    10. Большие, в особенности многострочные, всплывающие подсказки лучше всего показываются браузерами KDE Konqueror, Apple Safari и Microsoft Internet Explorer. В браузерах Mozilla и Firefox они отображаются не полностью, а вместо перевода строки выводится специальный символ.

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

    12. Имя терминала, на котором была введена команда, показано в специальном блоке. Этот блок показывается только в том случае, если терминал текущей команды отличается от терминала предыдущей.

    13. Вывод не интересующих вас в настоящий момент элементов журнала, таких как время, имя терминала и других, можно отключить. Для этого нужно воспользоваться формой управления журналом вверху страницы.

    14. Небольшие комментарии к командам можно вставлять прямо из командной строки. Комментарий вводится прямо в командную строку, после символов #^ или #v. Символы ^ и v показывают направление выбора команды, к которой относится комментарий: ^ - к предыдущей, v - к следующей. Например, если в командной строке было введено:

      $ whoami
      
      user
      
      $ #^ Интересно, кто я?
      
      в журнале это будет выглядеть так:
      $ whoami
      
      user
      
      Интересно, кто я?

    15. Если комментарий содержит несколько строк, его можно вставить в журнал следующим образом:

      $ whoami
      
      user
      
      $ cat > /dev/null #^ Интересно, кто я?
      
      Программа whoami выводит имя пользователя, под которым 
      мы зарегистрировались в системе.
      -
      Она не может ответить на вопрос о нашем назначении 
      в этом мире.
      
      В журнале это будет выглядеть так:
      $ whoami
      user
      
      Интересно, кто я?
      Программа whoami выводит имя пользователя, под которым
      мы зарегистрировались в системе.

      Она не может ответить на вопрос о нашем назначении
      в этом мире.
      Для разделения нескольких абзацев между собой используйте символ "-", один в строке.

    16. Комментарии, не относящиеся непосредственно ни к какой из команд, добавляются точно таким же способом, только вместо симолов #^ или #v нужно использовать символы #=

    17. Содержимое файла может быть показано в журнале. Для этого его нужно вывести с помощью программы cat. Если вывод команды отметить симоволами #!, содержимое файла будет показано в журнале в специально отведённой для этого секции.
    18. Для того чтобы вставить скриншот интересующего вас окна в журнал, нужно воспользоваться командой l3shot. После того как команда вызвана, нужно с помощью мыши выбрать окно, которое должно быть в журнале.
    19. Команды в журнале расположены в хронологическом порядке. Если две команды давались одна за другой, но на разных терминалах, в журнале они будут рядом, даже если они не имеют друг к другу никакого отношения.
      1
          2
      3   
          4
      
      Группы команд, выполненных на разных терминалах, разделяются специальной линией. Под этой линией в правом углу показано имя терминала, на котором выполнялись команды. Для того чтобы посмотреть команды только одного сенса, нужно щёкнуть по этому названию.

    О программе

    LiLaLo (L3) расшифровывается как Live Lab Log.
    Программа разработана для повышения эффективности обучения Unix/Linux-системам.
    (c) Игорь Чубин, 2004-2008

    $Id$