Изменяем пароль пользователя в Linux. Утилиты администрирования учетных записей

PASSWD(1)

НАЗВАНИЕ
passwd,yppasswd - смена входного пароля

СИНТАКСИС

Passwd [входное_имя]

ОПИСАНИЕ
Команда passwd меняет (или устанавливает) пароль, связанный с входным_именем пользователя.

Обычный пользователь может менять только пароль, связанный с его собственным входным_именем.

Команда запрашивает у обычных пользователей старый пароль (если он был), а затем дважды запрашивает новый. После первого запроса проверяется, достаточен ли "возраст" старого пароля. Возраст - это промежуток времени (обычно несколько дней), который должен пройти между сменами пароля. Если возраст недостаточен, новый пароль отвергается и passwd завершается; см. passwd(4) .

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

Технические требования к паролям:

  1. Каждый пароль должен содержать не менее 6 симво лов. Значащими являются только первые 8.
  2. Каждый пароль должен содержать как минимум две буквы (большие или малые) и хотя бы одну цифру или знак.
  3. Каждый пароль должен отличаться от входного_имени, прочитанного слева направо или задом наперед, и от его циклических сдвигов. При сравнении не делается различий между большими и малыми буквами.
  4. Новый пароль должен отличаться от старого хотя бы тремя символами. При сравнении не делается разли чий между большими и малыми буквами.

Пользователь, у которого действующий идентификатор есть ноль, называется суперпользователем [см. id(1) и su(1) ]. Суперпользователь имеет право изменять любые пароли, поэтому у него старый пароль не запрашивается. Суперпользователь не связан ограничениями на возраст пароля и соответствие техническим требованиям. Суперпользователь может создать пустой пароль, нажимая возврат каретки в ответ на запрос нового пароля.

ФАЙЛЫ

/etc/passwd

СМ. ТАКЖЕ
id(1) , login(1) , su(1) .
crypt(3C) , passwd(4) в Справочнике программиста.

СЮРПРИЗЫ
Пустой пароль не равнозначен отсутствию пароля и запрашивается каждый раз при входе.

The passwd command changes passwords for user accounts. A normal user may only change the password for his/her own account, while the superuser may change the password for any account. passwd also changes the account or associated password validity period.

Password Changes

The user is first prompted for his/her old password, if one is present. This password is then encrypted and compared against the stored password. The user has only one chance to enter the correct password. The superuser is permitted to bypass this step so that forgotten passwords may be changed. After the password has been entered, password aging information is checked to see if the user is permitted to change the password at this time. If not, passwd refuses to change the password and exits. The user is then prompted twice for a replacement password. The second entry is compared against the first and both are required to match in order for the password to be changed. Then, the password is tested for complexity. As a general guideline, passwords should consist of 6 to 8 characters including one or more characters from each of the following sets:

Lower case alphabetics

Digits 0 thru 9

Punctuation marks

Care must be taken not to include the system default erase or kill characters. passwd will reject any password which is not suitably complex.

Hints for user passwords

The security of a password depends upon the strength of the encryption algorithm and the size of the key space. The legacy UNIX System encryption method is based on the NBS DES algorithm. More recent methods are now recommended (see ENCRYPT_METHOD ). The size of the key space depends upon the randomness of the password which is selected. Compromises in password security normally result from careless password selection or handling. For this reason, you should not select a password which appears in a dictionary or which must be written down. The password should also not be a proper name, your license number, birth date, or street address. Any of these may be used as guesses to violate system security. You can find advice on how to choose a strong password on http://en.wikipedia.org/wiki/Password_strength

OPTIONS

The options which apply to the passwd command are: -a , --all

This option can be used only with -S and causes show status for all users.

-d , --delete

Delete a user"s password (make it empty). This is a quick way to disable a password for an account. It will set the named account passwordless.

-e , --expire

Immediately expire an account"s password. This in effect can force a user to change his/her password at the user"s next login.

-h , --help

Display help message and exit.

-i , --inactive INACTIVE

This option is used to disable an account after the password has been expired for a number of days. After a user account has had an expired password for INACTIVE days, the user may no longer sign on to the account.

-k , --keep-tokens

Indicate password change should be performed only for expired authentication tokens (passwords). The user wishes to keep their non-expired tokens as before.

