sonyps4.ru

Управление пользователями. Управление пользователями Создание нового пользователя в ubuntu

Поскольку Linux — система многопользовательская, вопрос об организации разграничения доступа к файлам и каталогам является одним из существенных вопросов, которые должна решать операционная система. Механизмы разграничения доступа, разработанные для системы UNIX в 70-х годах (возможно, впрочем, они предлагались кем-то и раньше), очень просты, но они оказались настолько эффективными, что просуществовали уже более 30 лет и по сей день успешно выполняют стоящие перед ними задачи.

В основе механизмов разграничения доступа лежат имена пользователей и имена групп пользователей. Вы уже знаете, что в Linux каждый пользователь имеет уникальное имя, под которым он входит в систему (логируется). Кроме того, в системе создается некоторое число групп пользователей, причем каждый пользователь может быть включен в одну или несколько групп. Создает и удаляет группы суперпользователь, он же может изменять состав участников той или иной группы. Члены разных групп могут иметь разные права по доступу к файлам, например, группа администраторов может иметь больше прав, чем группа программистов.

В индексном дескрипторе каждого файла записаны имя так называемого владельца файла и группы, которая имеет права на этот файл. Первоначально, при создании файла его владельцем объявляется тот пользователь, который этот файл создал. Точнее — тот пользователь, от чьего имени запущен процесс, создающий файл. Группа тоже назначается при создании файла — по идентификатору группы процесса, создающего файл. Владельца и группу файла можно поменять в ходе дальнейшей работы с помощью команд chown и chgrp (подробнее о них будет сказано чуть позже).

Теперь давайте еще раз выполним команду ls -l . Но зададим ей в качестве дополнительного параметра имя конкретного файла, например, файла, задающего саму команду ls . (Обратите, кстати, внимание на эту возможность команды ls -l — получить информацию о конкретном файле, а не о всех файлах каталога сразу).

$ ls -l /bin/ls

Вы видите, что в данном случае владельцем файла является пользователь root и группа root. Но нас сейчас в выводе этой команды больше интересует первое поле, определяющее тип файла и права доступа к файлу. Это поле в приведенном примере представлено цепочкой символов -rwxr-xr-x . Эти символы можно условно разделить на 4 группы.

Первая группа, состоящая из единственного символа, определяет тип файла. Этот символ в соответствии с возможными типами файлов, рассмотренными в предыдущем разделе, может принимать такие значения:

    - = — обычный файл;

    d = — каталог;

    b = — файл блочного устройства;

    c = — файл символьного устройства;

    s = — доменное гнездо (socket);

    p = — именованный канал (pipe);

    l = — символическая ссылка (link).

Далее следуют три группы по три символа, которые и определяют права доступа к файлу соответственно для владельца файла, для группы пользователей, которая сопоставлена данному файлу, и для всех остальных пользователей системы. В нашем примере права доступа для владельца определены как rwx, что означает, что владелец (root ) имеет право читать файл (r), производить запись в этот файл (w), и запускать файл на выполнение (x). Замена любого из этих символов прочерком будет означать, что пользователь лишается соответствующего права. В том же примере мы видим, что все остальные пользователи (включая и тех, которые вошли в группу root ) лишены права записи в этот файл, т. е. не могут файл редактировать и вообще как-то изменять.

Вообще говоря, права доступа и информация о типе файла в UNIX-системах хранятся в индексных дескрипторах в отдельной структуре, состоящей из двух байтов, т. е. из 16 бит (это естественно, ведь компьютер оперирует битами, а не символами r, w, x). Четыре бита из этих 16-ти отведены для кодированной записи о типе файла. Следующие три бита задают особые свойства исполняемых файлов, о которых мы скажем чуть позже. И, наконец, оставшиеся 9 бит определяют права доступа к файлу. Эти 9 бит разделяются на 3 группы по три бита. Первые три бита задают права пользователя, следующие три бита — права группы, последние 3 бита определяют права всех остальных пользователей (т. е. всех пользователей, за исключением владельца файла и группы файла).

При этом, если соответствующий бит имеет значение 1, то право предоставляется, а если он равен 0, то право не предоставляется. В символьной форме записи прав единица заменяется соответствующим символом (r, w или x), а 0 представляется прочерком.

