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

Содержание

Журнал

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

/dev/pts/0
11:15:17
#mkdir test

11:17:34
#stat test/
  Файл: «test/»
  Размер: 4096            Блоков: 8          Блок В/В: 4096   каталог
Устройство: ca01h/51713d      Inode: 653131      Ссылки: 2
Доступ: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Доступ: 2017-11-29 12:17:34.298863676 +0200
Модифицирован: 2017-11-29 12:17:34.298863676 +0200
Изменён: 2017-11-29 12:17:34.298863676 +0200
 Создан: -
11:17:40
#find /home/ \( -type f -or -type d \) -user ivan -mtime -1 -size -10k
/home/ivan
/home/ivan/.bash_history
/home/ivan/files.txt
11:24:50
#find /home/ \( -type f -or -type d \) -user ivan -mtime -1 -size -10k | xargs -i cp -R {} /tmp/

11:25:30
#ls /tmp/
777  aptitude-user.4749:2erJv7  dirlist  etccopy  f1  f2  f3  f4  f5  files.txt  ivan
11:25:34
#ls /tmp/ivan/
error.txt  files.txt
11:25:50
#man find
11:31:02
#find / -regex ".*\.jpe?g"

11:31:51
#ls
f1  f2  f3  f4  f5  files.txt  install  ip.txt  passwd  prox.txt  sshconn.sh  test
11:31:54
#^C

11:32:05
#find / -regex ".*\.JPE?G"
/home/user/PRESS_ANY_KEY_TO_CONTINUE.JPG
/home/user/FREEBSD.JPG
/home/user/OGO.JPG
/home/user/MATRIX.JPG
/home/user/GRANATA.JPG
11:34:41
#find / -regex ".*\.JPE?G"
/home/user/PRESS_ANY_KEY_TO_CONTINUE.JPG
/home/user/FREEBSD.JPG
/home/user/OGO.JPG
/home/user/MATRIX.JPG
/home/user/GRANATA.JPG
11:34:55
#find / -size +10MB -ls
find: неверный тип 'B' для -size
11:35:31
#find / -size +10M -ls
  4000    0 -rw-------   1 root     root     33554432 Ноя 27 15:38 /sys/devices/pci0000:00/0000:00:02.0/resource0
  4001    0 -rw-------   1 root     root     33554432 Ноя 27 15:38 /sys/devices/pci0000:00/0000:00:02.0/resource0_wc
  4007    0 -rw-------   1 root     root     16777216 Ноя 27 15:38 /sys/devices/pci0000:00/0000:00:03.0/resource1
  4008    0 -rw-------   1 root     root     16777216 Ноя 27 15:38 /sys/devices/pci0000:00/0000:00:03.0/resource1_wc
136920 11524 -rwxr-xr-x   1 root     root     11800376 Янв  6  2013 /usr/lib/gcc/x86_64-linux-gnu/4.7/lto1
136887 12152 -rwxr-xr-x   1 root     root     12440264 Янв  6  2013 /usr/lib/gcc/x86_64-linux-gnu/4.7/cc1
783412 18048 -rw-r--r--   1 root     root     18478594 Июл 12  2014 /var/lib/apt/lists/ftp.ua.debian.org_debian_dists_wheezy_main_i18n_Translation-en
783497 27808 -rw-r--r--   1 root     root     28474810 Июл 12  2014 /var/lib/apt/lists/ftp.ua.debian.org_debian_dists_wheezy_main_binary-amd64_Packages
783491 24644 -rw-r--r--   1 root     root     25233027 Июл 12  2014 /var/lib/apt/lists/ftp.ua.debian.org_debian_dists_wheezy_main_source_Sources
783424 21480 -rw-r--r--   1 root     root     21994354 Окт 13  2014 /var/cache/apt/srcpkgcache.bin
783898 21480 -rw-r--r--   1 root     root     21994403 Ноя 28 09:26 /var/cache/apt/pkgcache.bin
785194 22868 -rw-r--r--   1 root     root     23416520 Июл 23  2014 /var/cache/apt/archives/linux-image-3.2.0-4-amd64_3.2.60-1+deb7u3_amd64.deb
784579 22900 -rw-r--r--   1 root     root     23446392 Июн  5  2014 /var/cache/apt/archives/linux-image-3.2.0-4-amd64_3.2.57-3+deb7u2_amd64.deb
783382 13176 -rw-------   1 root     root     13488315 Июн 27  2014 /var/log/installer/cdebconf/templates.dat
4026532062    0 -r--------   1 root     root     140737486262272 Ноя 29 12:35 /proc/kcore
find: `/proc/13601/task/13601/fd/5': Нет такого файла или каталога
find: `/proc/13601/task/13601/fdinfo/5': Нет такого файла или каталога
find: `/proc/13601/fd/5': Нет такого файла или каталога
find: `/proc/13601/fdinfo/5': Нет такого файла или каталога
11:35:34
#find / -size +10240 -ls
  4000    0 -rw-------   1 root     root     33554432 Ноя 27 15:38 /sys/devices/pci0000:00/0000:00:02.0/resource0
  4001    0 -rw-------   1 root     root     33554432 Ноя 27 15:38 /sys/devices/pci0000:00/0000:00:02.0/resource0_wc
  4007    0 -rw-------   1 root     root     16777216 Ноя 27 15:38 /sys/devices/pci0000:00/0000:00:03.0/resource1
  4008    0 -rw-------   1 root     root     16777216 Ноя 27 15:38 /sys/devices/pci0000:00/0000:00:03.0/resource1_wc
