Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования Π½Π° языкС сцСнариСв ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 51

Автор МСндСль ΠšΡƒΠΏΠ΅Ρ€

objdump

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ содСрТимоС исполняСмого ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° Π»ΠΈΠ±ΠΎ Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΡ€ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅, Π»ΠΈΠ±ΠΎ Π² Π²ΠΈΠ΄Π΅ дизассСмблСрного листинга (с ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -d).

bash$ objdump -d /bin/ls

/bin/ls: file format elf32-i386


Disassembly of section .init:


080490bc <.init>:

80490bc: 55 push %ebp

80490bd: 89 e5 mov %esp,%ebp

. . .


mcookie

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° создаСт псСвдослучайныС ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚ΠΈΡ€ΠΈΡ‡Π½Ρ‹Π΅ 128-Π±ΠΈΡ‚Π½Ρ‹Π΅ числа, Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ "magic cookie", ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ X-сСрвСром Π² качСствС "сигнатуры" Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ сцСнариях ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ малоэффСктивный Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл.

random000=`mcookie | sed -e '2p'`

# 'sed' удаляСт посторонниС символы.


ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, для Ρ‚Π΅Ρ… ΠΆΠ΅ Ρ†Π΅Π»Π΅ΠΉ, сцСнарий ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ md5.

# Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ вычисляСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΡƒΡŽ сумму для самого сСбя.

random001=`md5sum $0 | awk '{print $1}'`

# 'awk' удаляСт имя Ρ„Π°ΠΉΠ»Π°.


Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ mcookie ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ "ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅" ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-43. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π½ Ρ„Π°ΠΉΠ»ΠΎΠ²

#!/bin/bash

# tempfile-name.sh: Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π½ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²


BASE_STR=`mcookie` # 32-ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ (128 Π±ΠΈΡ‚) magic cookie.

POS=11 # ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Π°Ρ позиция Π² строкС magic cookie.

LEN=5 # $LEN ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… символов.


prefix=temp # Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² это Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ("temp") Ρ„Π°ΠΉΠ».


suffix=${BASE_STR:POS:LEN}

# Π˜Π·Π²Π»Π΅Ρ‡ΡŒ строку, Π΄Π»ΠΈΠ½ΠΎΠΉ Π² 5 символов, начиная с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ 11.


temp_filename=$prefix.$suffix

# Π‘Π±ΠΎΡ€ΠΊΠ° ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°.


echo "Имя Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° = \"$temp_filename\""


# sh tempfile-name.sh

# Имя Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° = temp.e19ea


exit 0

units

Π­Ρ‚Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ ΠΈΠ· ΠΎΠ΄Π½ΠΈΡ… Π΅Π΄ΠΈΠ½ΠΈΡ† измСрСния Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ вызываСтся Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅, Π½ΠΈΠΆΠ΅ приводится ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования units Π² сцСнарии.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-44. ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² ΠΌΠΈΠ»ΠΈ

#!/bin/bash

# unit-conversion.sh


convert_units () # ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния.

{

cf=$(units "$1" "$2" | sed --silent -e '1p' | awk '{print $2}')

# УдаляСт всС ΠΊΡ€ΠΎΠΌΠ΅ коэффициСнтов прСобразования.

echo "$cf"

}


Unit1=miles

Unit2=meters

cfactor=`convert_units $Unit1 $Unit2`

quantity=3.73


result=$(echo $quantity*$cfactor | bc)


echo "Π’ $quantity милях $result ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²."


# Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚, Ссли Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ нСсовмСстимыС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ измСрСния,

#+ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ "acres" (Π°ΠΊΡ€Ρ‹) and "miles" (ΠΌΠΈΠ»ΠΈ)?


exit 0

m4