Право на чтение (r) файла означает, что пользователь может просматривать содержимое файла с помощью различных команд просмотра, например, командой more или с помощью любого текстового редактора. Но, подредактировав содержимое файла в текстовом редакторе, вы не сможете сохранить изменения в файле на диске, если не имеете права на запись (w) в этот файл. Право на выполнение (x) означает, что вы можете загрузить файл в память и попытаться запустить его на выполнение как исполняемую программу. Конечно, если в действительности файл не является программой (или скриптом shell), то запустить этот файл на выполнение не удастся, но, с другой стороны, даже если файл действительно является программой, но право на выполнение для него не установлено, то он тоже не запустится.

Вот мы и узнали, какие файлы в Linux являются исполняемыми! Как видите, расширение имени файла тут не при чем, все определяется установкой атрибута "исполняемый", причем право на исполнение может быть предоставлено не всем!

Если выполнить ту же команду ls -l , но в качестве последнего аргумента ей указать не имя файла, а имя каталога, мы увидим, что для каталогов тоже определены права доступа, причем они задаются теми же самыми символами rwx. Например, выполнив команду ls -l / , мы увидим, что каталогу bin соответствует строка:

Естественно, что по отношению к каталогам трактовка понятий "право на чтение", "право на запись" и "право на выполнение" несколько изменяется. Право на чтение по отношению к каталогам легко понять, если вспомнить, что каталог — это просто файл, содержащий список файлов в данном каталоге. Следовательно, если вы имеете право на чтение каталога, то вы можете просматривать его содержимое (этот самый список файлов в каталоге). Право на запись тоже понятно — имея такое право, вы сможете создавать и удалять файлы в этом каталоге, т. е. просто добавлять в каталог или удалять из него запись, содержащую имя какого-то файла и соответствующие ссылки. Право на выполнение интуитивно менее понятно. Оно в данном случае означает право переходить в этот каталог. Если вы, как владелец, хотите дать доступ другим пользователям на просмотр какого-то файла в своем каталоге, вы должны дать им право доступа в каталог, т. е. дать им "право на выполнение каталога". Более того, надо дать пользователю право на выполнение для всех каталогов, стоящих в дереве выше данного каталога. Поэтому в принципе для всех каталогов по умолчанию устанавливается право на выполнение как для владельца и группы, так и для всех остальных пользователей. И, уж если вы хотите закрыть доступ в каталог, то лишите всех пользователей (включая группу) права входить в этот каталог. Только не лишайте и себя такого права, а то придется обращаться к суперпользователю! (Примеч.11)

После прочтения предыдущего абзаца может показаться, что право на чтение каталога не дает ничего нового по сравнению с правом на выполнение. Однако разница в этих правах все же есть. Если задать только право на выполнение, вы сможете войти в каталог, но не увидите там ни одного файла (этот эффект особенно наглядно проявляется в том случае, если вы пользуетесь каким-то файловым менеджером, например, программой Midnight Commander). Если вы имеете право доступа в каком-то из подкаталогов этого каталога, то вы можете перейти в него (командой cd ), но, как говорится "вслепую", по памяти, потому что списка файлов и подкаталогов текущего каталога вы не увидите.

Алгоритм проверки прав пользователя при обращении к файлу можно описать следующим образом. Система вначале проверяет, совпадает ли имя пользователя с именем владельца файла. Если эти имена совпадают (т. е. владелец обращается к своему файлу), то проверяется, имеет ли владелец соответствующее право доступа: на чтение, на запись или на выполнение (не удивляйтесь, суперпользователь может лишить некоторых прав и владельца файла). Если право такое есть, то соответствующая операция разрешается. Если же нужного права владелец не имеет, то проверка прав, предоставляемых через группу или через группу атрибутов доступа для остальных пользователей, уже даже не проверяются, а пользователю выдается сообщение о невозможности выполнения затребованного действия (обычно что-то вроде "Permission denied").

Если имя пользователя, обращающегося к файлу, не совпадает с именем владельца, то система проверяет, принадлежит ли владелец к группе, которая сопоставлена данному файлу (далее будем просто называть ее группой файла). Если принадлежит, то для определения возможности доступа к файлу используются атрибуты, относящиеся к группе, а на атрибуты для владельца и всех остальных пользователей внимания не обращается. Если же пользователь не является владельцем файла и не входит в группу файла, то его права определяются атрибутами для остальных пользователей. Таким образом, третья группа атрибутов, определяющих права доступа к файлу, относится ко всем пользователям, кроме владельца файла и пользователей, входящих в группу файла.

