В UNIX роль номинального (зарегистрированного) субъекта играет пользователь. Каждому пользователю выдается (обычно - одно)
Каждый пользователь входит в одну или более
Роль действительного (работающего с объектами) субъекта играет процесс. Каждый процесс снабжен единственным UID: это идентификатор запустившего процесс пользователя. Любой процесс, порожденный некоторым процессом, наследует его UID. Таким образом, все процессы, запускаемые по желанию пользователя, будут иметь его идентификатор. UID учитываются, например, когда один процесс посылает другому сигнал. В общем случае разрешается посылать сигналы "своим" процессам (тем, что имеют такой же UID). Классическое "Я тебя породил, я тебя и убью!" иллюстрируется еще и тем, что если процесс пытается убить родителя (послав ему тот или иной сигнал), то в лучшем случае ничего не происходит, чаще умирают оба, а иногда процесс, лишившийся родителя, превращается в зомби (его приходится убивать системе).
Роль объекта в UNIX играют многие реальные объекты, в частности представленные в файловой системе: файлы, каталоги, устройства, каналы и т. п. (договоримся называть любой объект файловой системы файлом, как и в лекции 7; там, где тип объекта будет важен, мы назовем его, и тип объекта "файл" будет носить имя "обычный файл"). Каждый файл снабжен UID -
На уровне файловой системы в UNIX определяется три вида доступа: r ), w ) и x ). Право на чтение из файла дает доступ к содержащейся в нем информации, а право записи - возможность ее изменять. При каждом файле имеется список того, что с ним может делать хозяин (если совпадает UID процесса и файла), член r, w или x ).
Использование файла означает возможность запустить его на выполнение (обычно атрибут x выдается программам и командным сценариям); именно среди файлов, которые пользователю разрешено выполнять, shell ищет утилиту, с имени которой началась командная строка, а заставить выполниться файл, не имеющий атрибута x из командной строки, вообще невозможно. Право на чтение из каталога позволяет узнать только список файлов в нем (можно, например, написать cat каталог и увидеть малопонятную мешанину символов, в которой, однако, встретятся имена всех файлов в каталоге).
Но уже для нормальной работы ls необходимо право на использование каталога, которое открывает доступ к самим файлам (точнее, к их атрибутам). Именно атрибут x дает пользователю право сделать каталог текущим, посмотреть свойства файлов в нем и открывать эти файлы (если, конечно, " VerY V@luаbLe FileZ ". Имя, конечно, может быть любым; здесь мы использовали пробелы в начале и в конце имени, потому что пробел - самый непопулярный на этом месте символ. К слову,- часто ли мы шифр в камере хранения начинаем с цифры 0?
freebsd$ ls -al archive/" VerY V@luаbLe FileZ "
total 12
drwx--x--x 2 george staff 512 Dec 4 09:58 .
drwxr-xr-x 3 george staff 512 Dec 4 09:57 ..
-rw-r--r-- 1 george staff 135 Dec 4
09:58 SecretFile
В этот-то подкаталог можно почти без опаски складывать ценные файлы: кроме друзей, которые узнали от вас его имя, вряд ли кто-нибудь сможет туда пробраться (еще один субъект сможет наверняка, см. далее).
Запись в каталог означает право изменять список имен файлов: переименовывать, создавать и удалять все, что в нем может содержаться. Это значит, что, имея право записи в каталог, пользователь (точнее, запущенный им процесс) может переименовать или удалить (!) оттуда любой файл, даже если ни писать в этот файл, ни читать из него он не может. В обратной ситуации, когда есть право записи в файл, а в содержащий его каталог - нет, пользователь сможет изменять содержимое и
Выдача команды ls -l содержит, помимо прочего, информацию о
alt$ ls -l /bin/sh /etc/anacrontab
-rwxr-xr-x 1 root root 375276 Окт 9
19:22 /bin/sh
-rw-r----- 1 root adm 363 Дек 29
1999 /etc/anacrontab
В приведенном примере файл /etc/anacrontab принадлежит пользователю root и adm, а файл /bin/sh - пользователю root и root (совпадение имени пользователя и
Начало строки содержит знакомые нам символы r, w и x. Самый первый символ - тип файла (для каталогов вместо " - " будет d, для символьных ссылок - l и т. п.). Следующие девять символов надо рассматривать по три: первая тройка - u (user). Вторая тройка - это g (group). Наконец, последняя тройка описывает o (other). Все три a (all).
Если доступ определенного вида разрешен, в выдаче ls будет стоять соответствующая буква в соответствующей тройке, а если нет - вместо нее появится прочерк (знак " - ").
Когда некий процесс желает сделать что-нибудь с некоторым файлом, система для начала проверяет, не является ли он хозяином этого файла. Если UID процесса и файла совпадают, root, право читать из файла /etc/anacrontab имеют root и члены adm, а читать (например, копировать) и запускать файл /bin/sh могут и хозяин, и члены root, и все остальные.
Изменить хозяина или chown и chgrp. Правда, первую из них обычному пользователю запускать незачем: если chown. Да и
Изменить chmod. Формат команды в общем виде таков: "chmod аудитория способ_изменения права список_файлов". Здесь аудитория - строчка из символов u, g, o и a (означающих, как уже говорилось, права для хозяина, способ_изменения - один из символов +, - или =, означающих соответственно разрешение, запрет, или точную установку права - это строчка из символов r, w и x. Конструкций вида аудитория способ_изменения права в команде может быть несколько, тогда они разделяются запятой.
$ chmod a=r,u=rw file
# установить права rw-r--r--
$ ls -al file
-rw-r--r-- 1 george staff 0 Dec 4 11:22 file
$ chmod o-rwx file
# запретить посторонним все
$ ls -al file
-rw-r----- 1 george staff 0 Dec 4 11:22 file
Принимая во внимание то, что атрибут - это один бит (есть доступ или нет), весь список атрибутов может быть представлен двоичным числом, в котором на месте " - " стоит 0, а на месте буквы - 1. В нашем примере последнее значение -rw-r-----, т. е. 0110100000. На самом деле именно так атрибуты представлены в системе, поэтому вместо длинного слова "атрибут" часто говорят просто "бит": "x-бит" - право на выполнение и т. п. Вместо двоичной записи удобно использовать восьмеричную: восьмеричная цифра занимает ровно три бита, поэтому каждая rwx-тройка попадет в отдельную цифру. Восьмеричное представление поддерживает и chmod ; этот способ менее нагляден, но более лаконичен: например, чтобы сразу установить права -rw-r----- файлу file, достаточно команды chmod 640 file.
Как уже говорилось, права записи в каталог организованы так, что из своего каталога пользователь может удалить чей угодно файл. Хуже того: если в каталог разрешено писать целой
freebsd$ ls -ald /tmp drwxrwxrwt 5 root wheel 512 Dec 4 10:12 /tmp
Несмотря на то что ls ставит t вместо x, t-бит - еще один, десятый (формально - девятый, так как биты принято нумеровать с нуля) бит атрибутов каталога; в восьмеричной записи права на /tmp выглядели бы как 1777.
В свое время t-бит придумали для исполняемых файлов. Процесс, запущенный из файла с этим атрибутом, нельзя было выгружать из памяти в область подкачки (swap), отсюда и его официальное название: t, может изменять только названия собственных файлов (проверяется совпадение UID).
За схемой chmod/chown невозможно создать такое положение вещей, когда одна
Несмотря на то что введение
Поэтому в разных версиях UNIX стали появляться расширения
Для поддержки действительно субъект-объектных отношений между файлами и пользователями носитель данных (в данном случае файловая система) должен иметь, как было показано в лекции 9, принципиально безразмерную системную область (за счет того, что размер полной таблицы отношений равен произведению количества субъектов, количества объектов и числа способов доступа; как минимум два сомножителя из трех - переменные, склонные к увеличению). Многие файловые системы UNIX (XFS, Sun
Стандартные команды работы с setfacl и getfacl - подробно описаны в руководстве, поэтому ограничимся лишь общими сведениями. В таблице используются те же ранги субъектов - "пользователь", "группа" и "прочие", что и в системе, при этом поля "пользователь" и "группа" могут указывать прямо на конкретный субъект или же косвенно - на "хозяина", то есть на PID и GID файла. Правило субъект: способ доступа; способы доступа используются тоже системные - r, w и x. Все правила в
На практике chflags его нельзя ни переписать, ни сменить ему имя). Эта тактика представляется наиболее целесообразной: везде, где возможно, следовать субъект-субъектной модели
Процесс определения того, имеет или не имеет некоторый субъект доступ к некоторому объекту, называется
use apropos quota ) и т. п.
В любом случае процессу
Обычный сеанс работы пользователя начинается так: утилита getty, запущенная на какой-нибудь терминальной линии, обнаруживает активность на ней, выводит приглашение (обычно - пара строк, что-нибудь вроде Welcome to System такая-то / tty такой-то и _имя_компьютера login:) и вводит login, которая выводит подсказку Password: и вводит пароль (он никак не отображается на экране, даже звездочками, иначе можно было бы его подглядеть или узнать его длину). Пароль программа login проверяет, и если он не подошел, выводит уже свое приглашение (обычно просто login:), вводит login начинает вставлять после очередного ввода временную задержку, которая с каждым разом увеличивается. Это делается для того, чтобы помешать злоумышленнику (или его каверзной программе) подобрать пароль, вводя прямо с терминала предполагаемые варианты.
При соединении по сети роль getty играет соответствующий сетевой сервис (например, демон sshd ); в зависимости от настроек он может самостоятельно проверять login.
Убедившись, что пароль введен правильно, login запускает командный интерпретатор с установленными UID и GID, которые однозначно соответствуют
Все данные о пользователях UNIX хранит в файле /etc/passwd в текстовом виде. Каждому пользователю соответствует одна строка, поля которой разделяются двоеточиями:
входное имя:*:UID:GID:полное имя:
домашний каталог: стартовый shell
или, пользуясь собственной терминологией UNIX,
LOGNAME:*:UID:GID:GECOS:HOME:SHELL
Полное имя пользователя сокращено до GECOS оттого, что в незапамятные времена кто-то из разработчиков UNIX использовал сервер печати под управлением General Electric Comprehensive Operating System. В единственном поле, содержимое которого не используется UNIX, пришлось хранить пароль для передачи документов на печать. Информация в /etc/passwd - несекретная, этот файл доступен для чтения любому пользователю.
Возникает вопрос: а где хранится системный пароль пользователя? Ответ: нигде. UNIX не хранит пароли ни открытым текстом, ни в зашифрованном виде. Вместо пароля хранится /etc/passwd. Каждому паролю однозначно соответствует /etc/passwd. Вычислить пароль, имея один только
По-хорошему, именно /etc/passwd удалили в файл, недоступный для чтения никому, кроме пользователя root. Туда же принято записывать расширения стандартного passwd, вроде сроков действия пароля и /etc/shadow, в котором содержится только дополнительная информация.
root (он же root все равно может в него писать). Вообще, root - страшный человек! Он может удалить все ваши файлы, хотите вы того или нет. Он может отредактировать /etc/passwd и вообще может все. Как правило, пароль root знает только системный администратор. В полном согласии с О, он отвечает за все, что творится в системе, - раз уж он все это в состоянии изменить. Именно /etc/group, который определяет, в какие еще /etc/passwd, входят пользователи системы.
Именно с нулевыми login: это позволяет ему в дальнейшем "становиться любым пользователем", меняя собственные UID и GID. Многие другие системные действия тоже требуют прав root, но по здравом рассуждении могут быть доверены обычному (не супер) пользователю. Например, управлять очередью отсылаемых электронных писем и передавать эти письма по назначению может процесс, не обладающий правами root, однако ему нужен полный доступ к очереди писем. С другой стороны, хорошо бы, чтобы никакой настоящий пользователь системы - человек не мог даже подглядеть в эту очередь. Так возникают /sbin/nologin (программа выдает This account is currently not available и немедленно завершается), а поле HOME - /nonexistent (каталог, которого в системе нет). Зато система, запуская процесс "от имени" такого
passwd. Это простое и довольно обыденное действие, с учетом всего сказанного выше, невозможно. В самом деле: процесс, запущенный пользователем, будет иметь его UID, а файл passwd принадлежит root, и только процессам с нулевым UID доступен для записи. Значит, необходим механизм root
Для этого в файловой системе предусмотрено еще два атрибута - passwd: запустив ее, пользователь получает права root, но его действия ограничены возможностями этой программы.
$ ls -al /usr/bin/passwd
-r-sr-xr-x 2 root wheel 5880 янв 11
05:48 /usr/bin/passwd
Как видно, ls отображает s на месте пользовательского x-бита (x-бит никуда не делся, просто без него rogue. Кстати, бессмысленно ставить
passwd имеет какие-нибудь еще способности, кроме как изменять /etc/passwd строго в соответствии с документацией? Имея дело со свободно распространяемыми системами, мы всегда можем заглянуть в исходные тексты этой программы и убедиться, что авторы не имели в виду ничего предосудительного. Но вдруг у них случайно так вышло, что при определенных условиях passwd может запустить из текущего каталога программу с именем hack'em'all? Тогда все действия этой программы будут выполняться от имени root (наследование UID!) - действия, предусмотренные не системой, а каким-то бесправным пользователем, которому всего только и разрешено было что менять себе пароль.
Даже если passwd (или другую утилиту, занимающуюся shadow или master.passwd ). Если каким-то образом получить доступ к памяти этого процесса, можно добраться и до чужих /etc/tcb/имя_пользователя/shadow.
Стоит отметить, что строгая реализация правил простой модели безопасности (NoRU/NoWD - секретность или NoWU/NoRD - надежность) средствами UNIX невозможна. И дело даже не в наличии доверенного субъекта - root, а в том, что правила вида "No что-нибудь Down" противоречат О. Согласно О и схеме
В UNIX роль номинального (зарегистрированного) субъекта играет пользователь. Каждому пользователю выдается (обычно - одно)
Каждый пользователь входит в одну или более
Роль действительного (работающего с объектами) субъекта играет процесс. Каждый процесс снабжен единственным UID: это идентификатор запустившего процесс пользователя. Любой процесс, порожденный некоторым процессом, наследует его UID. Таким образом, все процессы, запускаемые по желанию пользователя, будут иметь его идентификатор. UID учитываются, например, когда один процесс посылает другому сигнал. В общем случае разрешается посылать сигналы "своим" процессам (тем, что имеют такой же UID). Классическое "Я тебя породил, я тебя и убью!" иллюстрируется еще и тем, что если процесс пытается убить родителя (послав ему тот или иной сигнал), то в лучшем случае ничего не происходит, чаще умирают оба, а иногда процесс, лишившийся родителя, превращается в зомби (его приходится убивать системе).
Роль объекта в UNIX играют многие реальные объекты, в частности представленные в файловой системе: файлы, каталоги, устройства, каналы и т. п. (договоримся называть любой объект файловой системы файлом, как и в лекции 7; там, где тип объекта будет важен, мы назовем его, и тип объекта "файл" будет носить имя "обычный файл"). Каждый файл снабжен UID -
На уровне файловой системы в UNIX определяется три вида доступа: r ), w ) и x ). Право на чтение из файла дает доступ к содержащейся в нем информации, а право записи - возможность ее изменять. При каждом файле имеется список того, что с ним может делать хозяин (если совпадает UID процесса и файла), член r, w или x ).
Использование файла означает возможность запустить его на выполнение (обычно атрибут x выдается программам и командным сценариям); именно среди файлов, которые пользователю разрешено выполнять, shell ищет утилиту, с имени которой началась командная строка, а заставить выполниться файл, не имеющий атрибута x из командной строки, вообще невозможно. Право на чтение из каталога позволяет узнать только список файлов в нем (можно, например, написать cat каталог и увидеть малопонятную мешанину символов, в которой, однако, встретятся имена всех файлов в каталоге).
Но уже для нормальной работы ls необходимо право на использование каталога, которое открывает доступ к самим файлам (точнее, к их атрибутам). Именно атрибут x дает пользователю право сделать каталог текущим, посмотреть свойства файлов в нем и открывать эти файлы (если, конечно, " VerY V@luаbLe FileZ ". Имя, конечно, может быть любым; здесь мы использовали пробелы в начале и в конце имени, потому что пробел - самый непопулярный на этом месте символ. К слову,- часто ли мы шифр в камере хранения начинаем с цифры 0?
freebsd$ ls -al archive/" VerY V@luаbLe FileZ "
total 12
drwx--x--x 2 george staff 512 Dec 4 09:58 .
drwxr-xr-x 3 george staff 512 Dec 4 09:57 ..
-rw-r--r-- 1 george staff 135 Dec 4
09:58 SecretFile
В этот-то подкаталог можно почти без опаски складывать ценные файлы: кроме друзей, которые узнали от вас его имя, вряд ли кто-нибудь сможет туда пробраться (еще один субъект сможет наверняка, см. далее).
Запись в каталог означает право изменять список имен файлов: переименовывать, создавать и удалять все, что в нем может содержаться. Это значит, что, имея право записи в каталог, пользователь (точнее, запущенный им процесс) может переименовать или удалить (!) оттуда любой файл, даже если ни писать в этот файл, ни читать из него он не может. В обратной ситуации, когда есть право записи в файл, а в содержащий его каталог - нет, пользователь сможет изменять содержимое и
Выдача команды ls -l содержит, помимо прочего, информацию о
alt$ ls -l /bin/sh /etc/anacrontab
-rwxr-xr-x 1 root root 375276 Окт 9
19:22 /bin/sh
-rw-r----- 1 root adm 363 Дек 29
1999 /etc/anacrontab
В приведенном примере файл /etc/anacrontab принадлежит пользователю root и adm, а файл /bin/sh - пользователю root и root (совпадение имени пользователя и
Начало строки содержит знакомые нам символы r, w и x. Самый первый символ - тип файла (для каталогов вместо " - " будет d, для символьных ссылок - l и т. п.). Следующие девять символов надо рассматривать по три: первая тройка - u (user). Вторая тройка - это g (group). Наконец, последняя тройка описывает o (other). Все три a (all).
Если доступ определенного вида разрешен, в выдаче ls будет стоять соответствующая буква в соответствующей тройке, а если нет - вместо нее появится прочерк (знак " - ").
Когда некий процесс желает сделать что-нибудь с некоторым файлом, система для начала проверяет, не является ли он хозяином этого файла. Если UID процесса и файла совпадают, root, право читать из файла /etc/anacrontab имеют root и члены adm, а читать (например, копировать) и запускать файл /bin/sh могут и хозяин, и члены root, и все остальные.
Изменить хозяина или chown и chgrp. Правда, первую из них обычному пользователю запускать незачем: если chown. Да и
Изменить chmod. Формат команды в общем виде таков: "chmod аудитория способ_изменения права список_файлов". Здесь аудитория - строчка из символов u, g, o и a (означающих, как уже говорилось, права для хозяина, способ_изменения - один из символов +, - или =, означающих соответственно разрешение, запрет, или точную установку права - это строчка из символов r, w и x. Конструкций вида аудитория способ_изменения права в команде может быть несколько, тогда они разделяются запятой.
$ chmod a=r,u=rw file
# установить права rw-r--r--
$ ls -al file
-rw-r--r-- 1 george staff 0 Dec 4 11:22 file
$ chmod o-rwx file
# запретить посторонним все
$ ls -al file
-rw-r----- 1 george staff 0 Dec 4 11:22 file
Принимая во внимание то, что атрибут - это один бит (есть доступ или нет), весь список атрибутов может быть представлен двоичным числом, в котором на месте " - " стоит 0, а на месте буквы - 1. В нашем примере последнее значение -rw-r-----, т. е. 0110100000. На самом деле именно так атрибуты представлены в системе, поэтому вместо длинного слова "атрибут" часто говорят просто "бит": "x-бит" - право на выполнение и т. п. Вместо двоичной записи удобно использовать восьмеричную: восьмеричная цифра занимает ровно три бита, поэтому каждая rwx-тройка попадет в отдельную цифру. Восьмеричное представление поддерживает и chmod ; этот способ менее нагляден, но более лаконичен: например, чтобы сразу установить права -rw-r----- файлу file, достаточно команды chmod 640 file.
Как уже говорилось, права записи в каталог организованы так, что из своего каталога пользователь может удалить чей угодно файл. Хуже того: если в каталог разрешено писать целой
freebsd$ ls -ald /tmp drwxrwxrwt 5 root wheel 512 Dec 4 10:12 /tmp
Несмотря на то что ls ставит t вместо x, t-бит - еще один, десятый (формально - девятый, так как биты принято нумеровать с нуля) бит атрибутов каталога; в восьмеричной записи права на /tmp выглядели бы как 1777.
В свое время t-бит придумали для исполняемых файлов. Процесс, запущенный из файла с этим атрибутом, нельзя было выгружать из памяти в область подкачки (swap), отсюда и его официальное название: t, может изменять только названия собственных файлов (проверяется совпадение UID).
За схемой chmod/chown невозможно создать такое положение вещей, когда одна
Несмотря на то что введение
Поэтому в разных версиях UNIX стали появляться расширения
Для поддержки действительно субъект-объектных отношений между файлами и пользователями носитель данных (в данном случае файловая система) должен иметь, как было показано в лекции 9, принципиально безразмерную системную область (за счет того, что размер полной таблицы отношений равен произведению количества субъектов, количества объектов и числа способов доступа; как минимум два сомножителя из трех - переменные, склонные к увеличению). Многие файловые системы UNIX (XFS, Sun
Стандартные команды работы с setfacl и getfacl - подробно описаны в руководстве, поэтому ограничимся лишь общими сведениями. В таблице используются те же ранги субъектов - "пользователь", "группа" и "прочие", что и в системе, при этом поля "пользователь" и "группа" могут указывать прямо на конкретный субъект или же косвенно - на "хозяина", то есть на PID и GID файла. Правило субъект: способ доступа; способы доступа используются тоже системные - r, w и x. Все правила в
На практике chflags его нельзя ни переписать, ни сменить ему имя). Эта тактика представляется наиболее целесообразной: везде, где возможно, следовать субъект-субъектной модели
Процесс определения того, имеет или не имеет некоторый субъект доступ к некоторому объекту, называется
use apropos quota ) и т. п.
В любом случае процессу
Обычный сеанс работы пользователя начинается так: утилита getty, запущенная на какой-нибудь терминальной линии, обнаруживает активность на ней, выводит приглашение (обычно - пара строк, что-нибудь вроде Welcome to System такая-то / tty такой-то и _имя_компьютера login:) и вводит login, которая выводит подсказку Password: и вводит пароль (он никак не отображается на экране, даже звездочками, иначе можно было бы его подглядеть или узнать его длину). Пароль программа login проверяет, и если он не подошел, выводит уже свое приглашение (обычно просто login:), вводит login начинает вставлять после очередного ввода временную задержку, которая с каждым разом увеличивается. Это делается для того, чтобы помешать злоумышленнику (или его каверзной программе) подобрать пароль, вводя прямо с терминала предполагаемые варианты.
При соединении по сети роль getty играет соответствующий сетевой сервис (например, демон sshd ); в зависимости от настроек он может самостоятельно проверять login.
Убедившись, что пароль введен правильно, login запускает командный интерпретатор с установленными UID и GID, которые однозначно соответствуют
Все данные о пользователях UNIX хранит в файле /etc/passwd в текстовом виде. Каждому пользователю соответствует одна строка, поля которой разделяются двоеточиями:
входное имя:*:UID:GID:полное имя:
домашний каталог: стартовый shell
или, пользуясь собственной терминологией UNIX,
LOGNAME:*:UID:GID:GECOS:HOME:SHELL
Полное имя пользователя сокращено до GECOS оттого, что в незапамятные времена кто-то из разработчиков UNIX использовал сервер печати под управлением General Electric Comprehensive Operating System. В единственном поле, содержимое которого не используется UNIX, пришлось хранить пароль для передачи документов на печать. Информация в /etc/passwd - несекретная, этот файл доступен для чтения любому пользователю.
Возникает вопрос: а где хранится системный пароль пользователя? Ответ: нигде. UNIX не хранит пароли ни открытым текстом, ни в зашифрованном виде. Вместо пароля хранится /etc/passwd. Каждому паролю однозначно соответствует /etc/passwd. Вычислить пароль, имея один только
По-хорошему, именно /etc/passwd удалили в файл, недоступный для чтения никому, кроме пользователя root. Туда же принято записывать расширения стандартного passwd, вроде сроков действия пароля и /etc/shadow, в котором содержится только дополнительная информация.
root (он же root все равно может в него писать). Вообще, root - страшный человек! Он может удалить все ваши файлы, хотите вы того или нет. Он может отредактировать /etc/passwd и вообще может все. Как правило, пароль root знает только системный администратор. В полном согласии с О, он отвечает за все, что творится в системе, - раз уж он все это в состоянии изменить. Именно /etc/group, который определяет, в какие еще /etc/passwd, входят пользователи системы.
Именно с нулевыми login: это позволяет ему в дальнейшем "становиться любым пользователем", меняя собственные UID и GID. Многие другие системные действия тоже требуют прав root, но по здравом рассуждении могут быть доверены обычному (не супер) пользователю. Например, управлять очередью отсылаемых электронных писем и передавать эти письма по назначению может процесс, не обладающий правами root, однако ему нужен полный доступ к очереди писем. С другой стороны, хорошо бы, чтобы никакой настоящий пользователь системы - человек не мог даже подглядеть в эту очередь. Так возникают /sbin/nologin (программа выдает This account is currently not available и немедленно завершается), а поле HOME - /nonexistent (каталог, которого в системе нет). Зато система, запуская процесс "от имени" такого
passwd. Это простое и довольно обыденное действие, с учетом всего сказанного выше, невозможно. В самом деле: процесс, запущенный пользователем, будет иметь его UID, а файл passwd принадлежит root, и только процессам с нулевым UID доступен для записи. Значит, необходим механизм root
Для этого в файловой системе предусмотрено еще два атрибута - passwd: запустив ее, пользователь получает права root, но его действия ограничены возможностями этой программы.
$ ls -al /usr/bin/passwd
-r-sr-xr-x 2 root wheel 5880 янв 11
05:48 /usr/bin/passwd
Как видно, ls отображает s на месте пользовательского x-бита (x-бит никуда не делся, просто без него rogue. Кстати, бессмысленно ставить
passwd имеет какие-нибудь еще способности, кроме как изменять /etc/passwd строго в соответствии с документацией? Имея дело со свободно распространяемыми системами, мы всегда можем заглянуть в исходные тексты этой программы и убедиться, что авторы не имели в виду ничего предосудительного. Но вдруг у них случайно так вышло, что при определенных условиях passwd может запустить из текущего каталога программу с именем hack'em'all? Тогда все действия этой программы будут выполняться от имени root (наследование UID!) - действия, предусмотренные не системой, а каким-то бесправным пользователем, которому всего только и разрешено было что менять себе пароль.
Даже если passwd (или другую утилиту, занимающуюся shadow или master.passwd ). Если каким-то образом получить доступ к памяти этого процесса, можно добраться и до чужих /etc/tcb/имя_пользователя/shadow.
Стоит отметить, что строгая реализация правил простой модели безопасности (NoRU/NoWD - секретность или NoWU/NoRD - надежность) средствами UNIX невозможна. И дело даже не в наличии доверенного субъекта - root, а в том, что правила вида "No что-нибудь Down" противоречат О. Согласно О и схеме
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.