НС ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π° ΠΊΠ»Π°Π΄, m4 -- это ΠΌΠΎΡ‰Π½Ρ‹ΠΉ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ[ 37 ], фактичСски -- Ρ†Π΅Π»Ρ‹ΠΉ язык программирования. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ создававшаяся ΠΊΠ°ΠΊ прСпроцСссор для RatFor, m4 оказалась ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°. ЀактичСски, m4 сочСтаСт Π² сСбС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности eval, tr, awk, ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прСдоставляСт ΠΎΠ±ΡˆΠΈΡ€Π½Ρ‹Π΅ возмоТности ΠΏΠΎ созданию Π½ΠΎΠ²Ρ‹Ρ… ΠΌΠ°ΠΊΡ€ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ.

Π’ Π°ΠΏΡ€Π΅Π»ΡŒΡΠΊΠΎΠΌ выпускС, Π·Π° 2002 Π³ΠΎΠ΄, ΠΆΡƒΡ€Π½Π°Π»Π° Linux Journal Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΡƒΡŽ возмоТности ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ m4.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 12-45. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с m4

#!/bin/bash

# m4.sh: ДСмонстрация Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… возмоТносиСй макропроцСссора m4


# Π‘Ρ‚Ρ€ΠΎΠΊΠΈ

string=abcdA01

echo "len($string)" | m4 # 7

echo "substr($string,4)" | m4 # A01

echo "regexp($string,[0-1][0-1],\&Z)" | m4 # 01Z


# АрифмСтика

echo "incr(22)" | m4 # 23

echo "eval(99 / 3)" | m4 # 33


exit 0

doexec

Команда doexec прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ списка Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² внСшнСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’ частности, пСрСдавая argv[0] (для сцСнариСв соотвСтствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $0), ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, опрСдСляя Ρ‚Π΅ΠΌ самым, Π΅Π΅ Ρ€Π΅Π°ΠΊΡ†ΠΈΡŽ.

НапримСр, ΠŸΡƒΡΡ‚ΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /usr/local/bin имССтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° с ΠΈΠΌΠ΅Π½Π΅ΠΌ "aaa", которая ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ doexec /usr/local/bin/aaa list Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ список всСх Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, ΠΈΠΌΠ΅Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с символа "a", Π° ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Ρ‚ΠΎΠΉ ΠΆΠ΅ самой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΊΠ°ΠΊ doexec /usr/local/bin/aaa delete , ΠΎΠ½Π° ΡƒΠ΄Π°Π»ΠΈΡ‚ эти Ρ„Π°ΠΉΠ»Ρ‹.

ЕстСствСнно, рСакция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° своС собствСнноС имя Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, для сцСнария Π½Π° языкС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

case `basename $0` in

"name1" ) рСакция Π½Π° Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ name1;;

"name2" ) рСакция Π½Π° Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ name2;;

"name3" ) рСакция Π½Π° Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ name3;;

* ) дСйствия ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ;;

esac


Π“Π»Π°Π²Π° 13. ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ систСмного администрирования

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° этих ΠΊΠΎΠΌΠ°Π½Π΄ Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π² сцСнариях Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ остановки систСмы, Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… /etc/rc.d. Они, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ root ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для администрирования систСмы ΠΈΠ»ΠΈ восстановлСния Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы. Π­Ρ‚ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ с большой ΠΎΡΡ‚ΠΎΡ€ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Ρ€ΡƒΡˆΠΈΡ‚ΡŒ систСму, ΠΏΡ€ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ использовании.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹

users

Π’Ρ‹Π²Π΅Π΄Π΅Ρ‚ список всСх Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π²ΡˆΠΈΡ…ΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Она, Π΄ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ стСпСни, являСтся эквивалСнтом ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ who -q.

groups

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список Π³Ρ€ΡƒΠΏΠΏ, Π² состав ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° соотвСтствуСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $GROUPS, Π½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ названия Π³Ρ€ΡƒΠΏΠΏ, Π° Π½Π΅ ΠΈΡ… числовыС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹.

bash$ groups

bozita cdrom cdwriter audio xgrp


bash$ echo $GROUPS

501

chown, chgrp