Для изменения прав доступа к файлу используется команда chmod . Ее можно использовать в двух вариантах. В первом варианте вы должны явно указать, кому какое право даете или кого этого права лишаете:

$ chmod wXp имя-файла

где вместо символа w подставляется

    либо символ u (т. е. пользователь, который является владельцем);

    либо g (группа);

    либо o (все пользователи, не входящие в группу, которой принадлежит данный файл);

    либо a (все пользователи системы, т. е. и владелец, и группа, и все остальные).

Вместо X ставится:

    либо + (предоставляем право);

    либо - (лишаем соответствующего права);

    либо = (установить указанные права вместо имеющихся),

Вместо p — символ, обозначающий соответствующее право:

    r (чтение);

    w (запись);

    x (выполнение).

Вот несколько примеров использования команды chmod :

$ chmod a+x file_name

предоставляет всем пользователям системы право на выполнение данного файла.

$ chmod go-rw file_name

удаляет право на чтение и запись для всех, кроме владельца файла.

$ chmod ugo+rwx file_name

дает всем права на чтение, запись и выполнение.

Если опустить указание на то, кому предоставляется данное право, то подразумевается, что речь идет вообще обо всех пользователях, т. е. вместо $ chmod a+x file_name

можно записать просто

$ chmod +x file_name

Второй вариант задания команды chmod (он используется чаще) основан на цифровом представлении прав. Для этого мы кодируем символ r цифрой 4, символ w — цифрой 2, а символ x — цифрой 1. Для того, чтобы предоставить пользователям какой-то набор прав, надо сложить соответствующие цифры. Получив, таким образом, нужные цифровые значения для владельца файла, для группы файла и для всех остальных пользователей, задаем эти три цифры в качестве аргумента команды chmod (ставим эти цифры после имени команды перед вторым аргументом, который задает имя файла). Например, если надо дать все права владельцу (4+2+1=7), право на чтение и запись — группе (4+2=6), и не давать никаких прав остальным, то следует дать такую команду:

$ chmod 760 file_name

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

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

Чтобы завершить рассказ о правах доступа к файлам, надо рассказать еще о трех возможных атрибутах файла, устанавливаемых с помощью той же команды chmod . Это те самые атрибуты для исполняемых файлов, которые в индексном дескрипторе файла в двухбайтовой структуре, определяющей права на файл, занимают позиции 5-7, сразу после кода типа файла.

Первый из этих атрибутов — так называемый "бит смены идентификатора пользователя". Смысл этого бита состоит в следующем.

Обычно, когда пользователь запускает некоторую программу на выполнение, эта программа получает те же права доступа к файлам и каталогам, которые имеет пользователь, запустивший программу. Если же установлен "бит смены идентификатора пользователя", то программа получит права доступа к файлам и каталогам, которые имеет владелец файла программы (таким образом, рассматриваемый атрибут лучше называть "битом смены идентификатора владельца"). Это позволяет решать некоторые задачи, которые иначе было бы трудно выполнить. Самый характерный пример — команда смены пароля passwd . Все пароли пользователей хранятся в файле /etc/passwd, владельцем которого является суперпользователь root . Поэтому программы, запущенные обычными пользователями, в том числе команда passwd , не могут производить запись в этот файл. А, значит, пользователь как бы не может менять свой собственный пароль. Но для файла /usr/bin/passwd установлен "бит смены идентификатора владельца", каковым является пользователь root . Следовательно, программа смены пароля passwd запускается с правами root и получает право записи в файл /etc/passwd (уже средствами самой программы обеспечивается то, что пользователь может изменить только одну строку в этом файле).

Установить "бит смены идентификатора владельца" может суперпользователь с помощью команды

# chmod +s file_name

Аналогичным образом работает "бит смены идентификатора группы".

Еще один возможный атрибут исполняемого файла — это "бит сохранения задачи" или "sticky bit" (дословно — "бит прилипчивости"). Этот бит указывает системе, что после завершения программы надо сохранить ее в оперативной памяти. Удобно включить этот бит для задач, которые часто вызываются на выполнение, так как в этом случае экономится время на загрузку программы при каждом новом запуске. Этот атрибут был необходим на старых моделях компьютеров. На современных быстродействующих системах он используется редко.

Если используется цифровой вариант задания атрибутов в команде chmod , то цифровое значение этих атрибутов должно предшествовать цифрам, задающим права пользователя:

# chmod 4775 file_name