136920 11524 -rwxr-xr-x   1 root     root     11800376 Янв  6  2013 /usr/lib/gcc/x86_64-linux-gnu/4.7/lto1
136887 12152 -rwxr-xr-x   1 root     root     12440264 Янв  6  2013 /usr/lib/gcc/x86_64-linux-gnu/4.7/cc1
783412 18048 -rw-r--r--   1 root     root     18478594 Июл 12  2014 /var/lib/apt/lists/ftp.ua.debian.org_debian_dists_wheezy_main_i18n_Translation-en
783497 27808 -rw-r--r--   1 root     root     28474810 Июл 12  2014 /var/lib/apt/lists/ftp.ua.debian.org_debian_dists_wheezy_main_binary-amd64_Packages
783491 24644 -rw-r--r--   1 root     root     25233027 Июл 12  2014 /var/lib/apt/lists/ftp.ua.debian.org_debian_dists_wheezy_main_source_Sources
783424 21480 -rw-r--r--   1 root     root     21994354 Окт 13  2014 /var/cache/apt/srcpkgcache.bin
...
784579 22900 -rw-r--r--   1 root     root     23446392 Июн  5  2014 /var/cache/apt/archives/linux-image-3.2.0-4-amd64_3.2.57-3+deb7u2_amd64.deb
785048 5292 -rw-r--r--   1 root     root      5416124 Янв  7  2013 /var/cache/apt/archives/cpp-4.7_4.7.2-5_amd64.deb
785054 8104 -rw-r--r--   1 root     root      8295686 Янв  7  2013 /var/cache/apt/archives/gcc-4.7_4.7.2-5_amd64.deb
783382 13176 -rw-------   1 root     root     13488315 Июн 27  2014 /var/log/installer/cdebconf/templates.dat
262072 9992 -rw-r--r--   1 root     root     10229417 Окт 13  2014 /boot/initrd.img-3.2.0-4-amd64
4026532062    0 -r--------   1 root     root     140737486262272 Ноя 29 12:35 /proc/kcore
find: `/proc/13609/task/13609/fd/5': Нет такого файла или каталога
find: `/proc/13609/task/13609/fdinfo/5': Нет такого файла или каталога
find: `/proc/13609/fd/5': Нет такого файла или каталога
find: `/proc/13609/fdinfo/5': Нет такого файла или каталога
11:35:47
#find / -mtime +2
/
/sys
/sys/fs
/sys/fs/cgroup
/sys/devices
/sys/devices/virtual
/sys/devices/virtual/net
/sys/devices/virtual/net/lo
/sys/devices/virtual/net/lo/operstate
/sys/devices/vbd-768
...
/proc/389/exe
/proc/1914
/proc/1914/exe
/proc/2263
/proc/2263/oom_score_adj
find: `/proc/13617/task/13617/fd/5': Нет такого файла или каталога
find: `/proc/13617/task/13617/fdinfo/5': Нет такого файла или каталога
find: `/proc/13617/fd/5': Нет такого файла или каталога
find: `/proc/13617/fdinfo/5': Нет такого файла или каталога
/opt
11:36:25
#find ~ -mtime +2
/root/.aptitude
/root/.aptitude/config
/root/.lilalo/2525264871024819419-1403867138.info
/root/.lilalo/143184190977814884-1413212456.info
/root/.lilalo/l3bashrc
/root/.lilalo/23119324163069212524-1403867377_1403867394_root_.lilalo_l3bashrc.diff
/root/.lilalo/133518653134476610-1413379473.info
/root/.lilalo/1901738991017822016-1413212497.info
/root/.lilalo/l3prompt
/root/.lilalo/23119324163069212524-1403867377_1403867447_root_.l3rc.diff
/root/.lilalo/133518653134476610-1413379473.script
/root/.lilalo/2525264871024819419-1403867138.script
/root/.lilalo/23119324163069212524-1403867377.info
/root/.lilalo/1901738991017822016-1413212497.script
/root/.lilalo/143184190977814884-1413212456.script
/root/.lilalo/23119324163069212524-1403867377.script
/root/.profile
/root/.l3rc
/root/.bash_profile
11:36:29
#find ~ -mtime -5
/root
/root/.bashrc
/root/.lilalo
/root/.lilalo/3605135512359110721-1511853459.info
/root/.lilalo/31406218492456722173-1511776919_1511777889_etc_resolv.conf.diff
/root/.lilalo/31406218492456722173-1511776919_1511791739_root_.vimrc.diff
/root/.lilalo/28749221202138130065-1511859579_1511861488_root_.bashrc.diff
/root/.lilalo/31406218492456722173-1511776919.info
/root/.lilalo/31406218492456722173-1511776919_1511777931_etc_resolv.conf.diff
/root/.lilalo/28749221202138130065-1511859579.info
...
/root/.l3rc
/root/f5
/root/f4
/root/.viminfo
/root/test
/root/sshconn.sh
/root/.vim
/root/.vim/.netrwhist
/root/install
/root/.vimrc
11:36:52
#find / -type l
/sys/devices/system/cpu/cpu0/subsystem
/sys/devices/system/cpu/cpu0/node0
/sys/devices/system/memory/memory0/node0
/sys/devices/system/memory/memory1/node0
/sys/devices/system/memory/memory2/node0
/sys/devices/system/memory/memory3/node0
/sys/devices/system/node/node0/memory0
/sys/devices/system/node/node0/memory1
/sys/devices/system/node/node0/memory2
/sys/devices/system/node/node0/memory3
...
/proc/13641/fd/0
/proc/13641/fd/1
/proc/13641/fd/2
/proc/13641/fd/3
/proc/13641/fd/4
find: `/proc/13641/fd/5': Нет такого файла или каталога
find: `/proc/13641/fdinfo/5': Нет такого файла или каталога
/proc/13641/cwd
/proc/13641/root
/proc/13641/exe
11:37:06
#find / -user user
/tmp/dirlist
/tmp/etccopy
/tmp/etccopy/console-cyrillic
/tmp/etccopy/sysctl.conf
/tmp/etccopy/screenrc
/tmp/etccopy/logrotate.conf
/tmp/etccopy/hosts.deny
/tmp/etccopy/bash.bashrc
/tmp/etccopy/blkid.tab.old
/tmp/etccopy/crontab
...
/proc/12103/oom_adj
/proc/12103/oom_score_adj
/proc/12103/loginuid
/proc/12103/sessionid
/proc/12103/coredump_filter
/proc/12103/io
find: `/proc/13649/task/13649/fd/5': Нет такого файла или каталога
find: `/proc/13649/task/13649/fdinfo/5': Нет такого файла или каталога
find: `/proc/13649/fd/5': Нет такого файла или каталога
find: `/proc/13649/fdinfo/5': Нет такого файла или каталога
11:37:13
#find / -perm +6000
/usr/lib/openssh/ssh-keysign
/usr/lib/pt_chown
/usr/lib/eject/dmcrypt-get-device
/usr/bin/chage
/usr/bin/crontab
/usr/bin/passwd
/usr/bin/dotlockfile
/usr/bin/mail-lock
/usr/bin/mail-unlock
/usr/bin/expiry
...
/var/cache/man/sl/cat1
/var/cache/man/sl/cat8
/var/mail
/var/local
/var/log/exim4
/sbin/unix_chkpwd
find: `/proc/13657/task/13657/fd/5': Нет такого файла или каталога
find: `/proc/13657/task/13657/fdinfo/5': Нет такого файла или каталога
find: `/proc/13657/fd/5': Нет такого файла или каталога
find: `/proc/13657/fdinfo/5': Нет такого файла или каталога
11:37:35
#mkdir ~/soft

