Различия между версиями 9 и 10
Версия 9 от 2008-07-26 19:05:10
Размер: 18355
Редактор: MaximByshevskiKonopko
Комментарий:
Версия 10 от 2008-08-10 05:02:54
Размер: 18874
Редактор: Allena
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 2: Строка 2:

Как кому разрешать и запрещать делать разные вещи. Дело вот в чём: в линуксе обычный пользователь достаточно сильно поражён в правах. Говоря простым языком, он может изменять файлы в своём каталоге и свои файлы в /tmp. Ещё он может часть файлов читать, но не больше. Поскольку такова практика работы в linux, то почти любая программа должна работать от лица обычного пользователя, и тут не имеем проблем, свойственных Windows.

Есть три вида доступа:

 * Чтение. Означает, что файл можно читать.
 * Запись. Означает, что файл можно изменять.
 * Использование, исполнение. Означает, что файл можно исполнять.

ls -l выведет права, количество имён у файла, пользователь, группу, размер, время изменения и имя файла. Первый символ в правах обозначает тип файла (- у обычных файлов, d у каталогов, другие символы у специальных файлов). Посмотри ls -l /bin/ | head. Можно увидеть, что файлы исполняемые.
== Права доступа ==
В Linux, по умолчанию, обычный пользователь имеет право делать все что угодно с файлами в своём каталоге, работать с своими файлами в каталоге /tmp, и читать некоторые файлы в других местах, но не более того. Это специфика учитывается при создании приложений, и практически любая программа под Linux может работать будучи запущенной обычным пользователем.

Рассмотрим подробнее систему прав доступа Linux.

Права назначаются для каждого файла и каталога. Каталог рассматривается как файл в котором хранится список файлов и некая дополнительная информация.

Существуют три вида доступа:

 * Чтение;
 * Запись;
 * Использование.Для файлов доступ на использование означает возможность исполнения файла, для каталога --- возможность получить доступ к файлу в каталоге.

Увидеть назначенные права можно при помощи команды {{{ls -l <имя файла>}}}. При использовании этой команды кроме имени и прав доступа будут показаны: количество имен файла, владелец, группа, размер,и время последнего изменения. Первый символ в строке прав обозначает тип файла: {{{-}}} для обычных файлов, {{{d}}} для каталогов. Для специальных файлов могут использоваться другие символы.

Пример:
Строка 22: Строка 28:
-rwxr-xr-x 1 root root 30360 Май 18 2007 bzip2       -rwxr-xr-x 1 root root 30360 Май 18 2007 bzip2
Строка 26: Строка 32:
Создадим файл MyExecutable с простым скриптом и ппробуем запустить его. Как и следовало ожидать, к файлам в каталоге /bin есть доступ на использование, то есть, исполнение.

Попробуем создать исполняемый файл и запустить его:
Строка 34: Строка 42:
Узреем, что отказано в доступе. Если скажем ls -l MyExecutable, то увидим, что у него нет бита исполнения. При попытке исполнить только что созданный файл получаем ошибку --- отказано в доступе. При помощи ls -l проверим права доступа к файлу:
Строка 39: Строка 48:
Если скажем chmod +x MyExecutable, то исполнение файла станет возможным.
Как видно, права на исполнение файла ни у кого нет. Чтобы сделать возможным использование файла выполним команду {{{chmod +x MyExecutable}}}
Строка 47: Строка 57:
После того, как мы скажем chmod -r MyExecutable, то мы не сможем читать, но сможем писать:
Если выполнить {{{chmod -r MyExecutable}}}, то чтение файла станет невозможным. Доступ на запись при этом сохранится.
Строка 62: Строка 73:
}}}

Как работает эта программа? Как работают бинарные, понятно, а как она Hello вывела? Наверное, её выполнил shell. Он её выполнил, потому что он указан в первой строчке файла, после #!. По умолчанию используется (для текствых файлов, у которых эта первая строчка не указана) /bin/sh.