При этом веса этих битов для получения нужного суммарного результата задаются следующим образом:

    4 — "бит смены идентификатора пользователя",

    2 — "бит смены идентификатора группы",

    1 — "бит сохранения задачи (sticky bit)".

Если какие-то из этих трех битов установлены в 1, то несколько изменяется вывод команды ls -l в части отображения установленных атрибутов прав доступа. Если установлен в 1 "бит смены идентификатора пользователя", то символ "x" в группе, определяющей права владельца файла, заменяется символом "s". Причем, если владелец имеет право на выполнение файла, то символ "x" заменяется на маленькое "s", а если владелец не имеет права на выполнение файла (например, файл вообще не исполняемый), то вместо "x" ставится "S". Аналогичные замены имеют место при задании "бита смены идентификатора группы", но заменяется символ "x" в группе атрибутов, задающих права группы. Если равен 1 "бит сохранения задачи (sticky bit)", то заменяется символ "x" в группе атрибутов, определяющей права для всех остальных пользователей, причем "x" заменяется символом "t", если все пользователи могут запускать файл на выполнение, и символом "T", если они такого права не имеют.

Таким образом, хотя в выводе команды ls -l не предусмотрено отдельных позиций для отображения значений битов смены идентификаторов и бита сохранения задачи, соответствующая информация выводится. Вот небольшой пример того, как это будет выглядеть:

# ls -l prim1

В. Костромин (kos at rus-linux dot net) - 4.5. Права доступа к файлам и каталогам

В этой инструкции мы рассмотрим как удалить пользователя Linux вместе с его данными и домашним каталогом.

Если вы системный администратор в крупной компании то, скорее всего, удаление пользователей linux для вас довольно частая задача. После того как аккаунт становится ненужным или пользователь ушел из организации, его аккаунт нужно удалить, чтобы не оставлять дыр в безопасности.

При удалении пользователей Linux также важно удалить их домашний каталог, чтобы освободить место на устройстве хранения для новых пользователей и их файлов. Сначала мы рассмотрим как удалить пользователя Linux с помощью терминала, потом поговорим о том, как это делается в графическом интерфейсе одного из самых популярных дистрибутивов - Ubuntu.

Перед тем как переходить к действиям в реальной среде нужно немного попрактиковаться, давайте создадим два пользователя losst и losst1, вместе с домашними каталогами, а затем уже будем их удалять:

adduser losst
$ passwd losst

adduser losst1
$ passwd losst1

Здесь команда adduser используется для создания учетной записи пользователя, а passwd для создания пароля.

Давайте рассмотрим, как удалить пользователя Linux в терминале. Для этого используется команда - deluser в debian и производных системах, а в RedHat - userdel. Рассмотрим подробнее эти две утилиты.

Описание deluser

Синтаксис команды deluser очень простой:

$ deluser параметры пользователь

Настройки команды deluser находятся в файле /etc/deluser.conf, среди прочих настроек там указанно что нужно делать с домашней папой и файлами пользователя.

Вы можете посмотреть и изменить эти настройки выполнив команду:

vi /etc/deluser.conf

Рассмотрим подробнее эти настройки:

  • REMOVE_HOME - удалять домашний каталог пользователя
  • REMOVE_ALL_FILES - удалить все файлы пользователя
  • BACKUP - выполнять резервное копирование файлов пользователя
  • BACKUP_TO - папка для резервного копирования
  • ONLY_IF_EMPTY - удалить группу пользователя если она пуста.

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

Поддерживаются такие параметры, они аналогичны настройкам, но тут больше вариантов:

  • --system - удалять только если это системный пользователь
  • --backup - делать резервную копию файлов пользователя
  • --backup-to - папка для резервных копий
  • --remove-home - удалять домашнюю папку
  • --remove-all-files - удалять все файлы пользователя в файловой системе

Описание userdel

Утилита userdel работает немного по-другому, файла настроек здесь нет, но есть опции, с помощью которых можно сообщить утилите что нужно сделать. Синтаксис аналогичный:

$ userdel параметры пользователь

  • -f, --force - принудительное удаление, даже если пользователь еще залогинен
  • -r, --remove - удалить домашнюю директорию пользователя и его файлы в системе.
  • -Z - удалить все SELinux объекты для этого пользователя.

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

Блокировка учетной записи пользователя

Для блокировки учетной записи пользователя можно использовать утилиту passwd. Это запретит пользователю доступ к системе и предотвратит запуск новых процессов:

Выполните команду passwd с параметром --lock:

passwd --lock losst

passwd: информация об истечении срока действия пароля изменена.

Уничтожить все запущенные процессы пользователя

Теперь давайте найдем все запущенные от имени пользователя процессы и завершим их.

Найдем процессы с помощью pgrep:

Посмотреть подробнее, что это за процессы можно передав pid, каждого из них в команду ps, вот так:

ps -f --pid $(pgrep -u losst)

UID PID PPID C STIME TTY STAT TIME CMD
losst 14684 14676 0 22:15 pts/2 S 0:00 -bash
losst 14735 14684 0 22:15 pts/2 S+ 0:00 vi text

Теперь, когда вы убедились, что там нет ничего важного, можно уничтожить все процессы с помощью команды killall:

Killall -9 -u losst

Опция -9 говорит программе, что нужно отправить этим процессам сигнал завершения SIGKILL, а -u задает имя пользователя.

В основанных на Red Hat системах, для использования killall необходимо будет установить пакет psmisc:

sudo yum install psmisc

Резервное копирование данных пользователя

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

tar jcvf /user-backups/losst-backup.tar.bz2 /home/losst

Удаление учетной записи пользователя

Теперь, когда все подготовлено, начинаем удаление пользователя linux. На всякий случай укажем явно, что нужно удалять файлы пользователя и домашнюю директорию. Для Debian:

deluser --remove-home losst

userdel --remove losst

Если нужно удалить все файлы, принадлежащие пользователю в системе используйте опцию --remove-all-files, только будьте с ней осторожны, так и важные файлы можно затереть:

deluser --remove-all-files losst

Теперь пользователь полностью удален, вместе со своими файлами и домашней директорией из вашей системы.

Удаление пользователя в Ubuntu

Откройте Параметры системы :

Откройте пункт Учетные записи :

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

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

В открывшимся окне можно выбрать, что нужно сделать с файлами пользователя:

Естественно, будет удаленна только домашняя папка, обо всех файлах речь не идет. И для корректного удаления пользователь должен быть не работать в системе.

Выводы

Удалить пользователя в linux не так уж сложно, независимо от того где это нужно сделать, на сервере или домашнем компьютере. Конечно, графический интерфейс более удобен, но в терминал, как всегда, предлагает больше возможностей. Если у вас есть еще какие-нибудь идеи по этому поводу, напишите в комментариях!

В операционной системе Linux есть много отличных функций безопасности, но она из самых важных - это система прав доступа к файлам. Linux, как последователь идеологии ядра Linux в отличие от Windows, изначально проектировался как многопользовательская система, поэтому права доступа к файлам в linux продуманы очень хорошо.

И это очень важно, потому что локальный доступ к файлам для всех программ и всех пользователей позволил бы вирусам без проблем уничтожить систему. Но новым пользователям могут показаться очень сложными новые права на файлы в linux, которые очень сильно отличаются от того, что мы привыкли видеть в Windows. В этой статье мы попытаемся разобраться в том как работают права файлов в linux, а также как их изменять и устанавливать.

Изначально каждый файл имел три параметра доступа. Вот они:

  • Чтение - разрешает получать содержимое файла, но на запись нет. Для каталога позволяет получить список файлов и каталогов, расположенных в нем;
  • Запись - разрешает записывать новые данные в файл или изменять существующие, а также позволяет создавать и изменять файлы и каталоги;
  • Выполнение - вы не можете выполнить программу, если у нее нет флага выполнения. Этот атрибут устанавливается для всех программ и скриптов, именно с помощью него система может понять, что этот файл нужно запускать как программу.

Но все эти права были бы бессмысленными, если бы применялись сразу для всех пользователей. Поэтому каждый файл имеет три категории пользователей, для которых можно устанавливать различные сочетания прав доступа:

  • Владелец - набор прав для владельца файла, пользователя, который его создал или сейчас установлен его владельцем. Обычно владелец имеет все права, чтение, запись и выполнение.
  • Группа - любая группа пользователей, существующая в системе и привязанная к файлу. Но это может быть только одна группа и обычно это группа владельца, хотя для файла можно назначить и другую группу.
  • Остальные - все пользователи, кроме владельца и пользователей, входящих в группу файла.

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

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

Специальные права доступа к файлам в Linux

Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты. Рассмотрим эти полномочия подробнее.

  • SUID - если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя;
  • SGID - этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папок;
  • Sticky-bit - этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.