11:38:05
#ls
f1  f2  f3  f4  f5  files.txt  install  ip.txt  passwd  prox.txt  soft  sshconn.sh  test
11:38:12
#> file.tar

11:38:43
#> file2.gz

11:38:54
#> file3.tgz

11:39:01
#> file4.rpm

11:39:08
#find ~ -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'

11:40:15
#man find
11:41:50
#find ~ -regex '.*(\.tar|\.gz|\.tgz|\.rpm)' -3level
find: unknown predicate `-3level'
11:42:09
#find -3level ~ -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'
find: unknown predicate `-3level'
11:44:39
#find -O 3 ~ -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'
find: The -O option must be immediately followed by a decimal integer
11:44:47
#find -O3 ~ -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'

11:44:57
#find -O3 ~ -regex '.*(\.tar\.gz|\.tgz|\.rpm)'

11:45:04
#find -O3 ~ -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'

11:45:06
#find -Olevel3 ~ -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'
find: Please specify a decimal number immediately after -O
11:45:12
#find -O2 ~ -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'

11:45:20
#find ~ -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'

11:46:08
#find -D /root/ -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'
find: Ignoring unrecognised debug flag `/root/'
11:47:20
#find -O3 ~ -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'

11:50:12
#find ~ -regex '.*(\.tar|\.gz|\.tgz|\.rpm)' -ok ls
find: отсутствует аргумент у `-ok'
11:55:09
#find ~ -regextype posix-egrep -regex '.*(\.tar|\.gz|\.tgz|\.rpm)'
/root/file4.rpm
/root/file.tar
/root/file2.gz
/root/file3.tgz
11:55:35
#find ~ -regextype posix-egrep -regex '.*(\.tar|\.gz|\.tgz|\.rpm)' | xargs -i mv {} ~/soft

11:58:26
#ls ~/soft/
file2.gz  file3.tgz  file4.rpm  file.tar
11:58:31
#find ~ -regextype posix-egrep -regex '.*(\.tar|\.gz|\.tgz|\.rpm)' -ok rm -f {} \;
< rm ... /root/soft/file4.rpm > ? n
< rm ... /root/soft/file.tar > ? n
< rm ... /root/soft/file2.gz > ? n
< rm ... /root/soft/file3.tgz > ? n
11:59:27
#a=10

прошло 62 минуты
13:01:52
#echo $a
10
13:02:23
#bash
root@debian1:~# pstree
pstree      pstree.x11
root@debian1:~# pstree
pstree      pstree.x11
root@debian1:~# pstree -h
init─┬─acpid
     ├─cron
     ├─exim4
     ├─6*[getty]
     ├─2*[l3-agent]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd─┬─sshd───bash───script───script───l3script───bash───pstree
     │      └─sshd───sshd───bash───script───script───l3script
     └─udevd───udevd
root@debian1:~# echo $a
root@debian1:~# exit
exit
13:03:42
#export a

13:04:23
#bash
root@debian1:~# echo $a
10
root@debian1:~# exit
13:04:33
#env
SHELL=/bin/bash
TERM=xterm
HISTSIZE=2000
SSH_CLIENT=192.168.16.211 49165 22
L3_PARENT_TTY=/dev/pts/0
OLDPWD=/etc/cron.daily
L3_TAMPERED_EDITORS= vi vim pico nano
SSH_TTY=/dev/pts/0
USER=root
HISTFILESIZE=2000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
L3_SESSION_ID=1721139312144720097-1511940218
a=10
PWD=/root
LANG=ru_RU.UTF-8
13:05:27
#b=20