Более хитро три вида доступа устроено применительно к каталогам. Каталог это такой список файлов, где хранится имя файла и соответствующий ему индексный дескриптор. Когда мы обращаемся к файлу по имени, то мы неявно производим поиск по этой таблице соответствий, чтобы узнать, откуда с диска брать файл. Итак, права:

 * Чтение из каталога --- доступ к списку файлов
 * Запись в каталог --- изменить список файлов
 * Использование каталога --- возможность получить доступ к файлу в каталоге

По принципу прав --x делаются директории с именами файлов, известных только избранным.

Теперь разберёмся с ограничением доступа.

Вопрос: кто записывает файл, читает из файла? Вовсе не пользователь, как об этом некоторые думают, а процесс. Вся работа системы состоит в том, что процессы что-то делают с файлами. В каждый момент времени выполняется много процессов. Команда ps показывает список процессов, по умолчанию, привязанных к текущей консоли, -e --- все процессы, -f --- более полная информация.
}}}
##вот этот абзац не очень понятно при чем тут. наверно его куда нибудь в немного другое место надо.
Выше рассмотрен пример не бинарной программы. Такие программы выполняет интерпретатор, указанный в первой строке файла с исходным кодом после комбинации символов {{{#!}}}. В вышеописанном случае был указан shell. По умолчанию для исполнения текстовых файлов используется /bin/sh.

=== Процессы ===

Работа системы по сути заключается в том, что процессы производят некоторые действия с файлами. Увидеть список запущенных процессов можно используя команду {{{ps}}}. По умолчанию {{{ps}}} показывает список процессов, запущенных из соответствующей консоли. Увидеть все процессы позволяет опция {{{-e}}}. При помощи опции {{{-f}}} можно узнать более подробную информацию.
Строка 82: Строка 86:
$ ps -ef                            
UID PID PPID C STIME TTY TIME CMD    
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
Строка 123: Строка 127:
root 3414 3310 0 10:29 ? 00:00:00 -:0     root 3414 3310 0 10:29 ? 00:00:00 -:0
Строка 142: Строка 146:
george 3962 1 0 10:34 ? 00:00:03 xfwm4   george 3962 1 0 10:34 ? 00:00:03 xfwm4
Строка 149: Строка 153:
root 3977 3807 0 10:34 tty1 00:00:00 -bash   root 3977 3807 0 10:34 tty1 00:00:00 -bash
Строка 156: Строка 160:
george 4146 4143 0 10:53 pts/0 00:00:00 bash   
george 4273 4143 0 12:49 pts/1 00:00:00 bash   
george 4311 4273 0 13:15 pts/1 00:00:00 bash   
george 4146 4143 0 10:53 pts/0 00:00:00 bash
george 4273 4143 0 12:49 pts/1 00:00:00 bash
george 4311 4273 0 13:15 pts/1 00:00:00 bash
Строка 167: Строка 171:
Каждому процессу соответствует идентификатор процесса. Среди процессов есть куски ядра, зарегистрированные как процессы (имена таких процессов взяты в квадратные скобки; они существуют для того, чтобы ядру можно было посылать сигналы). Процессы порождают друг друга, поэтому в выдаче указан не только идентификатор процесса, но и его папы. Если родительский процесс умер, а сын живёт, то их усыновляет init.

Программы могут обмениваться разным способами, один из них --- сигналы. В программе kill -l приведён список всех сигналов, поддерживаемых ОС.
{{{
$ kill -l
Каждый процессор имеет идентификатор (pid). Новые процессы порождаются существующими, поэтому в информации о процессе указывается также идентификатор родителя(ppid).
Если процесс завершается, то родителем его дочерних поцессов становится init.
Некоторые части ядра системы также зарегистрированы как процессы. Такие процессы указываются в квадратных скобках. Это сделано для того, чтобы предоставить возможность общаться с ядром посредством сигналов. Сигналы --- это один из способов межпроцессного взаимодействия. Список доступных сигналов показывается по команде {{{kill -l}}}.
{{{
$ kill -l
Строка 189: Строка 193:

С данного терминала можно запускать много процессов, но только один может занимать терминал --- foreground-процесс (по вводу один, по выводу много). Для запуска процесса в фоне нужно дописать в конце команды &. Если процесс в фоне, то можно его перевести в fg и убить, или сказать ps -H, посмотреть номер процесса и убить ненужный.
С одного терминала можно запустить несколько процессов, но только один из них, так называемый foreground процесс, будет иметь доступ к вводу с терминала и выпонять в интерактивном режиме. Остальные порцессы должны работать в фоновом режиме (имея возможность выводить данные на терминал, но не получать их оттуда). Для запуска процесса в фоновом режиме необходимо в конце команды дописать {{{&}}}}. Фоновый процесс можно сделать интерактивным при помощи команды fg или же завершить, используя ps -H чтобы узнать идентификатор нужного процесса, и {{{kill}}} непосрпедственно для завершения.

=== Ограничение прав доступа ===
Строка 193: Строка 197:
Строка 198: Строка 201:
В такой дихотомии есть слабое звено, с которым часто приходится сталкиваться во время совместной работы --- если надо, чтобы одни имели доступ, а другие --- не имели. Для этого существует множественный субъект, группа пользователей. Для того, чтобы вводить соотношение между несколькими пользователями вместе и файлом, вводится понятие группа. Что такое группа? У каждого файла прописан не только пользователь, но и группа. Например, ls -ld /etc/tcb.  В такой дихотомии есть слабое звено, с которым часто приходится сталкиваться во время совместной работы --- если надо, чтобы одни имели доступ, а другие --- не имели. Для этого существует множественный субъект, группа пользователей. Для того, чтобы вводить соотношение между несколькими пользователями вместе и файлом, вводится понятие группа. Что такое группа? У каждого файла прописан не только пользователь, но и группа. Например, ls -ld /etc/tcb.
Строка 204: Строка 208:
Строка 208: Строка 213:

Процессы, права доступа

Права доступа

В Linux, по умолчанию, обычный пользователь имеет право делать все что угодно с файлами в своём каталоге, работать с своими файлами в каталоге /tmp, и читать некоторые файлы в других местах, но не более того. Это специфика учитывается при создании приложений, и практически любая программа под Linux может работать будучи запущенной обычным пользователем.

Рассмотрим подробнее систему прав доступа Linux.

Права назначаются для каждого файла и каталога. Каталог рассматривается как файл в котором хранится список файлов и некая дополнительная информация.

Существуют три вида доступа:

  • Чтение;
  • Запись;
  • Использование.Для файлов доступ на использование означает возможность исполнения файла, для каталога --- возможность получить доступ к файлу в каталоге.

Увидеть назначенные права можно при помощи команды ls -l <имя файла>. При использовании этой команды кроме имени и прав доступа будут показаны: количество имен файла, владелец, группа, размер,и время последнего изменения. Первый символ в строке прав обозначает тип файла: - для обычных файлов, d для каталогов. Для специальных файлов могут использоваться другие символы.

Пример:

$ ls -l /bin/ | head
итого 5204
-rwxr-xr-x 1 root root    2852 Ноя 23  2007 arch
lrwxrwxrwx 1 root root       4 Июл 15 21:23 awk -> gawk
-rwxr-xr-x 1 root root   13004 Май 22  2007 basename
-rwxr-xr-x 1 root root  470980 Окт  5  2007 bash
lrwxrwxrwx 1 root root       4 Июл 15 21:23 bash2 -> bash
lrwxrwxrwx 1 root root       5 Июл 15 21:22 bunzip2 -> bzip2
lrwxrwxrwx 1 root root       5 Июл 15 21:22 bzcat -> bzip2
-rwxr-xr-x 1 root root   30360 Май 18  2007 bzip2
-rwxr-xr-x 1 root root   22008 Май 18  2007 bzip2recover

Как и следовало ожидать, к файлам в каталоге /bin есть доступ на использование, то есть, исполнение.

Попробуем создать исполняемый файл и запустить его:

$ cat > MyExecutable
#!/bin/sh
echo "Hello!"
$ ./MyExecutable
bash: ./MyExecutable: Отказано в доступе

При попытке исполнить только что созданный файл получаем ошибку --- отказано в доступе. При помощи ls -l проверим права доступа к файлу:

$ ls -l MyExecutable
-rw-r--r-- 1 george george 24 Июл 18 16:29 MyExecutable

Как видно, права на исполнение файла ни у кого нет. Чтобы сделать возможным использование файла выполним команду chmod +x MyExecutable

chmod +x MyExecutable
$ ls -l MyExecutable
-rwxr-xr-x 1 george george 24 Июл 18 16:29 MyExecutable
$ ./MyExecutable
Hello!

Если выполнить chmod -r MyExecutable, то чтение файла станет невозможным. Доступ на запись при этом сохранится.

$ chmod -r MyExecutable
$ cat MyExecutable
cat: MyExecutable: Отказано в доступе
$ ls -l MyExecutable
--wx--x--x 1 george george 24 Июл 18 16:29 MyExecutable
$ ./MyExecutable
/bin/sh: ./MyExecutable: Отказано в доступе
$ cat >> MyExecutable
echo "Hello?"
$ chmod +r MyExecutable
$ ./MyExecutable
Hello!
Hello?

Выше рассмотрен пример не бинарной программы. Такие программы выполняет интерпретатор, указанный в первой строке файла с исходным кодом после комбинации символов #!. В вышеописанном случае был указан shell. По умолчанию для исполнения текстовых файлов используется /bin/sh.

Процессы

Работа системы по сути заключается в том, что процессы производят некоторые действия с файлами. Увидеть список запущенных процессов можно используя команду ps. По умолчанию ps показывает список процессов, запущенных из соответствующей консоли. Увидеть все процессы позволяет опция -e. При помощи опции -f можно узнать более подробную информацию.

$ ps
  PID TTY          TIME CMD
 4753 pts/2    00:00:00 bash
 6155 pts/2    00:00:00 ps
$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 10:28 ?        00:00:00 init [5]
root         2     1  0 10:28 ?        00:00:00 [migration/0]
root         3     1  0 10:28 ?        00:00:00 [ksoftirqd/0]
root         4     1  0 10:28 ?        00:00:00 [watchdog/0]
root         5     1  0 10:28 ?        00:00:00 [events/0]
root         6     1  0 10:28 ?        00:00:00 [khelper]
root         7     1  0 10:28 ?        00:00:00 [kthread]
root        10     7  0 10:28 ?        00:00:00 [kblockd/0]
root        11     7  0 10:28 ?        00:00:00 [kacpid]
root        92     7  0 10:28 ?        00:00:00 [cqueue/0]
root        93     7  0 10:28 ?        00:00:00 [kseriod]
root       132     7  0 10:28 ?        00:00:00 [pdflush]
root       133     7  0 10:28 ?        00:00:00 [pdflush]
root       134     7  0 10:28 ?        00:00:00 [kswapd0]
root       135     7  0 10:28 ?        00:00:00 [aio/0]
root       635     7  0 10:28 ?        00:00:00 [kjournald]
root       733     1  0 10:28 ?        00:00:00 /sbin/udevd --daemon
root       953     7  0 10:28 ?        00:00:00 [khubd]
root      1039     7  0 10:28 ?        00:00:00 [kgameportd]
root      1052     7  0 10:28 ?        00:00:00 [kpsmoused]
root      2448     1  0 10:29 ?        00:00:00 /sbin/auditd
root      2450  2448  0 10:29 ?        00:00:00 /sbin/audispd
root      2451     7  0 10:29 ?        00:00:00 [kauditd]
rpc       2481     1  0 10:29 ?        00:00:00 /sbin/portmap -l
syslogd   2607     1  0 10:29 ?        00:00:00 /sbin/syslogd -u syslogd -j /v
klogd     2636     1  0 10:29 ?        00:00:00 /sbin/klogd -c 1 -x -u klogd -
100       2938     1  0 10:29 ?        00:00:00 /usr/bin/dbus-daemon --system
root      2990     1  0 10:29 ?        00:00:00 /usr/sbin/acpid
110       3030     1  0 10:29 ?        00:00:00 /usr/sbin/hald
root      3031  3030  0 10:29 ?        00:00:00 hald-runner
root      3036  3031  0 10:29 ?        00:00:00 hald-addon-input: Listening on
110       3044  3031  0 10:29 ?        00:00:00 hald-addon-acpi: listening on
root      3049  3031  0 10:29 ?        00:00:01 hald-addon-storage: polling /d
root      3186     1  0 10:29 ?        00:00:00 /usr/sbin/gpm -m /dev/psaux -t
root      3216     1  0 10:29 ?        00:00:00 /usr/sbin/crond
root      3270     1  0 10:29 ?        00:00:00 /usr/sbin/atieventsd
root      3299     1  0 10:29 ?        00:00:00 /usr/sbin/rundm /dev/tty1 /dev
root      3310  3299  0 10:29 ?        00:00:00 xdm -nodaemon
root      3401  3310  3 10:29 tty7     00:13:21 X -nolisten tcp -auth /etc/X11
root      3414  3310  0 10:29 ?        00:00:00 -:0
root      3415     1  0 10:29 ?        00:00:00 /usr/sbin/cupsd
dhcpd     3471     1  0 10:29 ?        00:00:00 /usr/sbin/dhcpd
root      3733     1  0 10:29 ?        00:00:00 /usr/libexec/postfix/master
postfix   3750  3733  0 10:29 ?        00:00:00 qmgr -l -t fifo -u -c
root      3807     1  0 10:29 tty1     00:00:00 /bin/login
root      3808     1  0 10:29 tty2     00:00:00 /sbin/mingetty tty2
root      3809     1  0 10:29 tty3     00:00:00 /sbin/mingetty tty3
root      3810     1  0 10:29 tty4     00:00:00 /sbin/mingetty tty4
root      3811     1  0 10:29 tty5     00:00:00 /sbin/mingetty tty5
root      3812     1  0 10:29 tty6     00:00:00 /sbin/mingetty tty6
george    3836  3414  0 10:34 ?        00:00:00 /bin/sh /etc/xdg/xfce4/xinitrc
george    3888     1  0 10:34 ?        00:00:00 /usr/bin/dbus-launch --sh-synt
george    3889     1  0 10:34 ?        00:00:00 /usr/bin/dbus-daemon --fork --
george    3892     1  0 10:34 ?        00:00:00 ssh-agent -u
george    3952  3836  0 10:34 ?        00:00:00 /bin/sh /etc/xdg/xfce4/xinitrc
george    3953  3952  0 10:34 ?        00:00:00 xscreensaver -no-splash
george    3956  3836  0 10:34 ?        00:00:00 /usr/bin/xfce4-session
george    3960     1  0 10:34 ?        00:00:02 xfce-mcs-manager
george    3962     1  0 10:34 ?        00:00:03 xfwm4
george    3964     1  0 10:34 ?        00:00:15 xfce4-panel
george    3966     1  0 10:34 ?        00:00:00 Thunar --daemon
george    3968     1  0 10:34 ?        00:00:00 /usr/lib/gam_server
george    3970     1  0 10:34 ?        00:00:03 xfdesktop
george    3972  3964  0 10:34 ?        00:00:02 /usr/lib/xfce4/panel-plugins/x
george    3973  3964  0 10:34 ?        00:00:00 /usr/lib/xfce4/panel-plugins/x
root      3977  3807  0 10:34 tty1     00:00:00 -bash
george    4090     1  0 10:41 ?        00:00:00 /bin/sh /usr/bin/xbrowser /usr
george    4096  4090  0 10:41 ?        00:00:00 /bin/sh /usr/lib/firefox/run-m
george    4101  4096  0 10:41 ?        00:02:19 /usr/lib/firefox/firefox-bin /
george    4107     1  0 10:42 ?        00:00:00 /usr/lib/gconfd-2 14
george    4143     1  0 10:53 ?        00:00:09 /usr/bin/Terminal
george    4144  4143  0 10:53 ?        00:00:00 gnome-pty-helper
george    4146  4143  0 10:53 pts/0    00:00:00 bash
george    4273  4143  0 12:49 pts/1    00:00:00 bash
george    4311  4273  0 13:15 pts/1    00:00:00 bash
george    4751  4311  0 14:52 pts/1    00:00:00 script -t 5.script
george    4752  4751  0 14:52 pts/1    00:00:00 script -t 5.script
george    4753  4752  0 14:52 pts/2    00:00:00 bash -i
postfix   4909  3733  0 15:29 ?        00:00:00 pickup -l -t fifo -u -c
george    6013     1  0 15:51 ?        00:00:00 xbindkeys
george    6162  4753  0 16:41 pts/2    00:00:00 ps -ef

Каждый процессор имеет идентификатор (pid). Новые процессы порождаются существующими, поэтому в информации о процессе указывается также идентификатор родителя(ppid). Если процесс завершается, то родителем его дочерних поцессов становится init. Некоторые части ядра системы также зарегистрированы как процессы. Такие процессы указываются в квадратных скобках. Это сделано для того, чтобы предоставить возможность общаться с ядром посредством сигналов. Сигналы --- это один из способов межпроцессного взаимодействия. Список доступных сигналов показывается по команде kill -l.

$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT
17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU
25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH
29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN
35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4
39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

С одного терминала можно запустить несколько процессов, но только один из них, так называемый foreground процесс, будет иметь доступ к вводу с терминала и выпонять в интерактивном режиме. Остальные порцессы должны работать в фоновом режиме (имея возможность выводить данные на терминал, но не получать их оттуда). Для запуска процесса в фоновом режиме необходимо в конце команды дописать &}. Фоновый процесс можно сделать интерактивным при помощи команды fg или же завершить, используя ps -H чтобы узнать идентификатор нужного процесса, и kill непосрпедственно для завершения.

Ограничение прав доступа

Почему групп прав три штуки? Работа происходит следующим образом: после логина запускается логин шелл. Этому первому процессу присваивается id процесса и ему присваивается некий идентификатор пользователя, который зарегистрировался в системе. Все процессы обязательно принадлежат какому-то пользователю. Пользователь определяется по номеру (UID). То есть программа, обеспечивающая авторизацию пользователя в системе, при логине лезет в базу пользователей, проверяет пароль, создаёт новый процесс, меняет ему UID и выполняет (exec) в этом процессе шелл.

Все файлы также принадлежат какому-то пользователю. Сразу возникает вопрос --- как определять, какой процесс может иметь доступ к какому файлу? Интуитивно получается две категории уровня доступа: первый уровень доступа (u) --- какие права имеет процессы пользователя-владельца по отношению к файлу. Третье (o) --- определяет, какие права имеют процессы других пользователей.

В такой дихотомии есть слабое звено, с которым часто приходится сталкиваться во время совместной работы --- если надо, чтобы одни имели доступ, а другие --- не имели. Для этого существует множественный субъект, группа пользователей. Для того, чтобы вводить соотношение между несколькими пользователями вместе и файлом, вводится понятие группа. Что такое группа? У каждого файла прописан не только пользователь, но и группа. Например, ls -ld /etc/tcb.

$ ls -ld /etc/tcb
drwx--x--- 41 root shadow 4096 Июл 17 13:15 /etc/tcb

Любой пользователь может принадлежать любому количеству групп. Эта информация отчасти лежит в файле /etc/passwd (основная группа). Информация о других вхождениях в группы есть в /etc/group. Для того, чтобы узнать, у кого какой id, можно воспользоваться командой id.

$ id
uid=500(george) gid=500(george) группы=10(wheel),14(uucp),19(proc),22(cdrom),71(floppy),80(cdwriter),81(audio),83(radio),119(xgrp),422(camera),423(scanner),500(george)

Таким образом, мы получаем не два уровня доступа, а три, второй триплет rwx (g) определяет права доступа для группы.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

20

1

1

1

1

MaximByshevskiKonopko, Allena, MaximByshevskiKonopko


PspoClasses/080718/03Rights (последним исправлял пользователь MaximByshevskiKonopko 2008-10-09 21:43:18)