Теперь давайте рассмотрим как посмотреть и изменить права на файлы в linux.

Как посмотреть права доступа к файлам в Linux

Конечно, вы можете посмотреть права доступа к файлам в Linux с помощью файлового менеджера. Все они поддерживают эту функцию, но так вы получите неполную информацию. Для максимально подробной информации обо всех флагах, в том числе специальных, нужно использовать команду ls с параметром -l. Все файлы из каталога будут выведены в виде списка, и там будут показаны все атрибуты и биты.

Чтобы узнать права на файл linux выполните такую команду, в папке где находится этот файл:

За права файлов в linux тут отвечают черточки. Первая это тип файла, который рассмотрен в отдельной статье. Дальше же идут группы прав сначала для владельца, для группы и для всех остальных. Всего девять черточек на права и одна на тип.

Рассмотрим подробнее, что значат условные значения флагов прав:

  • --- - нет прав, совсем;
  • --x - разрешено только выполнение файла, как программы но не изменение и не чтение;
  • -w- - разрешена только запись и изменение файла;
  • -wx - разрешено изменение и выполнение, но в случае с каталогом, вы не можете посмотреть его содержимое;
  • r-- - права только на чтение;
  • r-x - только чтение и выполнение, без права на запись;
  • rw- - права на чтение и запись, но без выполнения;
  • rwx - все права;
  • --s - установлен SUID или SGID бит, первый отображается в поле для владельца, второй для группы;
  • --t - установлен sticky-bit, а значит пользователи не могут удалить этот файл.

В нашем примере, файл test1 имеет типичные разрешения для программ, владелец может все, группа только чтение и выполнение, а все остальные - только выполнение. Для test2 дополнительно установлен флаг SUID и SGID. А для папки test3 установлен Sticky-bit. Файл test4 доступный всем. Теперь вы знаете как посмотреть права на файл linux.

Как изменить права файла в Linux

Чтобы изменить права на файл в linux вы можете использовать утилиту chmod. Она позволяет менять все флаги, включая специальные. Рассмотрим ее синтаксис:

$ chmod опции категория действие флаг файл

Опции сейчас нас интересовать не будут, разве что только одна. С помощью опции -R вы можете заставить программу применять изменения ко всем файлам и каталогам рекурсивно.

  • u - владелец файла;
  • g - группа файла;
  • o - другие пользователи.

Действие может быть одно из двух, либо добавить флаг "+", либо убрать флаг - "-". Что касается самих прав доступа, то они аналогичны выводу утилиты ls: r - чтение, w - запись, x - выполнение, s - suid/sgid, в зависимости от категории, для которой вы его устанавливаете, t - устанавливает sticky-bit. Например, всем пользователям полный доступ к файлу test5:

chmod ugo+rwx test5

Или заберем все права у группы и остальных пользователей:

chmod go-rwx test5

Дадим группе право на чтение и выполнение:

chmod g+rx test5

Остальным пользователям только чтение:

Для файла test6 установим SUID:

А для test7 - SGID:

Посмотрим что получилось:

Как видите, изменить права на файл в linux очень просто. К тому же вы можете изменить основные права с помощью файлового менеджера.

Выводы

Вот и все, теперь вы знаете не только что такое права доступа к файлам в linux, но и как их посмотреть, и даже как их изменить. Это очень важная тема, в которой действительно стоит разобраться новичкам, чтобы использовать свою систему более полноценно. Если у вас остались вопросы, спрашивайте в комментариях!

На завершение хочу предложить неплохое видео про права доступа в linux:

Теперь немного поговорим о разграничении прав доступа к различным элементам. Описанный в этой статье механизм является основополагающим в Linux и соответственно в Ubuntu, так что читайте внимательно.

Пользователи и группы

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

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

Например, в Ubuntu есть одна очень полезная группа: admin . Любой член этой группы получает неограниченные административные привилегии. Я уже рассказывал про роль администратора в Ubuntu, так что если вы уже успели забыть кто это, можете освежить свои знания. Создаваемый при установке Ubuntu пользователь автоматически становится членом группы admin .

Управлять пользователями и группами можно с помощью специального инструмента, находящегося в меню Система→Администрирование→Пользователи и группы .

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

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