Команда chown измСняСт Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠ»Π΅Π·Π½Π° Π² случаях, ΠΊΠΎΠ³Π΄Π° root Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ монопольноС ΠΏΡ€Π°Π²ΠΎ Π½Π° Ρ„Π°ΠΉΠ» ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π² состоянии ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° Ρ„Π°ΠΉΠ»Π°, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ своих собствСнных Ρ„Π°ΠΉΠ»ΠΎΠ².

root# chown bozo *.txt



Команда chgrp измСняСт Π³Ρ€ΡƒΠΏΠΏΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ Ρ„Π°ΠΉΠ»Π° (ΠΏΡ€ΠΈ этом Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² состав ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹) ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ (root).

chgrp --recursive dunderheads *.data

# Π“Ρ€ΡƒΠΏΠΏΠ° "dunderheads" станСт Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ всСх Ρ„Π°ΠΉΠ»ΠΎΠ² "*.data"

#+ Π²ΠΎ всСх ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ($PWD) (благодаря ΠΊΠ»ΡŽΡ‡Ρƒ "--recursive").


useradd, userdel

Команда useradd добавляСт ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² систСму ΠΈ создаСт домашний ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Π°Ρ, ΠΏΠΎ смыслу, ΠΊΠΎΠΌΠ°Π½Π΄Π° userdel удаляСт ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ· систСмы[ 38 ] ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹.

Команда adduser являСтся синонимом для useradd ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, являСтся ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ символичСской ссылкой Π½Π° useradd.

id

Команда id Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ эффСктивный) ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π³Ρ€ΡƒΠΏΠΏ, Π² состав ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. По сути -- Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ содСрТимоС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… $UID, $EUID ΠΈ $GROUPS.

bash$ id

uid=501(bozo) gid=501(bozo) groups=501(bozo),22(cdrom),80(cdwriter),81(audio)


bash$ echo $UID

501

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 9-5.

who

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ список ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² систСмС.

bash$ who

bozo tty1 Apr 27 17:45

bozo pts/0 Apr 27 17:46

bozo pts/1 Apr 27 17:47

bozo pts/2 Apr 27 17:49


Π‘ ΠΊΠ»ΡŽΡ‡ΠΎΠΌ -m -- Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅. Если число Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π΅, Ρ€Π°Π²Π½ΠΎ Π΄Π²ΡƒΠΌ, Ρ‚ΠΎ это эквивалСнтно Π²Ρ‹Π·ΠΎΠ²Ρƒ who -m, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ who am i ΠΈΠ»ΠΈ who The Man.

bash$ who -m

localhost.localdomain!bozo pts/2 Apr 27 17:49


whoami -- ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° who -m, Π½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

bash$ whoami

bozo


w

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ систСмС, список ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΊ систСмС ΠΈ процСссы, связанныС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ. Π­Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ вСрсия ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ who. Π’Ρ‹Π²ΠΎΠ΄ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ w ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ ΠΏΠΎ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ grep, с Ρ†Π΅Π»ΡŒΡŽ поиска Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ/ΠΈΠ»ΠΈ процСсса.

bash$ w | grep startx

bozo tty1 - 4:22pm 6:41 4.47s 0.45s startx

logname

Π’Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ имя Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (ΠΈΠ· Ρ„Π°ΠΉΠ»Π° /var/run/utmp). Π­Ρ‚ΠΎ довольно Π±Π»ΠΈΠ·ΠΊΠΈΠΉ эквивалСнт ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ whoami.

bash$ logname

bozo


bash$ whoami

bozo

Однако...

bash$ su

Password: ......


bash# whoami

root

bash# logname

bozo

su

Команда ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ сцСнария ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. su rjones -- запускаСт ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΡƒ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ rjones. Запуск ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ su Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ запуск ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root. Π‘ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ A-17.

sudo

Π˜ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ Π·Π°Π΄Π°Π½Π½ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ).

#!/bin/bash


# Доступ ΠΊ "сСкрСтным" Ρ„Π°ΠΉΠ»Π°ΠΌ.

sudo cp /root/secretfile /home/bozo/secret


ИмСна ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ sudo, хранятся Π² Ρ„Π°ΠΉΠ»Π΅ /etc/sudoers.