13:05:44
#env
SHELL=/bin/bash
TERM=xterm
HISTSIZE=2000
SSH_CLIENT=192.168.16.211 49165 22
L3_PARENT_TTY=/dev/pts/0
OLDPWD=/etc/cron.daily
L3_TAMPERED_EDITORS= vi vim pico nano
SSH_TTY=/dev/pts/0
USER=root
HISTFILESIZE=2000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
L3_SESSION_ID=1721139312144720097-1511940218
a=10
PWD=/root
LANG=ru_RU.UTF-8
13:05:48
#set
BASH=/usr/local/bin/l3script
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob: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=/etc/cron.daily
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PIPESTATUS=([0]="0")
PPID=11432
13:06:13
#set | less
13:08:10
#set | egrep '^[[:alpha:]]+='
BASH=/usr/local/bin/l3script
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extglob:extquote:force_fignore:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath
COLUMNS=157
DIFFNAME=1721139312144720097-1511940218_1511948685_etc_cron.daily_locate.diff
DIR=/etc/cron.daily/
DIRSTACK=()
EUID=0
GROUPS=()
HISTFILE=/root/.bash_history
HISTFILESIZE=2000
...
RANDOM=23062
SHELL=/bin/bash
SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor
SHLVL=3
TERM=xterm
TIME=1511948685
UID=0
USER=root
a=10
b=20
13:09:15
#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
...
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::/home/ivan:/bin/bash
13:11:18
#> shell.sh

13:13:26
#vi !$
--- /tmp/l3-saved-11433.2058.27908	2017-11-29 14:13:31.526871190 +0200
+++ shell.sh	2017-11-29 14:35:41.678855584 +0200
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+users = $(awk -F: '$3>=1000 && $3!=65534 {print$1}' /etc/passwd | tr '\n' ' ')
+for user in $users
+    do
+	echo "Changing shell for user $user..."
+	sleep 1
+	usermod -s /bin/zsh $user
+    done
+	
прошло 22 минуты
13:35:41
#./shell.sh
l3script: ./shell.sh: Отказано в доступе
13:35:58
#ls -l
итого 40
-rw-r--r-- 1 root root    0 Ноя 28 11:47 f1
-rw-r--r-- 1 root root    0 Ноя 28 11:47 f2
-rw-r--r-- 1 root root    0 Ноя 28 11:47 f3
-rw-r--r-- 1 root root    0 Ноя 28 11:47 f4
-rw-r--r-- 1 root root    0 Ноя 28 11:47 f5
-rw-r--r-- 1 root root    2 Ноя 29 12:15 files.txt
-rw-r--r-- 1 root root 5338 Ноя 28 13:52 install
-rw-r--r-- 1 root root  149 Ноя 29 09:40 ip.txt
-rw-r--r-- 1 root root  947 Ноя 28 16:30 passwd
-rw-r--r-- 1 root root  846 Ноя 28 14:05 prox.txt
-rw-r--r-- 1 root root  206 Ноя 29 14:35 shell.sh
drwxr-xr-x 2 root root 4096 Ноя 29 12:58 soft
-rwxr-xr-x 1 root root   43 Ноя 29 09:51 sshconn.sh
drwxr-xr-x 2 root root 4096 Ноя 29 12:17 test
13:36:28
#chmod u+x ./shell.sh

13:38:08
#ls -l --colore
ls: ключ --colore не распознан
Попробуйте «ls --help» для получения более подробного описания.
13:38:30
#ls -l --colores
ls: ключ --colores не распознан
Попробуйте «ls --help» для получения более подробного описания.
13:38:32
#ls -l --color
итого 40
-rw-r--r-- 1 root root    0 Ноя 28 11:47 f1
-rw-r--r-- 1 root root    0 Ноя 28 11:47 f2
-rw-r--r-- 1 root root    0 Ноя 28 11:47 f3
-rw-r--r-- 1 root root    0 Ноя 28 11:47 f4
-rw-r--r-- 1 root root    0 Ноя 28 11:47 f5
-rw-r--r-- 1 root root    2 Ноя 29 12:15 files.txt
-rw-r--r-- 1 root root 5338 Ноя 28 13:52 install
-rw-r--r-- 1 root root  149 Ноя 29 09:40 ip.txt
-rw-r--r-- 1 root root  947 Ноя 28 16:30 passwd
-rw-r--r-- 1 root root  846 Ноя 28 14:05 prox.txt
-rwxr--r-- 1 root root  206 Ноя 29 14:35 shell.sh
drwxr-xr-x 2 root root 4096 Ноя 29 12:58 soft
-rwxr-xr-x 1 root root   43 Ноя 29 09:51 sshconn.sh
drwxr-xr-x 2 root root 4096 Ноя 29 12:17 test
13:38:36
#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
...
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::/home/ivan:/bin/bash
13:38:56
#./shell.sh
users: лишний операнд «user»
Попробуйте «users --help» для получения более подробного описания.
13:39:00
#vi ./shell.sh
--- /tmp/l3-saved-11433.15258.1964	2017-11-29 14:39:13.914857655 +0200
+++ ./shell.sh	2017-11-29 14:39:40.614856640 +0200
@@ -1,6 +1,6 @@
 #!/bin/bash
 
-users = $(awk -F: '$3>=1000 && $3!=65534 {print$1}' /etc/passwd | tr '\n' ' ')
+users=$(awk -F: '$3>=1000 && $3!=65534 {print$1}' /etc/passwd | tr '\n' ' ')
 for user in $users
     do
 	echo "Changing shell for user $user..."
13:39:40
#./shell.sh
Changing shell for user user...
Changing shell for user ivan...
13:39:44
#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
...
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/zsh
sshd:x:102:65534::/var/run/sshd:/usr/sbin/nologin
ivan:x:1001:1001::/home/ivan:/bin/zsh
13:40:07
#cat /etc/passwd | grep zsh
user:x:1000:1000:user,,,:/home/user:/bin/zsh
ivan:x:1001:1001::/home/ivan:/bin/zsh
13:40:21
#cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/bin/screen
/bin/zsh
/usr/bin/zsh
13:41:48
#vi ./shell.sh
--- /tmp/l3-saved-11433.25224.22043	2017-11-29 14:47:10.766902552 +0200
+++ ./shell.sh	2017-11-29 14:53:13.782852469 +0200
@@ -1,10 +1,12 @@
 #!/bin/bash
 
+shell="/bin/$1"
+
 users=$(awk -F: '$3>=1000 && $3!=65534 {print$1}' /etc/passwd | tr '\n' ' ')
 for user in $users
     do
-	echo "Changing shell for user $user..."
+	echo "Changing shell $shell for user $user..."
 	sleep 1
-	usermod -s /bin/zsh $user
+	usermod -s $shell $user
     done
 	
прошло 11 минут
13:53:13
#cat /etc/passwd | grep zsh
user:x:1000:1000:user,,,:/home/user:/bin/zsh
ivan:x:1001:1001::/home/ivan:/bin/zsh
13:53:31
#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
...
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::/home/ivan:/bin/bash
13:57:50
#./shell.sh
Changing shell /bin/bash for user user...
usermod: изменения не внесены
Changing shell /bin/bash for user ivan...
usermod: изменения не внесены
13:57:57
#./shell.sh zsh
Changing shell /bin/zsh for user user...
Changing shell /bin/zsh for user ivan...
13:58:07
#./shell.sh
Changing shell /bin/bash for user user...
Changing shell /bin/bash for user ivan...
13:58:11
#echo $?
0
14:01:23
#test 5 -eq 5

14:07:06
#echo $?
0
14:07:09
#help test
test: test [expr]
    Evaluate conditional expression.
    Exits with a status of 0 (true) or 1 (false) depending on
    the evaluation of EXPR.  Expressions may be unary or binary.  Unary
    expressions are often used to examine the status of a file.  There
    are string operators and numeric comparison operators as well.
    The behavior of test depends on the number of arguments.  Read the
    bash manual page for the complete specification.
    File operators:
      -a FILE        True if file exists.
...
      arg1 OP arg2   Arithmetic tests.  OP is one of -eq, -ne,
                     -lt, -le, -gt, or -ge.
    Arithmetic binary operators return true if ARG1 is equal, not-equal,
    less-than, less-than-or-equal, greater-than, or greater-than-or-equal
    than ARG2.
    See the bash manual page bash(1) for the handling of parameters (i.e.
    missing parameters).
    Exit Status:
    Returns success if EXPR evaluates to true; fails if EXPR evaluates to
    false or an invalid argument is given.
14:07:34
#test 5 -eq 6

14:07:56
#echo $?
1
14:07:58
#test -x shell.sh

14:08:20
#echo $?
0
14:08:22
#test -x prox.txt

14:08:35
#echo $?
1
14:08:38
#test -x /bin/bash

14:08:47
#echo $?
0
14:08:48
#[ -x /bin/bash ]

14:09:40
#echo $?
0
14:09:41
#vi ./shell.sh
--- /tmp/l3-saved-11433.2000.368	2017-11-29 15:11:15.190854753 +0200
+++ ./shell.sh	2017-11-29 15:15:38.690873390 +0200
@@ -3,6 +3,12 @@
 
 shell="/bin/${1:-bash}"
 
+if [ ! -x $shell ]
+    then
+	echo "Shell $shell do not exist!"
+	    exit 2
+    fi
+
 users=$(awk -F: '$3>=1000 && $3!=65534 {print$1}' /etc/passwd | tr '\n' ' ')
 for user in $users
     do
14:15:38
#./shell.sh asdasd
Shell /bin/asdasd do not exist!
14:15:50
#echo $?
2
14:16:09
#./shell.sh asdasd
Shell /bin/asdasd do not exist!
14:19:08
#./shell.sh zsh
Changing shell /bin/zsh for user user...
Changing shell /bin/zsh for user ivan...
14:19:15
#./shell.sh
Changing shell /bin/bash for user user...
Changing shell /bin/bash for user ivan...
14:19:19
#man [
14:23:23
#man !
14:24:29
#man history

Файлы

  • /etc/passwd
  • /etc/shells
  • /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::/home/ivan:/bin/bash
    
    /etc/shells
    >
    # /etc/shells: valid login shells
    /bin/sh
    /bin/dash
    /bin/bash
    /bin/rbash
    /usr/bin/screen
    /bin/zsh
    /usr/bin/zsh
    

    Статистика

    Время первой команды журнала11:15:17 2017-11-29
    Время последней команды журнала14:24:29 2017-11-29
    Количество командных строк в журнале101
    Процент команд с ненулевым кодом завершения, %17.82
    Процент синтаксически неверно набранных команд, % 0.00
    Суммарное время работы с терминалом *, час 2.11
    Количество командных строк в единицу времени, команда/мин 0.80
    Частота использования команд
    find30|==================| 18.87%
    \.tgz16|==========| 10.06%
    \.rpm)'16|==========| 10.06%
    \.gz15|=========| 9.43%
    shell.sh11|======| 6.92%
    echo9|=====| 5.66%
    ls9|=====| 5.66%
    cat7|====| 4.40%
    man5|===| 3.14%
    >5|===| 3.14%
    test5|===| 3.14%
    vi4|==| 2.52%
    set3|=| 1.89%
    mkdir2|=| 1.26%
    env2|=| 1.26%
    xargs2|=| 1.26%
    bash2|=| 1.26%
    grep2|=| 1.26%
    egrep1|| 0.63%
    file2.gz1|| 0.63%
    chmod1|| 0.63%
    file4.rpm1|| 0.63%
    b=201|| 0.63%
    [1|| 0.63%
    help1|| 0.63%
    file3.tgz1|| 0.63%
    stat1|| 0.63%
    file.tar1|| 0.63%
    export1|| 0.63%
    less1|| 0.63%
    a=101|| 0.63%
    ^C1|| 0.63%
    ____
    *) Интервалы неактивности длительностью 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$