Любой файл и каталог в Linux имеет пользователя-владельца и группу-владельца. То есть любой файл и каталог принадлежит какому-то пользователю системы и какой-то группе. Кроме того, у любого файла и каталога есть три группы прав доступа: одна для пользователя-владельца, одна для членов группы-владельца и одна для всех остальных пользователей системы. Каждая группа состоит из прав на чтение, запись и запуск файла на исполнение. Для каталогов право на исполнение и право на чтение всегда идут вместе и означают одно и то же.

То есть изменяя владельцев того или иного файла и различные группы прав доступа к нему можно гибко управлять доступом к этому файлу. Например, сделав себя владельцем некоего файла и полностью запретив к нему доступ всем, кроме пользователя-владельца, можно скрыть содержимое и запретить изменение этого файла для всех других пользователей. Такая же штука проходит и с каталогами. Можно, например, запретить записывать файлы в каталог, или вообще скрыть его содержимое от посторонних глаз.

В данный момент нас интересует одно крайне важное следствие из подобной организации прав доступа в системе. Конкретному пользователю Ubuntu принадлежит только его домашний каталог и все его содержимое. В системе этот каталог находится по адресу /home/имя_пользователя. Все остальные файлы системы, включая все приложения, системные настройки и т.д., располагающиеся вне /home , принадлежат преимущественно root . Помните, я говорил, что root - это пользователь с неограниченными привилегиями, непосредственное использование которого в Ubuntu запрещено. Так вот, все системные файлы и каталоги принадлежат root недаром, им всем выставлены права на изменение только для пользователя-владельца, таким образом никто, кроме root , не может вмешаться в работу системы и что-то поменять в системных файлах.

Это конечно очень хорошо для безопасности, но что же делать, если вам нужно изменить какие-нибудь системные файлы? Тут есть два пути : во-первых, большинство необходимых пользователю системных настроек можно изменить обладая правами администратора из графических конфигураторов, это самый предпочтительный способ. Ну а во-вторых можно временно повысить свои права до root и делать вообще всё, что угодно.

Делается это с помощью утилиты sudo и её производных. sudo - это консольная утилита. Она позволяет «прикинуться» рутом при выполнении конкретной команды, таким образом, получив неограниченные права. Например, команда

Sudo aptitude update

обновит данные о доступных вам приложениях (зачем это нужно я объясню в статье про управление программами). Сама по себе команда

Aptitude update

работает, только если её запускает root . Однако запуская её с помощью sudo вы выдаёте себя за рута, рутом при этом не являясь. Естественно, для использования sudo вы должны обладать правами администратора . При этом при запуске команды через sudo система спросит у вас ваш пароль, однако в целях безопасности при его вводе вам не будет ничего показываться, ни звёздочек, ни чёрточек, ни птичек, ничего. Не пугайтесь, так и надо, просто вводите до конца и нажимайте Enter . Если вы являетесь администратором и правильно ввели пароль, то указанная после sudo команда исполнится от имени root .

Через терминал можно сделать всё, что угодно, так что имея возможность стать рутом вы можете выполнить все необходимые вам настройки. Однако иногда удобно использовать графические приложения, при этом обладая правами рута. Например, если вам надо скопировать файлы в системные каталоги. Для запуска графических приложений от имени root откройте диалог запуска GNOME сочетанием клавиш Alt + F2 и введите

Gksudo имя_приложения

Например, для запуска файлового менеджера Nautlus надо ввести

Gksudo nautilus

Через запущенный таким образом Nautilus вы сможете как угодно изменять любые файлы на компьютере.

Будьте предельно внимательны при использовании Nautilus с правами root ! Вы сможете безо всяких предупреждений безвозвратно удалить любой системный файл, что спокойно может привести к неработоспособности всей системы.

Редактирование конфигурационных файлов

Важнейшим примером применения вышеописанной технологии «прикидывания» рутом является редактирование конфигурационных файлов системы. Я уже говорил, что все настройки системы и всех приложений в Linux хранятся в виде текстовых файлов. Так вот, редактировать вы можете только файлы, принадлежащие вам, то есть только настройки, касающиеся вашего пользователя. А для редактирования системных параметров вам понадобятся права администратора.

Многие файлы вы сможете открыть, но не сможете что-либо в них изменить, вам просто не будет доступна операция сохранения:

Конечно, можно открывать конфигурационные файлы с правами root через диалог запуска приложений командой

Gksudo gedit /путь/до/файла

Gedit - это стандартный текстовый редактор Ubuntu.

Однако в диалоге запуска не работает автодополнение, следовательно путь до файла вам придётся набирать вручную, что не всегда удобно. Поэтому можно для запуска текстового редактора от имени суперпользователя использовать терминал, например:

Учтите, что sudo - это чисто консольная утилита, поэтому использовать её в диалоге запуска приложений нельзя, хотя из терминала через неё можно запускать графические приложения. А gksudo наоборот, утилита графическая, поэтому её не стоит использовать в терминале, хотя это и не запрещено.

В итоге откроется редактор с возможностью сохранения изменений.

Приветствую Всех!

В этой статье я расскажу как добавить нового пользователя, изменить его права или сменить пароль пользователя в Linux Ubuntu. А также как сделать «Учетные записи» при помощи графической утилиты или из командной строки.

Рассмотрим первый способ добавить новую учетную запись.

Через панель быстрого запуска открываем «Параметры системы» и выбираем «Учетные записи».

Теперь необходимо получить дополнительные привилегии. Для этого нажимаем кнопку «Разблокировать».

Вводим свой пароль и нажимаем кнопку «Аутентифицировать»

Чтобы добавить нового пользователя нажимаем на знак «+»

В открывшейся форме выбираем тип учетной записи. В этой штатной утилите можно создать пользователей двух типов:

  • Обычный
  • Администратор

В большинстве случаев достаточно «Обычного» типа учетной записи. Но если в дальнейшем выяснится, что этому пользователю нужны дополнительные привилегии, то достаточно будет вернуться в утилиту «Учетные записи» и сменить тип учетной записи.

Выбираем «Обычный» тип учетной записи, добавляем имя пользователя и нажимаем кнопку «Добавить».

У нас появилась наша новая учетная запись, но она не активирована пока не будет задан пароль.

Включаем новую учетную запись, нажав в пункте «Пароль»:

Пользуясь подсказкой придумываем «Стойкий» пароль, после чего повторно вводим его в поле «Подтвердить пароль». Активируем новую учетную запись нажав кнопку «Изменить».

Чтобы удалить ненужную учетную запись, ее необходимо выделить и нажать знак «-»

Откроется окно выбора способа удаления.

Есть два варианта:

  • c удалением домашнего каталога
  • либо с его сохранением.
    • Если файлы этого пользователя больше не нужны, то нажимаем «Удалить файлы»./p>

      Учетная запись и все файлы домашнего каталога удалены.

      А теперь рассмотрим второй способ добавить нового пользователя.

      Откроем терминал и запустим следующую команду.

      sudo adduser newusers

      Для получения дополнительных привилегий необходимо ввести пароль пользователя и нажать на клавиатуре клавишу «Enter».

      Повторно вводим пароль и нажимаем на клавиатуре клавишу «Enter».

      Добавляем необходимую информацию и если все указали правильно, то подтверждаем это набрав «Y» и нажимаем на клавиатуре клавишу «Enter».

      Но если нам нужен пользователь с правами «Администратора», то необходимо выполнить еще одну команду и добавить пользователя в необходимые группы (adm,cdrom,sudo,dip,plugdev,lpadmin,sambashare).

      sudo usermod -a -G adm,cdrom,sudo,dip,plugdev,lpadmin,sambashare newusers

      Чтобы посмотреть в какие группы входит пользователь выполним следующую команду.

      sudo id newusers

      Также очень просто сменить пароль любого пользователя. Набираем команду passwd и логин пользователя.

      sudo passwd newusers

      Вводим пароль нового пользователя и нажимаем на клавиатуре клавишу «Enter».

      Далее повторно вводим пароль и нажимаем на клавиатуре клавишу «Enter». Если все сделали правильно, то должны увидеть запись «пароль успешно обновлен». И теперь для входа в эту учетную запись необходимо вводить новый пароль.

      Удалить ненужного пользователя и его домашнюю папку тоже очень просто. Для этого набираем

      sudo userdel -r newusers

      К сожалению, вышеуказанная команда не отображает результатов своей работы. Но для того чтобы проверить остался ли у нас в системе пользователь newusers, мы можем воспользоваться другой командой.

      sudo id newusers

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

      Мы рассмотрели как можно добавить нового пользователя, сменить пароль, изменить его права, добавив в группы, а также как удалить пользователя. И если остались непонятные вопросы по данной теме и есть предложения, то прошу их писать в комментариях. Всем пока!



Загрузка...