-l , --lock

Lock the password of the named account. This option disables a password by changing it to a value which matches no possible encrypted value (it adds a ´!´ at the beginning of the password). Note that this does not disable the account. The user may still be able to login using another authentication token (e.g. an SSH key). To disable the account, administrators should use usermod --expiredate 1 (this set the account"s expire date to Jan 2, 1970). Users with a locked password are not allowed to change their password.

-n , --mindays MIN_DAYS

Set the minimum number of days between password changes to MIN_DAYS . A value of zero for this field indicates that the user may change his/her password at any time.

-q , --quiet -r , --repository REPOSITORY

change password in REPOSITORY repository

-R , --root CHROOT_DIR

Apply changes in the CHROOT_DIR directory and use the configuration files from the CHROOT_DIR directory.

-S , --status

Display account status information. The status information consists of 7 fields. The first field is the user"s login name. The second field indicates if the user account has a locked password (L), has no password (NP), or has a usable password (P). The third field gives the date of the last password change. The next four fields are the minimum age, maximum age, warning period, and inactivity period for the password. These ages are expressed in days.

-u , --unlock

Unlock the password of the named account. This option re-enables a password by changing the password back to its previous value (to the value before using the -l option).

-w , --warndays WARN_DAYS

Set the number of days of warning before a password change is required. The WARN_DAYS option is the number of days prior to the password expiring that a user will be warned that his/her password is about to expire.

-x , --maxdays MAX_DAYS passwd - изменяет пароль пользователя

СИНТАКСИС

passwd [параметры ] [УЧЁТНАЯ_ЗАПИСЬ ]

ОПИСАНИЕ

Программа passwd изменяет пароли пользовательских учётных записей. Обычный пользователь может изменить пароль только своей учётной записи, суперпользователь может изменить пароль любой учётной записи. Программа passwd также изменяет информацию об учётной записи или срок действия пароля. Изменение пароля Сначала пользователя попросят ввести старый пароль, если он был. Этот пароль зашифровывается и сравнивается с имеющимся. У пользователя есть только одна попытка ввести правильный пароль. Для суперпользователя этот шаг пропускается, для того чтобы можно было изменить забытый пароль. После ввода пароля проверяется информация об устаревании пароля, чтобы убедиться, что пользователю разрешено изменять пароль в настоящий момент. Если нет, то passwd не производит изменение пароля и завершает работу. Затем пользователю предложат дважды ввести новый пароль. Значение второго ввода сравнивается с первым и для изменения пароли из обеих попыток должны совпасть. Затем пароль тестируется на сложность подбора. Согласно общим принципам, пароли должны быть длиной от 6 до 8 символов и включать один или более символов каждого типа: · строчные буквы · цифры от 0 до 9 · знаки пунктуации Не включайте системные символы стирания и удаления. Программа passwd не примет пароль, который не имеет достаточной сложности. Выбор пароля Безопасность пароля зависит от стойкости алгоритма шифрования и размера пространства ключа. В старых системах UNIX метод шифрования основывался на алгоритме NBS DES. Сейчас рекомендуют более новые методы (смотрите ENCRYPT_METHOD ). Размер пространства ключа зависит от степени произвольности выбранного пароля. При обеспечении безопасности пароля выбирают нечто среднее между сложным паролем и сложностью работы с ним. По этой причине, вы не должны использовать пароль, который является словом из словаря или который придётся записать из-за его сложности. Также, пароль не должен быть названием чего-либо, номером вашей лицензии, днём рождения и домашним адресом. Обо всём этом легко догадаться, что приведёт к нарушению безопасности системы. О том, как выбрать стойкий пароль, читайте в http://ru.wikipedia.org/wiki/ Сложность_пароля.

ПАРАМЕТРЫ

Параметры команды passwd : -a , --all Этот параметр можно использовать только вместе с -S для вывода статуса всех пользователей. -d , --delete Удалить пароль пользователя (сделать его пустым). Это быстрый способ заблокировать пароль учётной записи. Это сделает указанную учётную запись беспарольной. -e , --expire Немедленно сделать пароль устаревшим. В результате это заставит пользователя изменить пароль при следующем входе в систему. -h , --help Показать краткую справку и закончить работу. -i , --inactive ДНЕЙ Этот параметр используется для блокировки учётной записи по прошествии заданного числа дней после устаревания пароля. То есть, если пароль устарел и прошло более указанных ДНЕЙ , то пользователь больше не сможет использовать данную учётную запись. -k , --keep-tokens Указывает, что изменение пароля нужно выполнить только для устаревших ключей аутентификации (паролей). Пользователи хотят оставить свои непросроченные ключи нетронутыми. -l , --lock Заблокировать пароль указанной учётной записи. Этот параметр блокирует пароль, изменяя его значение на вариант, который не может быть шифрованным паролем (добавляется символ «!» в начало пароля). Заметим, что это не блокирует учётную запись. Пользователь всё ещё может войти в систему с помощью другого способа аутентификации (например, с помощью ключа SSH). Чтобы заблокировать учётную запись, администратор должен использовать команду usermod --expiredate 1 (это установит дату устаревания учётной запись равной 2 января 1970 года). Посетитель с заблокированным паролем не может изменить свой пароль. -n , --mindays МИН_ДНЕЙ Задать минимальное количество дней между сменами пароля. Нулевое значение этого поля указывает на то, что пользователь может менять свой пароль когда захочет. -q , --quiet Не выводить сообщений при работе. -r , --repository РЕПОЗИТОРИЙ Изменить пароль в РЕПОЗИТОРИИ . -R , --root КАТ_CHROOT Выполнить изменения в каталоге КАТ_CHROOT и использовать файлы настройки из каталога КАТ_CHROOT . -S , --status Показать состояние учётной записи. Информация о состоянии содержит 7 полей. Первое поле содержит имя учётной записи. Второе поле указывает, заблокирован ли пароль учётной записи (L), она без пароля (NP) или у неё есть рабочий пароль (P). Третье поле хранит дату последнего изменения пароля. В следующих четырёх полях хранятся минимальный срок, максимальный срок, период выдачи предупреждения и период неактивности пароля. Эти сроки измеряются в днях. -u , --unlock Разблокировать пароль указанной учётной записи. Этот параметр разблокирует пароль, возвращая его прежнее значение (которое было перед использованием параметра -l ). -w , --warndays ПРЕД_ДНЕЙ Установить число дней выдачи предупреждения, перед тем как потребуется смена пароля. В параметре ПРЕД_ДНЕЙ указывается число дней перед тем как пароль устареет, в течении которых пользователю будут напоминать, что пароль скоро устареет. -x , --maxdays МАКС_ДНЕЙ Установить максимальное количество дней, в течении которых пароль остаётся рабочим. После МАКС_ДНЕЙ пароль нужно изменить.

ПРЕДОСТЕРЕЖЕНИЯ

Сложность пароля проверяется на разных машинах по разному. Пользователю настоятельно рекомендуется выбирать пароль такой сложности, чтобы ему нормально работалось. Пользователи не могут изменять свои пароли в системе, если включён NIS и они не вошли на сервер NIS. Команда passwd для аутентификации пользователей и для смены паролей использует PAM.

Файл /etc/passwd содержит список пользователей, которые известны системе. В
процессе регистрации пользователя система обращается к этому файлу в поисках идентификатора пользователя и его домашнего каталога.

Стуктура записей в /etc/passwd

Каждая строка файла описывает одного пользователя и 7 полей , разделенных двоеточиями:

  1. Регистрационное имя . Регистрационные имена должны быть уникальными и состоять не более чем из 32 символов.
    Они могут содержать любые символы, кроме двоеточия и символа новой строки. Они не должны начинаться с цифры.
  2. Зашифрованный пароль или «заполнитель» пароля.

    В данном поле возможно присутствие:

    1. символа «х» --
      так указыватеся, что пароль храниться
    2. символа «*»
      -- значит, что данная учетная запись временно отключена.
    3. или набора случайных символов и чисел
      -- значит указывается непосредственный пароль пользователя в зашифрованном виде.
  3. Идентификатор пользователя - это 32-битное целое число, которое уникально идентифицирует пользователя в системе.
    По умолчанию, идентификаторы меньше 500 зарезервированы для служебных учетных записей. Регулярные пользователи имеют идентификаторы, начиная с 500.
  4. Идентификатор группы по умолчанию .
    Как и идентификатор пользователя, идентификатор группы (GID) является 32-битным целым числом.
    Причем:
    • Идентификатор 0 зарезервирован для группы с именем root,
    • идентификатор 1 - для группы bin,
    • а 2 - для группы daemon.

    Группы определяются в , а поле идентификатора группы в файле /etc/passwd задает стандартный («эффективный») идентификатор на момент регистрации пользователя в системе.

    Этот идентификатор не играет особой роли при определении прав доступа; он используется лишь при создании новых файлов и каталогов .

    Новые файлы обычно включаются в эффективную группу своего владельца, но если у каталога установлен специальный бит setgid (02000) или файловая система смонтирована с опцией grpid, новые файлы принадлежат группе владельца каталога.
    По умолчанию, в ОС Linux для каждого нового пользователя создается новая группа с таким же регистрационным именем и идентификатором.

  5. Поле персональных данных . Поле GECOS в основном используется для хранения персональной информации о каждом пользователе. Оно не имеет четко определенного синтаксиса.

    Структура данного поля может быть произвольной, но команда finger интерпретирует разделенные запятыми элементы данного поля в следующем порядке:

    • полное имя;
    • номер офиса и здания;
    • рабочий телефон;
    • домашний телефон.
  6. Домашний каталог . Войдя в систему, пользователь попадает в свой домашний каталог. Если на момент регистрации этот каталог отсутствует, выводится сообщение о его отсутствии. Если в качестве значения поля домашнего каталога по умолчанию DEFAULT_HOME в файле /etc/login.defs установлено «no», продолжение регистрации пользователя будет невозможно; в противном случае пользователь попадает в корневой каталог.
    По умолчанию, домашние каталоги пользователей создаются в каталоге /home. При добавлении в систему нового пользователя в его домашний каталог копируются все файлы из каталога /etc/skel, в котором содержаться персональные конфигурационные файлы командного интерпретатора и различных программ.
  7. Командный интерпретатор .
    -- В качестве регистрационной оболочки, как правило, задается интерпретатор команд, например, /bin/sh

    /bin/csh

    ,
    -- но, в принципе, это может быть любая программа. По умолчанию используется интерпретатор bash.

    Пользователи могут менять интерпретатор с помощью команды chsh. Файл /etc/shells содержит список тех интерпретаторов, которые доступны для выбора.

Пример записи в /etc/passwd

Типовые записи файла /etc/passwd имеет следующий вид (приведём две строки):

Root:х:0:0:test,w,1,w:/root:/bin/bash sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin

В первой записи указана учетная запись пользователя root. Как видно, идентификатор пользователя и идентификатор группы пользователя для данной учетной записи совпадают и равны нулю. Затем следует поле персональных данных, домашний каталог, которым является каталог /root и командный интерпретатор пользователя - /bin/bash.

  • Перевод

Продолжение третьей части серии руководств Linux для новичков. Основы управления пользователями и группами.

Управление аккаунтами в Linux

Знакомьтесь, /etc/passwd

В этом разделе мы познакомимся с механизмом управления аккаунтами в Linux и начнем с файла /etc/passwd , в котором определены все пользователи, которые существуют в системе. Вы можете посмотреть свой файл /etc/passwd , набрав команду less /etc/passwd . Каждой строкой в /etc/passwd определяется аккаунт пользователя. Вот пример из моего /etc/passwd :

Drobbins:x:1000:1000:Daniel Robbins:/home/drobbins:/bin/bash

Как видите, в одной строке не так уж много информации. Каждая из них содержит несколько полей, разделённых ":". Первое поле отвечает за имя пользователя (drobbins), второе поле содержит «x». На устаревших Linux-системах второе поле содержало зашифрованных пароль для аутентификации, но фактически, сейчас все Linux-системы хранят эту информацию в другом файле. Третье поле отвечает за числовой пользовательский идентификатор, связанный с конкретным пользователем, а четвертое поле ассоциирует этого пользователя с конкретной группой; скоро мы увидим, где определена группа 1000. Пятое поле содержит текстовое описание аккаунта, в нашем случае это имя пользователя. Шестое поле определяет домашний каталог пользователя, седьмое - устанавливает стартовую оболочку пользователя, которая будет автоматически запускаться когда пользователь входит в систему.

Вы вероятно заметили, что в системе намного больше пользовательских аккаунтов, которые определены в /etc/passwd, чем тех, которые логинятся в систему на самом деле. Всё это потому, что различные компоненты Linux используют некоторые аккаунты для повышения безопасности. Обычно, такие системные аккаунты имеют идентификатор (uid) меньший 100, и у многих из них в качестве стартовой оболочки установлена /bin/false. Так как эта программа ничего не делает, кроме как выходит и возвращает код ошибки, это эффективно препятствует использованию этих аккаунтов в качестве обычных аккаунтов для логина - т.е. они предназначены только для внутрисистемного пользования.

/etc/shadow

Итак, сами пользовательские аккаунты определены в /etc/passwd . Системы Linux вдобавок к /etc/passwd содержат его файл-компаньон /etc/shadow . Он, в отличие от /etc/passwd , доступен для чтения только суперпользователю и содержит зашифрованную информацию о паролях. Взглянем на образец строки из /etc/shadow :

Каждая строка определяет информацию о пароле конкретного аккаунта, поля в ней разделены знаком ":". Первое поле определяет конкретный пользовательский аккаунт, которому соответствует данная «теневая» запись. Во втором поле содержится зашифрованный пароль. Оставшиеся поля описаны в таблице ниже:

Поле 3 - количество дней с 01.01.1970 до момента, когда пароль был изменен
поле 4 - количество дней до того, как будет разрешено сменить пароль («0» - «менять в любое время»)
поле 5 - количество дней до того, как система заставит пользователя сменить пароль ("-1" - «никогда»)
поле 6 - количество дней до истечения срока действия пароля, когда пользователь получит предупреждение об этом ("-1" - «не предупреждать»)
поле 7 - количество дней после истечения срока действия пароля, по прошествии которых аккаунт будет автоматически отключен системой ("-1" - «не отключать»)
поле 8 - количество дней, прошедшее с момента отключения этого аккаунта ("-1" - «этот аккаунт включен»)
поле 9 - зарезервировано для будущего использования

/etc/group

Теперь взглянем на файл /etc/group , который определяет группы в системе Linux. Вот примерная строка из него:

Drobbins:x:1000:

Формат полей файла /etc/group следующий: первое поле определяет имя группы, второе поле - это поле остаточного пароля, которое сейчас просто зарезервировано x, и третье поле определяет числовой идентификатор для конкретной группы. Четвертое поле (которое пусто в примере выше) определяет всех членов группы.

Вспомните, что в нашем образце строки из /etc/passwd есть «ссылка» на группу с идентификатором 1000. Мы сможем поместить пользователя drobbins в группу drobbins, даже несмотря на отсутствие имени drobbins в четвертом поле /etc/group.

Примечания о группах

Замечание насчет соответствия пользователей с группами: на некоторых системах каждый новый логин-аккаунт связан с группой, имеющей то же имя (и обычно идентификатор). На других системах все логин-аккаунты будут принадлежать к одной группе пользователей. Какой из этих методов выбрать зависит от вас. Создание соответствующей группы для каждого пользователя имеет преимущество в том, что позволяет им более легко контролировать их собственный доступ просто помещая доверенных друзей в свою личную группу.

Ручное создание пользователей и групп

Теперь, я покажу как создать аккаунты для пользователя и группы. Лучший путь узнать как это сделать это добавить нового пользователя в систему вручную. Для начала убедитесь что вашей переменной окружения EDITOR соответствует ваш любимый редактор:

# echo $EDITOR
vim

Если это не так, то вы можете установить переменную EDITOR, набрав что-то, вроде:

# export EDITOR=/usr/bin/emacs
# vipw

Теперь ваш редактор должен быть запущен с уже загруженным /etc/passwd экране. Изменяя системные файлы passwd и group обязательно используйте команды vipw и vigr. Они имеют повышенные меры предосторожности, оберегая ваши файлы от участи быть испорченными.

Редактирование /etc/passwd

Итак, у вас уже есть готовый файл /etc/passwd, добавьте теперь следующую строку:

Testuser:x:3000:3000:LPI tutorial test user:/home/testuser:/bin/false

Мы только что добавили пользователя «testuser» с идентификатором 3000. Мы определили его в группу с таким же идентификатором, которую еще не создали. Но мы можем добавить его к уже имеющейся группе пользователей, если нужно. У этого пользователя установлен комментарий, гласящий «LPI tutorial test user», домашний каталог установлен как "/home/testuser", а командная оболочка - как "/bin/false", в целях безопасности. Если бы мы создавали не тестовый аккаунт, мы бы установили командную оболочку как "/bin/bash". Отлично, теперь сохраните файл и выходите.

Редактирование /etc/shadow

Сейчас нам нужно добавить запись в /etc/shadow для этого пользователя. Для этого наберите vipw -s . Вас как всегда встретит ваш любимый редактор в котором уже открыт файл /etc/shadow . Теперь скопируйте строку существующего пользовательского аккаунта (того, у которого есть пароль и запись которого длиннее стандартных записей системных аккаунтов)

Drobbins:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0

Замените имя пользователя в скопированной строке на имя вашего пользователя и убедитесь что все поля (особенно старый пароль) установлены как вам надо:

Testuser:$1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0

Теперь сохраните и закройте.

Установка пароля

Вы вернетесь к командной строке. Теперь, самое время задать пароль для вашего нового пользователя.

# passwd testuser
Enter new UNIX password: (enter a password for testuser)
Retype new UNIX password: (enter testuser"s new password again)

Редактирование /etc/group

Теперь /etc/passwd и /etc/shadow готовы и самое время как следует настроить /etc/group . Для этого, наберите:

# vigr

Перед вами появится ваш /etc/group файл, готовый для редактирования. Итак, если ранее вы решили добавить созданного пользователя к уже имеющейся группе, то вам не понадобиться создавать новую группу в /etc/groups . Если это не так, вам нужно добавить новую группу для этого пользователя, введите следующую строку:

Testuser:x:3000:

Теперь сохраните и закройте.

Создание домашней директории

Мы почти закончили. Выполните следующие команды для создания домашнего каталога testuser"а:

# cd /home
# mkdir testuser
# chown testuser:testuser testuser
# chmod o-rwx testuser

Наш каталог пользователя на месте и аккаунт готов к использованию. Уже почти готово. Если вы собираетесь использовать этот аккаунт, вам надо будет воспользоваться vipw для смены стартовой оболочки на /bin/bash , так, чтобы пользователь смог войти.

Утилиты администрирования учетных записей

Вы уже знаете как вручную добавить новые аккаунты и группы, давайте же теперь рассмотрим различные, экономящие время, утилиты для управления аккаунтами под Linux. Из-за некоторых ограничений мы не будем рассматривать множество деталей, описывающих эти команды. Запомните - вы всегда можете получить больше информации о какой-либо команде если посмотрите её man-страничку. Если вы планируете сдавать LPIC 101 экзамен, вам следует провести побольше времени на ознакомление с каждой из этих команд.

Newgrp - По умолчанию, любой файл, который создает пользователь, сразу же присваивается к группе, в которой он состоит, определенной в /etc/passwd . Если пользователь принадлежит к другим группам, он или она может набрать newgrp thisgroup чтобы стать членом группы thisgroup. Затем, любые новые созданные файлы унаследуют членство в thisgroup.
chage - Команда chage используется для просмотра и изменения настроек срока действия паролей, сохраненных в /etc/shadow.
gpasswd - Основная утилита управления группами
groupadd/groupdel/groupmod - Используются для добавления/удаления/изменения групп в /etc/group
useradd/userdel/usermod - Используются для добавления/удаления/изменения пользователей в /etc/passwd . Эти команды могут выполнять и другие полезные функции. Смотрите man для получения дополнительной информации.
pwconv/grpconv - Используются для преобразования passwd и group файлов старого образца в новые shadow passwords. Фактически, все Linux системы уже используют shadow passwords, так что вам никогда не придется использовать эти команды.

Перевод выполнил коллективный разум с помощью notabenoid.com . Спасибо следующим benoid-юзерам (в алфавитном порядке): kindacute , nekjine , Rich . А также инициатору всей серии переводов, VBart .

Продолжение следует...

Об авторах

Daniel Robbins

Дэниэль Роббинс - основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава

Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: