Разное

Права пользователя linux: Права доступа к файлам в Linux

Содержание

Права доступа к файлам в Linux

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

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

Содержание статьи:

Основные права доступа к файлам в Linux

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

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

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

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

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

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

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

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

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

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

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

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

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

ls -l

За права файлов в 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

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

chmod o+r test5

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

chmod u+s test6

А для test7 — SGID:

chmod g+s test7

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

ls -l

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

Выводы

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

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

Как узнать, есть ли у пользователя права на sudo

Из этой статьи Вы узнаете, как узнать, является ли пользователь sudoer или нет. Вы также научитесь перечислять всех пользователей sudo в вашей системе Linux.

Хотите знать, есть ли у вас права sudo в вашей системе? Это легко проверить. Просто запустите любую команду с помощью sudo. Если у вас нет прав sudo, вы должны увидеть это в выводе:

standard@andreyex:~$ sudo -v
Sorry, user standard may not run sudo on andreyex.

 

Это круто! Но как насчет проверки, если какой-либо другой пользователь имеет права sudo? Вы можете это сделать. Позвольте нам показать вам, как.

 

Как проверить, есть ли у пользователя права sudo или нет

Есть несколько способов проверить, может ли пользователь Linux использовать sudo или нет. Вот пара из них.

 

Способ 1. Проверьте, является ли пользователь sudoer с помощью команды sudo

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

Чтобы проверить доступ sudo для пользователя, выполните следующую команду:

sudo -l -U user_name

 

Если пользователь может выполнить несколько или все команды с помощью sudo, вы должны увидеть вывод, подобный следующему:

Matching Defaults entries for terminator on test-server:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User terminator may run the following commands on test-server:
    (ALL : ALL) NOPASSWD: ALL

 

Как видите, пользователь terminator может запускать все команды с доступом sudo.  Если у пользователя нет прав sudo, вы должны увидеть вывод, подобный этому:

User terminator is not allowed to run sudo on test-server.

 

Если вы хотите проверить, есть ли у вас права sudoer и какие команды вы можете запускать с помощью sudo, вы можете использовать ту же команду, только не указывайте имя пользователя.

sudo -l

 

Вы знали?
Эта команда также показывает, какие команды запрещены для запуска с помощью sudo. Да это правильно. Вы можете настроить, какие команды можно запускать с помощью sudo, а какие нет. Это полезно в среде, где команде разработчиков необходимо запускать только определенные приложения с помощью sudo. Ограничение использования sudo только этими приложениями поможет системе избежать необоснованного неправомерного использования прав sudo со стороны разработчиков.

 

Способ 2. Проверьте, является ли пользователь частью группы sudo

Другой способ узнать, есть ли у пользователя доступ к sudo, – проверить, является ли указанный пользователь членом группы sudo.

Есть несколько способов проверить группы пользователей в Linux. Самый простой и мой любимый способ – использовать команду groups так:

groups user_name

 

Если вы видите группу ‘sudo’ в выходных данных, пользователь является членом группы sudo, и он должен иметь доступ sudo.

terminator@andreyex:~$ groups terminator
terminator : terminator sudo

 

Бонусный совет: как найти всех пользователей sudo в вашей системе

Итак, вы научились проверять, есть ли у пользователя доступ к sudo или нет. Как насчет перечисления всех sudoers в ваших системах Linux?

Это просто, если вы уже следили за статьей. Все, что вам нужно сделать, это перечислить членов группы sudo.

В Linux существует несколько способов достижения одного и того же результата. Неудивительно, что у вас есть несколько способов составить список членов группы в Linux.

Чтобы составить список всех пользователей sudo вашей системы, перечислите членов группы sudo следующим образом:

getent group sudo

 

список всех sudoers:

terminator@andreyex:~$ getent group sudo
sudo:x:27:terminator,seeni

 

Вот и все. Мы надеемся, теперь вы знаете, как узнать, есть ли у вас права sudo или есть ли у других пользователей права sudoer.

Если у вас есть другие интересные советы по этой теме, пожалуйста, оставьте комментарий ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Инструкция по настройке разграничений прав пользователей на Ubuntu

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

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

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

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

usermod -a -G sudo <имя пользователя>

Например:

usermod -a -G sudo cloud

После добавления в группу sudo пользователь становится администратором. Администраторы в linux могут настраивать систему, им предоставлен доступ ко всем файлам в каталоге /dev, им предоставлены привилегии близкие к возможностям суперпользователя.

Примечание: в Ubuntu 12.04 LTS и более поздних версиях существует привычная группа admin, которая поддерживается для совместимости с более ранними версиями ОС, а все администраторы добавляются в группу sudo.

Запрет вызова команд

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

Чтобы запретить выполнение определенных команд или утилит для всех кроме пользователя root, достаточно выполнить следующую команду:

sudo chmod o-x $(which <команда>)

Например:

sudo chmod o-x $(which ls)

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

После выполнения данной операции, все кроме root не смогут использовать команду ls:

ls

bash: /bin/ls: Permission denied

Чтобы запретить user1 использовать определенную команду, необходимо создать группу group2 и добавить в нее всех, кроме user1:

sudo groupadd group2

sudo useradd -G group2 <имя пользователя>

Затем изменить группу владельцев нужной команды на group2:

sudo chown :group2 <команда>

Например:

sudo chown :group2 $(which ls)

И наконец, запретить всем, кроме группы и владельца исполнять файл:

sudo chmod 754 $(which <команда>)

Например:

sudo chmod 754 $(which ls)

Редактирование файла /etc/sudoers

Файл /etc/sudoers определяет какие пользователи могут запускать sudo команды, а также управляет особыми правилами, например, нужен ли пользователю пароль для определенных команд. Файл состоит из псевдонимов (переменных) и пользовательских спецификаций.

Чтобы открыть файл /etc/sudoers используйте утилиту visudo, она специально предназначена для редактирования этого файла и позволяет не допустить ошибок в синтаксисе:

visudo

Файл будет открыт в текстовом редакторе по-умолчанию.

Стандартное содержимое файла выглядит следующим образом:


#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root	ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo	ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers. d

Примечание: здесь параметр Defaults имеет несколько значений:

  1. env_reset — сбрасывает все пользовательские переменные;
  2. mail_badpass — сообщает системе отправлять уведомления о неудачных попытках ввода пароля sudo пользователю mailto. По умолчанию это учетная запись root.
  3. secure_path — пути, по которым операционная система будет искать файлы, используемые для операций sudo.

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

%sudo ALL=(ALL:ALL) ALL

  1. %sudo — имя пользователя или группа, к которой нужно применить правило (имя группы указывается после символа %, имя пользователя без).
  2. <>Первое ALL означает, что правило применяется ко всем IP-адресам, второе ALL, что указанный пользователь может запускать команды в сессии любого пользователя, третье ALL означает, что указанный пользователь может запускать команды в любой группе. Последнее ALL указывает, что эти правила нужно применять ко всем командам.

Например, для настройки прав для команды apt-get можно использовать следующую строку:

%admin ALL=(ALL)NOPASSWD:/usr/bin/apt-get

  1. %admin — правило применяется для всех пользователей группы admin;
  2. ALL= — правило применяется ко всем IP-адресам;
  3. (ALL) — пользователь может запускать команды в сессии любого пользователя;
  4. NOPASSWD — пароль не требуется;
  5. :/usr/bin/apt-get — список команд, разделенный запятой.

Host alias — это псевдонимы для IP адресов с которых отправляются на выполнение команды. Псевдоним для хоста можно задать следующим образом:

Host_Alias <Имя> = <Хост_или_IP-адрес>

Например:

Host_Alias CLOUD = 105.17.125.37

User alias — это псевдонимы имен пользователей или групп прямо внутри файла sudoers, а не в системе. Псевдоним можно задать следующим образом (для групп используйте %):

User_Alias <Имя> = <пользователь1>,<пользователь2>,. ..

Например:

User_Alias PEOPLE = alice,bob

Cmnd alias — являются псевдонимами для имен команд прямо внутри файла sudoers, а не в системе. Псевдоним команды можно задать следующим образом:

Cmnd_Alias <Имя> = <команда1>,<команда2>

Например:

Cmnd_Alias APT = /usr/bin/apt-get update,/usr/bin/apt-get upgrade

 

P. S. Другие инструкции:




Спасибо за Вашу оценку!
К сожалению, проголосовать не получилось. Попробуйте позже

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

главная
— Статьи — Linux, FreeBSD

Теги: Linux

Автор grinder, источник: http://www.linuxstudio.ru

Настало время поговорить о швабре на которую наступают новички. Речь сегодня пойдет о правах доступа. И так вы садитесь за компьютер, работа не идет и в порыве вы уничтожаете случайно важные системные файлы. Или ваши знакомые или сослуживцы залезли в папку которую не должны были видеть. Или … Ситуация я думаю знакомая. Но зато согласитесь удобно. Я сам себе режиссер, что хочу то делаю, любая программа, пользователь имеет доступ ко всем системным файлам и ресурсам, никаких ограничений. Красота. Отсюда эпидемии вирусов. Так вот в Linux всего такого нет. Почему?

Файлы в Linux имеют двух владельцев: пользователя (user owner) и группу (group owner) под которой понимается определенный список пользователей и причем владелец файла не обязательно должен быть членом группы владеющей файлом. Каждый пользователь может быть членом сразу нескольких групп одна из которых называется первичной (primary), а все остальные — дополнительными (supplementary). Это дает большую гибкость в организации доступа к определенному файлу. Совместное использование некоторым ресурсом организовать очень просто, достаточно создать новую группу и включить в нее всех кому это действительно необходимо, а если человек предположим перешел в другой отдел и уже нет необходимости в использовании данного файла. А все очень просто, необходимо просто выключить его из состава данной группы. Ну а, что делать с остальными неужели они так и не смогут хотя бы прочитать содержимое файла или их прийдется каждый раз включать и исключать из группы. А вот для всех остальных (other) которые не принадлежат ни к user owner и group owner права доступа устанавливаются отдельно и как правило самые минимальные. Обычно владельцем файла является пользователь который создал данный файл. Владелец-группа вновь создаваемого файла устанавливается равной первичной группе пользователя создавшего файл, но в некоторых версиях Unix владелец-группа наследуется от владельца-группы каталога в котором создается файл. Для изменения владельца файла используется команда chown в качестве параметров принимающая имя нового владельца и список файлов: # chown new_owner file1 file2 …Конечно же на месте названия файла может быть и имя каталога, но при этом владелец файлов внутри каталога не изменится, для того чтобы это произошло лучше всего воспользоваться флагом -R (chown -R). При использовании данной команды (впрочем как и большинства) можно пользоваться регулярными выражениями если есть необходимость отобрать файлы удовлетворяющие определенному критерию (chown — R lys *.с). Для изменения владельца группы используется команда chgrp, синтаксис использования данной команды аналогичен предыдущей: # chgrp sales /home/sales/*. Кстати команда chown позволяет сразу установить и группу-владельца для этого необходимо сразу за именем владельца без пробелов и др. знаков поставить двоеточие и написать название необходимой группы

# chown — R sergej:gljuk *

допускается и такой вариант записи:

# chown — R :gljuk * (т.е. аналог команды chgrp).

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

Следующие базовые операции которые можно совершить над файлом: это доступ на чтение (Read), доступ на запись (Write) и доступ на выполнение (eXecute). Эти операции устанавливаются для каждой из трех групп пользователей раздельно. Причем проделать это может только пользователь владелец и конечно же суперпользователь. Для установки соответствующих прав используется команда chmod. Применяется она в двух формах абсолютной — когда игнорируются старые права, а безусловно устанавливаются новые, и относительной — когда к имеющимся правам добавляются/убираются другие. Абсолютная форма предполагает задание прав доступа к файлу прямым заданием его в восьмеричной форме. Для того чтобы получить полный код необходимого режима файла, необходимо просто сложить значения кодов приведенных в таблице.

 














 Восьмеричный код Режим файла
 0001 Право на выполнение для всех
 0002 Право на запись для всех
 0004 Право на чтение для всех
 0010 Право на выполнение для группы
 0020 Право на запись для группы
 0040 Право на чтение для группы
 0100 Право на выполнение для владельца
 0200 Право на запись для владельца
 0400Право на чтение для владельца
 1000 Включения бита сохранения задачи
 2000 Если файл выполняемый включения бита SGID
 4000 Если файл выполняемый включения бита SUID

 

Таким образом команда # chmod 755 file устанавливает следующие права доступа, это исполняемый файл, запустить его на выполнение и прочитать содержимое имеют право все (т. е. владелец, группа и остальные), а владелец дополнительно имеет право на изменение содержимого — запись. Это кстати пример задания прав классического cgi сценария.

Относительная форма команды требует конкретного указания классов доступа (‘u’- владелец, ‘g’- группа, ‘o’- остальные , ‘a’ -все вместе), соответствующие права доступа (‘r’ — чтение, ‘w’ — запись, ‘x’ — выполнение) и операцию которую необходимо произвести для списка файлов (‘+’ добавить , ‘-‘ удалить, ‘=’ присвоить) для соответствующего списка файлов. Например команда # chmod u+w, ug+r, a+x file добавляет дополнительно к имеющимся всем право запустить файл на выполнение, группа и владелец смогут прочесть содержимое, а владелец кроме того и изменить содержание. Да и команда ‘=’ относится скорее к абсолютному заданию прав доступа так как устанавливает соответствующие права вместо имеющихся.

Просмотреть соответствующие права доступа, а также владельца и группу можно с помощью команды ls -l:

[sergej@grinder sergej]$ ls -l

итого 2

drwxrwxr-x 2 sergej sergej 1024 Авг 17 09:45 bin

-rw-rw-r- 1 sergej sergej 604 Авг 22 21:07 printenv. pl

Буква ‘d’ означает, что это каталог, прочерк ‘-‘ — обыкновенный файл, ‘l’ — символическая связь, ‘b’- блочное устройство, ‘c’ — символьное устройство. Исполняемый файл может быть как откомпилированной программой (для его запуска необходимо только право на выполнение) и скриптом. Чтобы запустить на выполнение последний необходимо дополнительно право на чтение, так как программа-интерпретатор должна перед этим его прочитать. Значение прав доступа для различных типов файлов также различно. Вы ведь не забыли, что все остальное: каталоги, устройства, сокеты и именованные каналы тоже являются файлами. Например для последних трех право на выполнение смысла не имеет. Для символических связей они контролируются целевым файлом. Для каталогов они имеют немного другой смысл. Каталог по своей сути файл содержащий имена всех файлов которые содержатся в данном каталоге, а также указатели на дополнительную информацию, позволяющие операционной системе производить необходимые операции. Так вот право на чтение каталога позволяет всего лишь получить только имена файлов, находящихся в данном каталоге. А вот для того, чтобы получить дополнительную информацию, необходимы право на исполнение так, как уже прийдется заглянуть в «метаданные» каждого файла. Также чтобы перейти в какой ни будь каталог (cd) (и все каталоги на пути) необходимо иметь право на выполнение. Поэтому например часто создав каталог для домашней страницы Web-сервера Apache (public_html) и при попытке открыть его http://localhost/~user_name, получаете сообщение о том, что узел не достижим одной из причин является, то что сервер просто не может прочитать содержимое соответствующего каталога и всех каталогов на пути к нему. Кстати из-за наличия этих особенностей можно добиться так называемого эффекта «dark directory». Когда есть возможность создать каталог файлы в котором доступны только если пользователь знает точно имя соответствующего файла. Давайте посмотрим, как создать такой каталог.

[sergej@grinder sergej]$ mkdir darkcat # создаем каталог

[sergej@grinder sergej]$ chmod a-r+x darkcat # устанавливает необходимые права доступа, добавляем исполнение для всех и убираем возможность чтения списка файлов

[sergej@grinder sergej]$ ls -l # маленькая проверка

d-wx-wx-x 2 sergej sergej 1024 Сен 7 15:14 darkcat

[sergej@grinder sergej]$ cp myfile darkcat # копируем файл в каталог

[sergej@grinder sergej]$ cd darkcat # переходим в каталог

[sergej@grinder darkcat]$ ls -l # пробуем прочитать список файлов

ls: . : Permission denied # вот те раз

[sergej@grinder darkcat]$ cat myfile # выводим содержимое файла на терминал

Получилось.

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

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

Справедливости стоит отметить, что права доступа имеет не пользователь, а процесс запущенный ним. Не вдаваясь в подробности (я думаю о процессах разговор отдельный), каждый пользователь зарегистрировавшись в системе получает свою копию текущего процесса shell который имеет установленные идентификаторы RID и RGID реальные индетификаторы пользователя и первичной группы пользователя. А все процессы запущенные пользователем (дочерними), которые наследуют все переменные в том числе и RID, RGID. К чему это я собственно. У нас остались не рассмотренными три режима файла: бит сохранения задачи (stisky bit или save text mode), а также флаги SUID и SGID. Со stisky bit все просто, этот бит указывает на необходимость сохранения копии выполняющейся программы в памяти после завершения выполнения. Этот режим позволяет сэкономить время на запуске программы при частом использовании, но в современных системах применение этого режима встречается редко. А вот флаги SUID и SGID позволяют изменить (расширить) права пользователя (группы) запустившего программу на выполнение, на время выполнения программы. Как уже говорилось запущенное приложение имеют права доступа к системным ресурсам такие же, что и пользователь, запустивший программу. А установки этих флагов позволяет назначить права доступа исходя из прав доступа владельца файла. Отсюда если владельцем запущенного приложения является root, то любой независимо кто запустил данное приложение будет иметь права суперпользователя. При этом при установке флага SUID наследуется права владельца файла, а SGID — группы-владельца.

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

[sergej@grinder sergej]$ ls -l /etc/passwd /etc/shadow

-rw-r-r- 1 root root 1628 Авг 13 18:31 /etc/passwd

-r— 1 root root 1081 Авг 13 18:31 /etc/shadow

Как видите все пользователи имеют право только на чтение файла /etc/passwd, а записывать информацию может только root (а /etc/shadow как вы видите закрыли от всех, чтобы пароли не могли подобрать). Теперь смотрим на утилиту passwd:

[sergej@grinder sergej]$ ls -l /usr/bin/passwd

-r-s-x-x 1 root root 15104 Мар 14 03:44 /usr/bin/passwd

Буква ‘s’ означает, что установлен флаг SUID, а владельцем файла является его величество root и теперь кто бы ни запустил утилиту на выполнение, на время работы программы он временно получает права суперпользователя, т.е. произвести запись в защищенный системный файл. Естественно утилита должна (и делает это) производить изменение учетной записи только запустившего ее пользователя. Как вы понимаете требования по безопасности к программам использующим данный метод должны быть повышены. Это наверное самая большая дыра во всех Unix, потому что найдя ошибку в одной из программ использующих биты SUID/SGID можно производить любые действия не обладая при этом правами суперпользователя. А аксиома программирования говорит, что ошибки будут всегда. Поэтому сейчас где можно пытаются уйти или сильно изменить этот механизм. Да почитайте хотя бы аннотацию к большинству дистрибутивов Linux, там производитель с гордостью сообщает, что такие то программы уже не используют механизм SUID/SGID. Для установки битов SUID/SGID в символьной форме используется буква — ‘s’, sticky bit устанавливается буквой -‘t’, а с помощью буквы ‘l’ можно установить блокировку файла, для устранения возможных конфликтов когда несколько процессов попытаются работать с одним и тем же файлом. И еще один интересный момент.

[sergej@grinder sergej]$ ls -l /

drwxrwxrwt 25 root root 4096 Сен 8 20:08 tmp

Посмотрите, в каталоге /tmp установлен sticky bit. Зачем? Как говорилось предоставление права на запись в каталог позволяет удалять все файлы даже те владельцами которых он не является. Чтобы избежать этого устанавливается sticky bit для каталога и теперь удалить файл может только пользователь создавший его. А при установке бита SGID для каталога, все вновь созданные файлы будут теперь наследовать группу не по пользователю создавшему его, а по группе-владельцу каталога.

А теперь для чего все это собственно я вам рассказываю т.е. о наших швабрах. Представьте такую ситуацию смотрировали CDROM под root и скопировали с него файлы в домашний каталог обычного пользователь, поработали и выключили компьютер. Угадайте на следующий день вы сможете открыть там хоть один файл. Да работать мне целую неделю в Windows если да, а все потому, что владельцем файла окажется все тот же суперпользователь. Это относится и к различным конфигурационным файлам скопированным в домашний каталог (или созданным под root), процесс запущенный обычным пользователем просто не сможет его прочитать и пользоваться вы будете общесистемным, недоумевая почему не вступают в силу настройки произведенные вами. А вот еще ситуация настроили принтер утилитой princonf, под обычным пользователем не печатает. Почему? А потому, что вам не дано право на выполнение. Самый радикальный метод который я встречал в некоторых книгах выглядит так.

[root@grinder sergej]# chmod a+rwx /dev/*

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

[sergej@grinder sergej]$ ls -l /dev/lp0

crw-rw— 1 root lp 6, 0 Апр 11 17:25 /dev/lp0

Видите право на выполнение дано root и членам группы lp, отсюда если нужен принтер добавьте себя в эту группу. Либо прямым редактированием файла /etc/group (sergej:x:500:sergej,gdm,mysql,named,nobody,sound,lp), либо с помощью различных графических утилит вроде System Setting.

Зачем все это?

Например не играет звук. Смотрим.

[sergej@grinder sergej]$ ls -l /dev/dsp

crw— 1 sergej root 14, 3 Апр 11 17:25 /dev/dsp

Получается что только пользователь sergej будет слушать музыку. Парадокс однако. Пришлось создавать группу sound и добавить в нее себя, сделать владельцем обиженного root’a, а для группы sound определить чтение. Справедливости хотелось отметить, что права доступа это заслуга не только операционной , но и файловой системы ext2. В inode файла внесена вся необходимая информация о соответствующих правах доступа.

Или например на форумах часто спрашивают как сделать чтобы ppp соединение было доступно обычному пользователю. А все просто. Не нужно ничего выдумывать. Ищем пользователя и группу которая имет доступ к этому сервису и добавляем себя любимого. В Ubuntu это группа dip.

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

Авторизуйтесь для добавления комментариев!

Права доступа Linux ▷ Как изменить права на папку и вложенные файлы, chmod

Содержание

Общая информация о правах доступа в Linux

Режим доступа к файлу можно изменить с помощью команды chmod. Изменять права доступа к файлу позволено только его владельцу либо пользователю root. В UNIX-системах код задается в виде восьмеричного числа. Также поддерживается система мнемонических (буквенных) обозначений. Первый способ удобнее для системного администратора, но при этом можно задать только абсолютное значение режима доступа. А используя мнемонический синтаксис, вы можете сбрасывать и устанавливать отдельные параметры, к примеру, добавить право на чтение либо убрать право на запись.

Первым аргументом команды chmod является спецификация прав доступа, то есть восьмеричное число (774, 777 и т.д.) либо мнемоническое обозначение (r+o, w-u и т.д.). Второй и последующий аргументы — имена файлов, права доступа к которым подлежат изменению. При использовании восьмеричной нотации первая цифра относится к владельцу, вторая — к группе, а третья — к остальным пользователям.

Права доступа к файлам подразделяются на следующие:
r — право на чтение данных.
w — право на изменение содержимого (запись – только изменение содержимого, но не удаление).
x — право на исполнение файла.

Теперь о правах доступа к папке (директории):
r — право на чтение директории (можно прочитать содержимое директории, т.е. получить список объектов, находящихся в ней)
w — право на изменение содержимого директории (можно создавать и удалять объекты в этой директории, причем если вы имеете право на запись, то удалять вы сможете даже те файлы, которые вам не принадлежат)
x — право, которое позволяет вам войти в директорию (это право всегда проверяется в первую очередь, и даже если вы имеете все нужные права на объект, который закопан глубоко в цепочке директорий, но не имеете права “X” для доступа хотя бы к одной директории на пути к этому файлу, то к нему вы так и не пробьетесь)

В таблице указано восемь возможных комбинаций:

Восьмеричное числоДвоичное числоРежим доступа
0000---
1001--x
2010-w-
3011-wx
4100r--
5101r-x
6110rw-
7111rwx

 

Например, команда:

chmod 711 myfile

предоставляет владельцу все права, а всем остальным пользователям — только право выполнения, а команда:

chmod 775 myfile

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

chmod 775 /var/www/myfile

Для применения прав доступа ко всем вложенным в директорию файлам и папкам (рекурсивно) необходимо в команду добавить ключ -R. То есть команда будет выглядеть как:

chmod -R 711 myfile

Примеры мнемонических спецификаций команды chmod:

СпецификацияЗначение
u+wВладельцу файла дополнительно дается право выполнения.
ug=rw,o=rВладельцу и группе предоставляется право чтения/записи, остальным пользователям — право чтения.
a-xВсе пользователи лишаются права выполнения.
ug=srx,o=Владельцу и группе дается право чтения/выполнения, устанавливается также бит SUID; остальным пользователям запрещен доступ к файлу.
g=uГруппе назначаются такие же права, что и владельцу

 

Символ u («user») обозначает владельца файла, символ g («group») — группу, символ о («others») — других пользователей, символ a («all») — всех пользователей сразу.
То есть, если необходимо убрать право на редактирование всех вложенных файлов и папок у других пользователей, то с помощью мнемонических обозначений команда будет выглядеть следующим образом:

chmod o-w -R myfile

В качестве примера мы будем устанавливать права доступа 777 для папки /var/www/mysite и всех вложенных в нее файлов и каталогов.
ВНИМАНИЕ! Установка прав доступа 777 используется исключительно в качестве примера, их использование может привести к уязвимости сервера!

Смена прав доступа

SSH

  1. Входим по протоколу SSH на ВПС с root привилегиями.
  2. Переходим с помощью команды cd в директорию, где расположена необходимая нам папка. В данном случае это /var/www:
    cd /var/www
  3. С помощью chmod устанавливаем рекурсивно права доступа для mysite:
    chmod -R 777 mysite

SFTP

Для подключения к серверу по протоколу SFTP мы будем использовать программу FileZilla. Данная программа бесплатна, поддерживает русский язык и кросплатформенна. Вы можете скачать ее с официального сайта: https://filezilla-project.org/. Обратите внимание, что в левой колонке отображает дерево каталогов Вашего компьютера, а в правой удаленной машины, в данном случае ВПС.

  1. Подключаемся к ВПС с root привилегиями по SFTP.
  2. Переходим в каталог /var/www
  3. Нажимаем правой кнопкой мышки на папке mysite и выбираем «Права доступа к файлу»
  4. Во всплывающем окне устанавливаем необходимые права 777 и нажимаем «Перенаправить во вложенные каталоги» и выбираем «Применить ко всем каталогам и файлам» и нажимаем ОК.

ISPmanager

  1. Войти в КП от имени root пользователя.
  2. Зайти в «Система → Менеджер файлов»
  3. Перейти в директорию /var/www
  4. Выбрать папку mysite и в верхнем меню нажать кнопку «Атрибуты»
  5. Во всплывающем окне установить права доступа 777.
  6. В пункте «Изменить дочерние элементы» из выпадающего списка выбрать «изменить владельца и права для файлов и директорий»

DirectAdmin

К сожалению, в КП DirectAdmin не предоставляется доступ к корневой файловой системе с помощью встроенного менеджера файлов. В связи с этим, в качестве примера, мы изменим права доступа для директории /domains/domain.com/public_html/mysite

  1. Входим в КП DirectAdmin
  2. Нажимаем кнопку Files в панели сверху
  3. Перейти в папку /domains/domain.com/public_html
  4. Поставить галочку напротив каталога mysite, после чего установить права доступа к папке 777 и поставить галочку напротив Recursive, для применения данных прав доступа ко всем вложенным файлам и папкам.
  5. Нажать set Permission

cPanel

В cPanel также не предоставляется доступ к корневой директории, в связи с чем мы сменим, в качестве примера, права доступа для папки /public_html/mysite. Обратите внимание, что менеджер файлов доступен только на уровне пользователя.

  1. Войти в cPanel на уровне пользователя.
  2. Перейти в Файлы → Диспетчер файлов.

  3. Перейти в директорию /public_html
  4. Выделить папку mysite и нажать «Разрешения»

  5. В всплывающем окне установить необходимые права доступа и нажать «Change Permissions». Обратите внимание, что файловый менеджер cPanel не умеет изменять права для всех вложенных файлов и папок. Рекурсивно сменить права доступа Вы всегда сможете с помощью SSH либо SFTP протоколов.

 

Права доступа в системе Linux (управление)

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

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

Общие понятия:

У каждого объекта в Linux есть свой идентификатор, а так же права доступа, применяемые к данному идентификатору. Идентификатор есть у пользователя — UID, у группы — GID, у файла — inod. Собственно inode является, как идентификатором файла/каталога, так и сущностью, которая содержит в себе информацию о файле/каталоге. Например такую, как: принадлежность к владельцу/группе, тип файла и права доступа к файлу.

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

Print-server:/# ls -li
итого 50
22089 drwxr-xr-x  2 root root  3072 Ноя 15 14:15 bin
32129 drwxr-xr-x  3 root root  1024 Окт  1 18:03 boot
12 lrwxrwxrwx  1 root root    11 Окт  1 15:36 cdrom -> media/cdrom
557 drwxr-xr-x 13 root root  3340 Ноя 17 06:25 dev
30121 drwxr-xr-x 50 root root  4096 Ноя 15 14:46 etc
. ...

Из вывода команды видно (рассмотрим первую строку):

22089

это есть номер inode

drwxr-xr-x

это есть те самые права доступа и тип файла (об этом ниже)

2

количество жестких ссылок на файл

root

имя владельца файла

root

имя группы владельца файла

3072

размер файла

Ноя 15 14:15

дата создания файла

bin

имя файла/каталога

Для каждого объекта файловой системы в модели полномочий Linux есть три типа полномочий: полномочия чтения (r от read), записи (w от write) и выполнения (x от execution). В полномочия записи входят также возможности удаления и изменения объекта.  Право выполнения можно установить для любого файла. Потенциально, любой файл в системе можно запустить на выполнение, как программу в Windows. В Linux является ли файл исполняемым или нет, определяется не по его расширению, а по правам доступа. Кроме того, эти полномочия указываются отдельно для владельца файла, членов группы файла и для всех остальных.

Собрав вышесказанное в кучу, то есть представив 3 правила (rwx) для трех групп (владелец, группа, остальные) запись прав доступа будет выглядеть вот так: rwx rwx rwx(то есть владельцу разрешено чтение, выполнение и запись, группе разрешено то же самое и остальным). Рассмотрев права на папку /bin в выше приведенном листинге, можно представить такую картину:

drwxr-xr-x+
||||||||||+наличие дополнительных прав (ACL)
|||||||||+-исполнение для всех остальных - разрешено
||||||||+--запись для всех остальных - НЕ разрешено
|||||||+---чтение для всех остальных - разрешено
||||||+----исполнение для группы владельца - разрешено
|||||+-----запись для группы владельца - НЕ разрешено
||||+------чтение для группы владельца - разрешено
|||+-------исполнение для владельца - разрешено
||+--------запись для владельца - разрешено
|+---------чтение для владельца - разрешено
+----------тип файла (об этом ниже. ..)

Кроме указанного представления полномочий доступа (символьного), существует так же и числовое представление. Для общего понимания, приведу таблицу соответствия числового (двоичного и десятичного) значения прав доступа и буквенного:

владелецгруппаостальные
буквенноеrwxr-xr—
числовое (десятичное)421401400
итоговое754

В приведенной таблице показано, что право чтения, соответствует значению 4, право записи — 2, право выполнения — 1, отсутствие права — 0, складывая данные показатели, можно представлять и назначать права в числовом виде. Для примера, права rwx r-x r— будут соответствовать значению 754, потому что: rwx (4+2+1=7) r-x (4+0+1=5) r— (4+0+0=4).  Так же, довольно распространена комбинация rw- (4+2+0=6). Думаю данный пример достаточно нагляден.

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

Права доступа для каталогов немного отличаются. Это в первую очередь связано с тем, что система трактует операции чтения и записи для каталогов отлично от остальных файлов. Право чтения каталога позволяет Вам получить имена (и только имена) файлов, находящихся в данном каталоге. Чтобы получить дополнительную информацию о файлах каталога (например, подробный листинг команды ls -l), системы придется «заглянуть» в метаданные файлов, что требует права на выполнения для каталога. Право на выполнение также потребуется для каталога, в который Вы захотите перейти (т.е. сделать его текущим) с помощью команды cd. Итого, право чтения на каталог, позволяет читать имя содержимого, право выполнения — чтение содержимого с метаданными (правами и др.)

Управление правами доступа

Управление правами доступа происходит с помощью команды chmod, управление владельцем файла происходит с помощью команды chown.

Синтаксис команд следующий:

chmod [к_какой_группе_прав][что_сделать_с_правами][какие_права] над_каким_объектом

или

chmod [права] над_чем

где:

к_какой_группе_прав

может быть u (от user) — владелец-пользователь, g (от group) — владелец-группа, o (от other) — остальные пользователи, a (от all) — все вышеперечисленные группы вместе

что_сделать_с_правами

может быть + — добавить, — -убрать, = — присвоить указанное

какие_права

может быть: r- чтение, w — запись, x — выполнение

над_каким_объектом

соответственно — имя или путь к файлу

права

числовое обозначение прав доступа (755, 644 и т.п.)

пример:

[Print-server]$ chmod a=rw file
[Print-server]$ ls -l file
-rw-rw-rw-	1	user users	78	Nov 20 file

это будет аналогично:

[Print-server]$ chmod ugo=rw file1
[Print-server]$ ls -l file1
-rw-rw-rw-	1	user users	78	Nov 20 file1

а так же:

[Print-server]$ chmod 666 file2
[Print-server]$ ls -l file2
-rw-rw-rw-	1	user users	78	Nov 20 file2

Использование команды chown выглядит следующим образом:

chown user:group file

сменить владельцев файла file на user:group.

Дополнительные атрибуты файлов в Linux (sticky bit, SGID, SUID)

В Linux кроме прав чтения, выполнения и записи, есть еще 3 дополнительных атрибута:

1. Sticky bit (он же бит закрепления в памяти)

sticky bit появился в пятой редакции UNIX в 1974 году для использования в исполняемый файлах. Он применялся для уменьшения времени загрузки наиболее часто используемых программ. После закрытия программы код и данные оставались в памяти, а следующий запуск происходил быстрее. (отсюда и название — бит закрепления в памяти)

Сегодня sticky bit используется в основном для каталогов, чтобы защитить в них файлы. В такой каталог может писать ЛЮБОЙ пользователь. Из такой директории пользователь может удалить только те файлы, владельцем которых он является. Примером может служить директория /tmp, в которой запись открыта для всех пользователей, но нежелательно удаление чужих файлов.

2. SUID (он же Set User ID)

Атрибут исполняемого файла, позволяющий запустить его с правами владельца. В Unix-подобных системах приложение запускается с правами пользователя, запустившего указанное приложение. Это обеспечивает дополнительную безопасность т.к. процесс с правами пользователя не сможет получить доступ на запись к важным системным файлам, например /etc/passwd, который принадлежит суперпользователю root. Если на исполняемый файл установлен бит suid, то при выполнении эта программа автоматически меняет «эффективный userID» на идентификатор того юзера, который является владельцем этого файла. То есть, не зависимо от того — кто запускает эту программу, она при выполнении имеет права хозяина этого файла.

3. SGID (он же Set Group ID)

Аналогичен SUID, но относиться к группе. При этом, если для каталога установлен бит SGID, то создаваемые в нем объекты будут получать группу владельца каталога, а не пользователя.

Хотелось бы так же провести аналогию с ОС Windows. В указанной операционной системе права регулируются на основе списков ACL. В Linux тоже такое возможно, это реализуется с помощью пакета acl, но данный вопрос в текущей теме  я рассматривать не буду. Еще одно важное замечание! В Windows можно определить права доступа на каталог, и они автоматически распространяются на все файлы и поддиректории (если вы явно не указали иного). В Linux права доступа сохраняются в inode файла, и поскольку inode у каждого файла свой собственный, права доступа у каждого файла свои. Так же, права доступа пользователя и группы не суммируются, как в Windows. Если программа выполняется с правами пользователя и группы, которым принадлежит файл — работают только права хозяина файла.

Исполняемый файл с установленным атрибутом suid является «потенциально опасным». Без установленного атрибута, файл не позволит обычному пользователю сделать то, что выходит за пределы прав пользователя (пример, программа passwd позволяет пользователю изменить только собственный пароль). Но, даже незначительная ошибка в такой программе может привести к тому, что злоумышленник сможет заставить её выполнить ещё какие-нибудь действия, не предусмотренные автором программы. Стоит очень осторожно относиться к данным атрибутам! Как найти в системе файлы с атрибутом SIUD и др.

При создании новой директории в директории с уже установленным SGID-битом, у созданной директории SGID-бит устанавливается автоматически!

Обозначение атрибутов

Sticky, SUID, SGID

Специальные права используются довольно редко, поэтому при выводе программы ls -l символ, обозначающий указанные атрибуты, закрывает символ стандартных прав доступа. Пример: rwsrwsrwt, где s — SUID, s — SGID, t — Sticky. В приведенном примере не понятно, rwt — это rw- или rwx? Определить, стоит ли символ стандартных прав доступа под символами s и t — просто. Если t маленькое, значит x установлен. Если T большое, значит x не установлен. То же самое правило распространяется и на s.

В числовом эквиваленте данные атрибуты определяются первым символом при четырехзначном обозначении (который часто опускается при назначении прав), например в правах 1777 — символ 1 обозначает sticky bit. Остальные атрибуты имеют следующие числовое соответствие:

  • 1 — sticky bit
  • 2 — SGID
  • 4 — SUID

Права доступа к символьным ссылкам

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

Права доступа по-умолчанию для вновь создаваемых объектов ФС (umask)

В Linux, при создании какого-либо файла или каталога предоставляемые права определяются по определенному алгоритму (формуле). Не вдаваясь в подробности и для большего понимания сути. Скажу, что есть исходные права доступа (0666- для файлов и 0777 — для каталогов), и есть такая штука как umask, которая задана для каждого пользователя и хранится в виде строчки umask значение_umask в файле . bash_profile. Итого, у вновь создаваемого каталога будут права =исходные права доступа — umask.

Узнать текущий umask можно, введя команду umask без параметров.

Пример:

[root@proxy test]# umask
0022
[root@proxy test]# touch file
[root@proxy test]# mkdir test
[root@proxy test]# ls -l
total 4
-rw-r--r-- 1 root root    0 Nov 23 14:51 file
drwxr-xr-x 2 root root 4096 Nov 23 14:51 test

Как видно из примера, umask установлен 0022, исходные права доступа равны 0666- для файлов и 0777 — для каталогов. В результате получаем:

0666 — 0022 = 0644 (что соответствует правам -rw-r—r— для file)
0777 — 0022 = 0755 (что соответствует правам -rwxr-xr-x для каталога test)

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

Давайте попробуем подвести итог нашему прочитанному материалу:

Существует 3 разновидности прав rwx, которые соответствуют чтение запись исполнение соответственно. Так же, права назначаются для 3х сущностей: rwx rwx rwx, что соответствует владелец, группа и все остальные соответственно. Буквенному обозначению прав доступа соответствуют числовые аналоги для упрощения управления.  Права доступа к файлам и директориям имеют различное значение. Для файлов:
r — право на чтение данных из файла.
w — право на изменение содержимого файла (запись).
x — право на исполнение файла.

Права доступа к директориям имеют другое значение:
r — право на чтение директории. Прочитать содержимое директории — получить список файлов.
w — право на изменение содержимого директории — создание и удаление файлов в этой директории.
x — право на «вхождение» в директорию.

Так же есть дополнительные атрибуты sticky bit, SUID и SGID, которые позволяют производить дополнительные специфические манипуляции с объектами файловой системы.

Права в Linux регулируются программной chmod, владельца объекта файловой системы можно изменить с помощью команды chown.

При создание новых файлов и каталогов в Linux есть права «по-умолчанию», которые заданы значением umask.

На этом ставлю точку. Надеюсь, что объяснил все понятно и доходчиво. Буду рад любым комментариям и дополнениям.

Полезно

Онлайн калькулятор прав: http://permissions-calculator.org/

С Уважением, Mc.Sim!


Другие материалы в категории основы Linux


Теги: bash, Inod, Linux, umask, команды, основы, права доступа, Файловая система

Пользователи Linux ▷ Создание, управление, удаление, добавление нового пользователя Linux

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

Управление пользователями

Добавление пользователя

Добавление пользователя осуществляется командой:

useradd [параметры] имя_пользователя

Список доступных параметров можно получить при помощи команды:

useradd --help

Наиболее используемые параметры следующие:

ПараметрОписание параметра
-b --base-dir BASE_DIRCоздание домашней директории пользователя в директории, указанной по умолчанию. Обычно это /home, а пользовательские каталоги — /home/$USER.
-c --comment COMMENTТекстовая строка для описания пользователя. Например,там может быть указано полное имя, адрес, телефон.
-d --home-dir HOME_DIRДомашняя директория (home directory) нового пользователя. По умолчанию используется $HOMEDIR/user
e --expiredate EXPIRE_DATEДата окончания действия учетной записи.
-g --gid GROUPУказание основной группы (primary group) для нового пользователя. По умолчанию используется стандартная группа, указанная в файле /etc/default/useradd.
-G --groups GROUPSУказание дополнительных групп, к которым будет принадлежать пользователь.
-m --create-homeСоздание домашнего каталога для нового пользователя, если он еще не существует. Копирует скелетные файлы и другие каталоги из /etc/skel в домашний каталог.
-MНе создавать домашний каталог для пользователя
-nНе создавать приватную группу для пользователя
-s --shell SHELLУказание полного пути к программе (шеллу), которая будет использоваться как начальный командный интерпретатор для пользователя.
-u --uid UID«Ручное» указание id пользователя в виде цифры. По умолчанию используется самое маленькое значение, не меньше, чем UID_MIN, но больше, чем id любого из существующих пользователей.

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

Установка пароля для созданного пользователя выполняется командой:

passwd имя_пользователя

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

Удаление пользователя выполняется командой:

userdel [параметр] имя_пользователя
ПараметрОписание параметра
-f, --forceПринудительное удаление файлов, даже если они не принадлежат пользователю
-r, --removeУдаление домашней директории пользователя и mail spool

Правка учетной записи

Правка учетной записи пользователя в Linux выполняется следующей командой:

usermod [параметр] имя_пользователя

Список возможных параметров можно узнать при помощи команды:

usermod –help

Большинство этих параметров такие же как и в useradd

Права пользователей Linux

Права у пользователя, как у root

Очень часто можно встретить вопрос ”Можно ли сделать у пользователя такие же права как и у рута?
Нет, поскольку в Linux имеет право «делать всё» только один пользователь, id которого в системе — 0, он же root.
В случае, если требуется выполнить какую-либо команду, которая обычному пользователю недоступна, можно использовать команду:

sudo команда

Эта команда позволяет выполнять операции от имени root’a.
ПРИМЕЧАНИЕ: Команда sudo будет доступна пользователю только в том случае, если он входит в группу, которая указана в файле /etc/sudoers. Например, по умолчанию, это может быть группа ”admin”.
Второй вариант – это использование команды:

su имя_пользователя

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

Ограничение доступа к файлам и папкам

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

chmod [права] имя-файла

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

chmod 754 имя_файла

Заметьте, что последовательность указания прав неизменна. То есть, первая цифра (7) указывает права для владельца, вторая (5) – для группы, и третья (4) – для всех остальных пользователей в системе.

Изменение владельца файла/папки

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

chown имя_пользователя имя_файла

Права на выполнение данной команды имеет только root-пользователь.

Введение в разрешения Linux

Введение

Linux — это многопользовательская ОС, основанная на концепции Unix , права собственности на файлы и разрешений для обеспечения безопасности на уровне файловой системы. Если вы планируете улучшить свои навыки работы с Linux, важно иметь хорошее представление о том, как работают права собственности и разрешения. Имеется много сложностей, связанных с владением файлами и разрешениями, но мы постараемся изо всех сил детализировать концепции до деталей, необходимых для фундаментального понимания того, как они работают.

В этом руководстве мы расскажем, как просмотреть и понять владение и разрешения Linux. Если вы ищете руководство по изменению разрешений, ознакомьтесь с этим руководством: Основы разрешений Linux и Как использовать Umask на VPS

.

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

Убедитесь, что вы понимаете концепции, описанные в предыдущих руководствах этой серии:

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

О пользователях

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

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

Самый простой способ просмотреть всех пользователей системы — это просмотреть содержимое файла / etc / passwd . Каждая строка в этом файле содержит информацию об одном пользователе, начиная с его имени пользователя (имя перед первым : ). Распечатайте файл passwd с помощью этой команды:

  кот / etc / passwd
  

Суперпользователь

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

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

О группах

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

Самый простой способ просмотреть все группы и их участников — это просмотреть файл / etc / group на сервере. Мы не будем рассматривать управление группами в этой статье, но вы можете запустить эту команду, если вам интересно узнать о своих группах:

  кот / etc / group
  

Теперь, когда вы знаете, что такое пользователи и группы, давайте поговорим о владении файлами и разрешениях!

Просмотр прав собственности и разрешений

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

Самый распространенный способ просмотреть права доступа к файлу — использовать ls с опцией длинного списка, например ls -l myfile . Если вы хотите просмотреть разрешения для всех файлов в текущем каталоге, запустите команду без аргументов, например:

  лс-л
  

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

Вот пример снимка экрана того, как может выглядеть вывод, с метками каждого столбца вывода:

Обратите внимание, что перечислены режим каждого файла (который содержит разрешения), владелец, группа и имя.Помимо столбца Mode , этот список довольно легко понять. Чтобы объяснить, что означают все эти буквы и дефисы, давайте разберем столбец Mode на компоненты.

Режим понимания

Чтобы помочь объяснить, что означают все группы и буквы, взгляните на этот крупный план режима первого файла в примере выше:

Тип файла

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

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

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

Классы разрешений

Из диаграммы мы знаем, что в столбце Mode указан тип файла, за которым следуют три триады или класса разрешений: пользователь (владелец), группа и другие.Порядок классов одинаков во всех дистрибутивах Linux.

Давайте посмотрим, какие пользователи принадлежат к каждому классу разрешений:

  • Пользователь : Владелец файла принадлежит к этому классу
  • Группа : члены группы файла относятся к этому классу
  • Другое : К этому классу относятся все пользователи, не входящие в классы пользователей или группы .

Символические разрешения на чтение

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

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

  • Чтение : обозначается цифрой r в первой позиции
  • Запись : Обозначается цифрой w во второй позиции
  • Execute : обозначается размером x в третьей позиции. В некоторых особых случаях здесь может быть другой символ

Дефис ( - ) вместо одного из этих символов указывает, что соответствующее разрешение недоступно для соответствующего класса.Например, если триада группа для файла — это r - , файл доступен только для чтения для группы, связанной с файлом.

Общие сведения о чтении, записи и выполнении

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

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

Читать

Для обычного файла разрешение на чтение позволяет пользователю просматривать содержимое файла.

Для каталога разрешение на чтение позволяет пользователю просматривать имена файлов в каталоге.

Написать

Для обычного файла разрешение на запись позволяет пользователю изменять и удалять файл.

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

Выполнить

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

Для каталога разрешение на выполнение позволяет пользователю осуществлять доступ или переходить (например, cd ) и получать доступ к метаданным о файлах в каталоге (информация, указанная в ls -l ).

Примеры режимов (и разрешений)

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

  • -rw ------- : файл, доступный только его владельцу
  • -rwxr-xr-x : файл, который может быть выполнен каждым пользователем в системе. «Исполняемый во всем мире» файл
  • -rw-rw-rw- : файл, который открыт для изменения каждым пользователем в системе. Файл, доступный для всей записи
  • drwxr-xr-x : каталог, который каждый пользователь в системе может читать и получать доступ
  • drwxrwx --- : Каталог, который может изменяться (включая его содержимое) его владельцем и группой
  • drwxr-x --- : Каталог, доступный для его группы

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

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

Изменение прав собственности и разрешений

Чтобы не усложнять этот учебник, мы не будем здесь рассказывать, как изменять права собственности на файлы и права доступа. Чтобы узнать, как использовать chown , chgrp и chmod для выполнения этих задач, обратитесь к этому руководству: Основы разрешений Linux и Как использовать Umask на VPS.

Заключение

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

пользователей и групп Linux | Linode

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

Что такое разрешения для пользователей и групп Linux?

Операционные системы Linux / Unix могут выполнять несколько задач одновременно, как и другие операционные системы. Однако главное отличие Linux от других операционных систем — это возможность иметь несколько пользователей. Linux был разработан, чтобы позволить более чем одному пользователю иметь доступ к системе одновременно.Чтобы этот многопользовательский дизайн работал должным образом, должен быть способ защиты пользователей друг от друга. Здесь на помощь приходят разрешения.

Разрешения на чтение, запись и выполнение

Разрешения — это «права» на действия с файлом или каталогом. Основные права — это чтение, запись и выполнение.

  • Чтение : разрешение на чтение позволяет просматривать содержимое файла. Разрешение на чтение для каталога позволяет вам отображать содержимое каталога.
  • Запись : разрешение на запись в файл позволяет вам изменять содержимое этого файла. Для каталога разрешение на запись позволяет редактировать содержимое каталога (например, добавлять / удалять файлы).
  • Выполнить : для файла разрешение исполняемого файла позволяет запускать файл и выполнять программу или сценарий. Для каталога разрешение на выполнение позволяет вам перейти в другой каталог и сделать его текущим рабочим каталогом. У пользователей обычно есть группа по умолчанию, но они могут принадлежать к нескольким дополнительным группам.

Просмотр прав доступа к файлу

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

  -rw-r - r-- 1 root root 1031 18 ноября 09:22 / etc / passwd 
 

Первые десять символов показывают права доступа. Первое тире ( - ) указывает тип файла ( d для каталога, s для специального файла и - для обычного файла).Следующие три символа ( rw- ) определяют права владельца на файл. В этом примере владелец файла имеет разрешения только на чтение и запись. Следующие три символа ( r - ) — это разрешения для членов той же группы, что и владелец файла (который в этом примере доступен только для чтения). Последние три символа ( r - ) показывают разрешения для всех других пользователей, и в этом примере он доступен только для чтения.

Работа с группами, пользователями и каталогами Linux

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

Первичные группы Linux

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

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

  cat / etc / passwd
  

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

  postfix: x: 106: 113 :: / var / spool / postfix: / usr / sbin / nologin
пример_пользователя: x: 1000: 1001: ,,,: / home / example_user: / bin / bash 
 

Информацию об основной группе пользователя также можно найти с помощью команды id . Замените example_user одним из пользователей вашей собственной системы.

  id example_user
  

Ваш вывод похож на пример, в котором первичная группа отображается как example_group .

  uid = 1000 (example_user) gid = 1001 (example_group) groups = 1001 (example_group), 27 (sudo) 
 

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

  id -gn example_user
  

Ваш вывод в этом случае будет следующим:

  example_group
  

Вторичные группы Linux

После того, как пользователь был создан с его основной группой, его можно добавить во вторичные группы.Пользователи системы Linux могут иметь максимум 15 вторичных групп. Группы системы Linux хранятся в файле / etc / group .

Чтобы найти группу (группы), к которым принадлежит пользователь, выполните следующую команду:

  groups example_user
  

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

  example_user: example_group sudo
  

Чтобы добавить пользователя во вторичную группу, используйте пример команды. Замените second_example_group именем группы, а example_user — именем пользователя, которого нужно добавить в группу.

  sudo usermod -a -G second_example_group example_user
  

Вы также можете добавить пользователя в несколько групп. Пример команды добавляет пользователя example_user в группы second_example_group , third_example_group и 4th_example_group . Параметры -a и -G гарантируют, что пользователь не будет удален из какой-либо группы, к которой он уже принадлежит.

  sudo usermod -a -G вторая_пример_группа, третья_пример_группа, четвертая_пример_группа example_user
  

В чем разница между первичной и вторичной группами в Linux?

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

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

Создание и удаление учетных записей пользователей

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

  useradd <имя>
  

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

Опция Описание Пример
-d используется как значение для каталога входа пользователя useradd -d / home /
-e дата истечения срока действия учетной записи useradd ** -e
-f количество дней до истечения срока действия учетной записи useradd -f <0 или -1 >
-s устанавливает тип оболочки по умолчанию useradd -s / bin /

Вам необходимо установить пароль для нового пользователь с помощью пароля passwd команда. Обратите внимание, что для изменения пароля пользователя вам потребуются права root. Синтаксис следующий:

  passwd <имя пользователя>
  

Пользователь может изменить свой пароль в любое время, используя команду passwd с синтаксисом. Ниже пример:

  $ passwd
Смена пароля для lmartin.
(текущий) пароль UNIX:
Введите новый пароль UNIX:
Введите новый пароль UNIX еще раз:
passwd: пароль успешно обновлен
  

Есть еще один способ создания учетных записей пользователей, который может быть проще для начинающих администраторов.Однако вам может потребоваться установить новый пакет. Команда установки для Debian / Ubuntu выглядит следующим образом:

  apt-get install adduser
  

Команда adduser автоматически создает домашний каталог и устанавливает группу по умолчанию, оболочку и т. Д. Чтобы создать нового стандартного пользователя с помощью команды adduser , используйте следующий синтаксис:

  adduser <имя>
  

После ввода команды вы получите серию подсказок; большая часть этой информации не является обязательной. Однако вы должны указать хотя бы имя пользователя (в данном примере имя пользователя — cjones) и пароль.

  [адрес электронной почты защищен]: ~ # adduser cjones
  Добавление пользователя cjones ...
  Добавление новой группы cjones (1001) ...
  Добавление нового пользователя `cjones '(1001) с группой` cjones' ...
  Создание домашнего каталога `/ home / cjones '...
  Копирование файлов из `/ etc / skel '...
  Введите новый пароль UNIX:
  Введите новый пароль UNIX еще раз:
  passwd: пароль успешно обновлен
  Изменение информации о пользователе для cjones
  Введите новое значение или нажмите ENTER для значения по умолчанию.
      Полное имя []: Чак Джонс
      Номер комнаты []: 213
      Рабочий телефон []: 856-555-1212
      Домашний телефон []:
      Другой []:
  Информация верна? [Да / нет] Да
  

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

Чтобы удалить учетную запись пользователя, введите следующую команду:

  userdel 
  

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

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

  userdel -r 
  

Понимание группы и пользователя Sudo Linux

root является суперпользователем и может делать что угодно в системе.Следовательно, для обеспечения дополнительного уровня безопасности вместо пользователя root обычно используется пользователь sudo . В то время как sudo используется для предоставления другому пользователю ограниченного доступа к учетной записи другого пользователя с целью выполнения задач (в большинстве случаев root пользователь или суперпользователь), sudo можно лучше всего объяснить как инструмент, который позволяет пользователям и группы, чтобы иметь доступ к командам, которые они обычно не могут использовать. sudo позволяет пользователю иметь административные привилегии без прямого входа в систему как root.Пример команды sudo выглядит следующим образом:

  sudo apt-get install 
  

Перед использованием sudo может потребоваться установка, если она не входит в ваш дистрибутив. Команда для Debian выглядит следующим образом:

  apt-get install sudo
  

Для CentOS команда выглядит следующим образом:

  yum install sudo
  

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

Примечание

Для редактирования файла sudoers следует использовать команду visudo . В командной строке войдите в систему как root и введите команду visudo .

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

Внимание! Никогда не добавляйте пользователей в файл или группу sudoers с полными правами, если им не доверяют. Вы можете дополнительно ограничить действия пользователей с помощью sudo в качестве дополнительного уровня безопасности; обратитесь к
Внесение команд в белый список с помощью Sudo для некоторых примеров синтаксиса ограниченного использования.

  1
2
3
4
5
  
  # Спецификация привилегий пользователя
root ВСЕ = (ВСЕ: ВСЕ) ВСЕ
cjones ВСЕ = (ВСЕ: ВСЕ) ВСЕ
kbrown ВСЕ = (ВСЕ: ВСЕ) ВСЕ
lmartin ALL = (ALL: ALL) ALL  

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

  sudo visudo
  

Внесение команд в белый список с помощью Sudo

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

  1
2
3
4
5
6
  
  # Спецификация привилегий пользователя
    root ВСЕ = (ВСЕ: ВСЕ) ВСЕ
    Sudousername ALL = (ВСЕ: ВСЕ) ВСЕ
    имя пользователя ALL = / usr / bin / top, / usr / bin / apt-get
    # Разрешить членам группы sudo выполнять команды less, ls и apt
    % sudo ALL = / usr / bin / less, / usr / bin / ls, / usr / bin / apt  

В то время как пользователи root и sudousername по-прежнему имеют полные права суперпользователя, имя пользователя был ограничен только командами top и apt-get как пользователь sudo. Кроме того, все пользователи, добавленные в группу sudo , отдельно ограничены только командами минус , ls и apt с разрешениями sudo. Если вы хотите предоставить пользователю имя пользователя sudo доступ к дополнительным 3 командам, внесенным в белый список для группы sudo , вам просто нужно будет добавить их в группу sudo , и они все равно сохранят свои собственные уникальные разрешения, дав им sudo доступ к 5 командам.Этот процесс можно повторить для любого количества пользователей и групп.

Примечание

При добавлении отдельных команд в белый список с использованием указанного выше синтаксиса важно использовать абсолютный путь к команде. Команда which может использоваться для поиска этого абсолютного пути:

  which command-name
  

Работа с группами

Linux использует группы как способ организации пользователей. Группы организуют коллекции учетных записей, прежде всего в качестве меры безопасности.Управление членством в группах осуществляется с помощью файла / etc / group , который показывает список групп и их членов. У каждого пользователя есть основная или основная группа. Когда пользователь входит в систему, членство в группе устанавливается для его основной группы. Это означает, что когда пользователь запускает программу или создает файл, и файл, и запущенная программа связываются с текущим членством пользователя в группе. Пользователь может получить доступ к другим файлам в других группах, если они также являются членами этой группы и установлены права доступа.Чтобы запускать программы или создавать файл в другой группе, пользователь должен запустить команду newgrp , чтобы переключить свою текущую группу. Пример команды newgrp выглядит следующим образом:

  $ newgrp 
  

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

Создание и удаление каталогов

Чтобы создать каталог, используйте команду:

  mkdir <имя каталога>
  

Чтобы создать каталог и одновременно установить разрешения, используйте следующую опцию и синтаксис:

  mkdir -m a = rwx <имя каталога>
  

Параметр -m является сокращением от режима, а a = rwx означает, что все пользователи имеют разрешения на чтение, запись и выполнение в каталоге. Чтобы увидеть полный список всех параметров команды mkdir, введите в командной строке man mkdir .

Чтобы удалить файл, используйте следующее:

  rm <файл>
  

Чтобы удалить каталог:

  rm -r <имя каталога>
  

Важно отметить, что если вы удалите каталог, все файлы в нем также будут удалены.

Изменение прав доступа к каталогам и файлам

Для просмотра прав доступа к файлам и прав собственности на файлы и каталоги используйте команду ls -al . Варианты и предназначены для отображения скрытых файлов или всех файлов, а вариант -1 - для длинного списка.Результат выглядит примерно так:

  drwxr-xr-x 2 user user 4096 Jan 9 10:11 documents
-rw-r - r-- 1 пользователь пользователь 675 7 янв, 12:05 .profile
drwxr-xr-x 4 пользователь пользователь 4096 7 января 14:55 общедоступный
  

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

  `drwxr-xr-x` - это разрешения. 
`2` - количество файлов или каталогов
`пользователь` - владелец
`user` - это группа
4096 - это размер
`9 января 10: 11` - дата / время последнего доступа
`документы` - это каталог
  

Примечание

Так как каталог сам по себе является файлом, любой каталог имеет размер 4096 . Это не отражает размер содержимого каталога.

Команда Chmod

Команда chmod является сокращением для режима изменения. Chmod используется для изменения разрешений на файлы и каталоги. Команда chmod может использоваться с буквами или цифрами (также известными как восьмеричные) для установки разрешений. Буквы, используемые с chmod, приведены в таблице ниже:

4

01

Letter Permission
r Read
w Write
9047 X Выполнить (только если файл является каталогом)
s Установить идентификатор пользователя или группы при выполнении
t Сохранить текст программы на устройстве подкачки
u Текущие права доступа к файлу имеет для владельца
g Текущие разрешения, которые файл имеет для пользователей в той же группе
o Текущие разрешения, которые файл имеет для других, не входящих в группу

Важно помнить, первый символ первого столбца списка файлов обозначает, является ли это каталогом или файлом. Остальные девять символов - это права доступа к файлу / каталогу. Первые три символа предназначены для пользователя, следующие три - для группы, а последние три - для остальных. Пример drwxrw-r– разбит следующим образом:

d - это каталог

rwx у пользователя есть права на чтение, запись и выполнение

rw- у группы есть чтение и запись разрешения

r– все остальные имеют разрешения только на чтение

Обратите внимание, что прочерк (-) означает, что разрешения удалены.Таким образом, с группой «все остальные» r– переводится как разрешение только на чтение, разрешения на запись и выполнение были удалены.

И наоборот, знак плюс (+) эквивалентен предоставлению разрешений: chmod u + r, g + x

Пример выше переводится следующим образом:

  u для пользователя
r для чтения
г для группы
x предназначен для выполнения
  

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

Chmod Octal Format

Чтобы использовать восьмеричный формат, вы должны вычислить права доступа для каждой части файла или каталога. Первые десять упомянутых выше символов соответствуют четырехзначным числам в восьмеричном формате. Разрешение на выполнение равно числу один (1), разрешение на запись равно числу два (2), а разрешение на чтение равно числу четыре (4). Поэтому, когда вы используете восьмеричный формат, вам необходимо вычислить число от 0 до 7 для каждой части разрешения.Для пояснения ниже представлена ​​таблица.

Хотя восьмеричный формат может показаться трудным для понимания, его легко использовать, как только вы поймете его суть. Однако установка разрешений с помощью r, w и x может быть проще. Ниже приведены примеры использования буквенного и восьмеричного форматов для установки разрешений для файла или каталога.

Пример синтаксиса: chmod <восьмеричное число или буквы> <имя файла / каталога>

Формат письма: chmod go-rwx Work (Запретить разрешение rwx для группы и других)

Вывод ls - al после приведенной выше команды chmod будет выглядеть следующим образом:

  dr -------- 2 пользователя пользователь 4096 17 декабря 14:38 Работа
  

Восьмеричный формат: chmod 444 Work

Результат ls -al после приведенной выше команды chmod будет выглядеть следующим образом:

  dr - r - r-- 2 user user 4096 Dec 17 14:38 Работа
  

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

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

Помимо наиболее распространенных разрешений на чтение / запись / выполнение файлов, есть несколько дополнительных режимов, которые могут оказаться полезными, в частности режим + t ( липкий бит ) и + s режим ( бит setuid ). Эти функции описывают поведение файлов и исполняемых файлов в многопользовательских ситуациях.

При установке для каталога липкий бит или режим + t означает, что только владелец (или корень) может удалять или переименовывать файлы в этом каталоге, независимо от того, какие пользователи имеют права записи в каталог, способ членства в группе или владения.Это полезно, когда каталог принадлежит группе, через которую несколько пользователей имеют общий доступ на запись к заданному набору файлов.

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

Чтобы установить бит липкости в каталоге с именем / root / sticky , введите следующую команду:

  chmod + t / root / sticky
  

Чтобы удалить липкий бит из файла или каталога, используйте команду chmod -t .Обратите внимание: чтобы изменить липкий бит, вы должны быть либо пользователем root, либо владельцем файла / каталога. Пользователь root может удалять каталоги и файлы в них независимо от состояния липкого бита.

setuid бит, или + s , когда установлен для файлов, позволяет пользователям с разрешениями на выполнение данного файла возможность запускать этот файл с разрешениями владельца файла. Например, если файл work принадлежал корневому пользователю и группе Marketing , члены группы marketing могли запускать программу work , как если бы они были корневым пользователем. В некоторых случаях это может представлять потенциальную угрозу безопасности, и исполняемые файлы должны быть должным образом оценены перед получением флага + s . Чтобы установить бит + s в файле с именем / usr / bin / work , введите следующую команду:

  chmod g + s / usr / bin / work
  

В отличие от режима + s для владения файлом, влияние режима + s на каталог несколько иное. Файлы, созданные в каталогах + s , получают право собственности на пользователя и группу этого каталога, а не на право собственности пользователя, создавшего файл и их группу по умолчанию.Чтобы установить параметр setguid (идентификатор группы) в каталоге, используйте следующую команду:

  chmod g + s / var / doc-store /
  

Чтобы установить setuid (идентификатор пользователя) для каталога с именем / var / doc-store , введите следующую команду:

  chmod u + s / var / doc-store /
  

Изменение владельца файла

По умолчанию все файлы «принадлежат» пользователю, который их создает, и группе этого пользователя по умолчанию. Чтобы изменить владельца файла, используйте команду chown в формате chown user: group / path / to / file .В следующем примере право собственности на файл «list.html» изменяется на пользователя «cjones» в группе «marketing»:

  chown cjones: marketing list.html
  

Чтобы изменить владельца каталога и всех файлов, содержащихся внутри, используйте рекурсивную опцию с флагом -R . В следующем примере измените владельца / srv / smb / Leadership / на пользователя «cjones» в группе «marketing»:

  chown -R cjones: marketing / srv / smb / лидерство /
  

Использование пользователей и групп Linux

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

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

Напротив, группы полезны для разрешения нескольких независимых учетных записей пользователей для совместной работы и обмена файлами. Если вы создаете группы на компьютере для выполнения общих задач для каждой задачи (например, веб-редакторы, участники, отправители контента, поддержка) и добавляете соответствующих пользователей в соответствующие группы, эти пользователи могут редактировать и запускать один и тот же набор файлов без поделиться этими файлами со всем миром. Использование команды chown с правами доступа к файлам 770 и 740 поможет достичь этой цели.

Изучение оболочки - Урок 9: Разрешения

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

Что именно это означает? Это означает, что более одного пользователя могут быть
одновременно работая с компьютером. В то время как настольный или портативный компьютер
имеет только одну клавиатуру и монитор, он может использоваться более чем одним пользователем.
Например, если компьютер подключен к сети или Интернету, удаленный
пользователи могут войти в систему через ssh (безопасная оболочка) и управлять
компьютер.Фактически, удаленные пользователи могут запускать графические приложения и иметь
вывод отображается на удаленном компьютере. Система X Window поддерживает это.

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

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

В этом уроке будут рассмотрены следующие команды:

  • chmod - изменить
    права доступа к файлам
  • su - временно
    стать суперпользователем
  • sudo - временно
    стать суперпользователем
  • chown - изменить
    владение файлом
  • chgrp - изменить а
    групповое владение файлом

Права доступа к файлам

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

Чтобы увидеть настройки разрешений для файла, мы можем использовать команду ls . В качестве примера мы рассмотрим программу bash , которая находится в / bin
каталог:

[me @ linuxbox me] $ ls -l / bin / bash
-rwxr-xr-x 1 root root 1113504 6 июня 2019 г. / bin / bash

Здесь мы видим:

  • Файл "/ bin / bash" принадлежит пользователю
    "корень"
  • Суперпользователь имеет право читать, писать,
    и запустите этот файл
  • Файл принадлежит группе "root"
  • Члены группы "root" также могут читать и
    выполнить этот файл
  • Все остальные могут прочитать и выполнить это
    файл

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

chmod

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

Легко представить настройки разрешений как серию битов (
как компьютер о них думает). Вот как это работает:

 rwx rwx rwx = 111 111 111
rw- rw- rw- = 110 110 110
rwx --- --- = 111 000 000

и так далее...

rwx = 111 в двоичном формате = 7
rw- = 110 в двоичном формате = 6
r-x = 101 в двоичном формате = 5
r-- = 100 в двоичной системе = 4 

Теперь, если мы представим каждый из трех наборов разрешений (владелец, группа,
и другие) в виде одной цифры, у нас есть довольно удобный способ выразить
возможные настройки разрешений.Например, если мы хотим установить
some_file иметь права на чтение и запись для владельца, но
хотели, чтобы файл был закрыт для других, мы бы:

[me @ linuxbox me] $ chmod 600 some_file

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

Значение Значение
777 (rwxrwxrwx) Нет ограничений на
разрешения.Кто угодно может делать что угодно.
Обычно нежелательная настройка.
755 (rwxr-xr-x) Владелец файла может
читать, писать и выполнять файл. Все остальные
может читать и выполнять файл. Эта настройка
является общим для программ, которые используются всеми
пользователей.
700 (rwx ------) Владелец файла может
читать, писать и выполнять файл.Никто
остальное имеет какие-то права. Эта настройка полезна
для программ, которые может использовать только владелец, и
должны храниться в тайне от других.
666 (rw-rw-rw-) Все пользователи могут читать
и напишите файл.
644 (rw-r - r--) Владелец может читать
и писать файл, а все остальные могут только
прочтите файл. Обычная настройка данных
файлы, которые могут читать все, но только
владелец может измениться.
600 (rw -------) Владелец может читать
и напишите файл. У всех остальных нет прав.
Обычная настройка для файлов данных, которые
владелец хочет сохранить конфиденциальность.

Разрешения каталога

Команда chmod также может использоваться для управления
права доступа к каталогам. Опять же, мы можем использовать восьмеричную запись, чтобы установить
разрешения, но значение атрибутов r, w и x отличается:

  • r - Позволяет отображать содержимое каталога
    если также установлен атрибут x.
  • w - Позволяет создавать файлы в каталоге,
    удален или переименован, если также установлен атрибут x.
  • x - Позволяет войти в каталог (например, cd dir ).

Вот несколько полезных
настройки для справочников:

Значение Значение
777 (rwxrwxrwx) Нет ограничений на
разрешения.Кто угодно может перечислять файлы, создавать
новые файлы в каталоге и удалить файлы
в каталоге. Вообще не хорошо
параметр.
755 (rwxr-xr-x) Владелец каталога
имеет полный доступ. Все остальные могут перечислить
каталог, но не может ни создавать файлы, ни удалять
их. Этот параметр является общим для каталогов
которым вы хотите поделиться с другими пользователями.
700 (rwx ------) Владелец каталога
имеет полный доступ.Больше ни у кого нет прав.
Этот параметр полезен для каталогов,
только владелец может использовать и должен храниться
частное от других.

Как стать суперпользователем на короткое время

Часто бывает необходимо стать суперпользователем, чтобы
выполнять важные задачи системного администрирования, но
как мы знаем, мы
не должны оставаться в системе как суперпользователь.
В большинстве дистрибутивов есть программа, которая может дать вам
временный доступ к привилегиям суперпользователя.Эта программа называется su
(сокращение от замещающего пользователя) и может использоваться в тех
случаи, когда вам нужно быть суперпользователем для небольшого
количество задач. Чтобы стать суперпользователем, просто
введите команду su . Ты сможешь
будет запрошен пароль суперпользователя:

[me @ linuxbox me] $ su
Пароль:
[root @ linuxbox me] #

После выполнения команды su у нас есть новый
сеанс оболочки в качестве суперпользователя. Чтобы выйти из сеанса суперпользователя, введите exit , и мы вернемся к предыдущему сеансу.

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

[me @ linuxbox me] $ sudo some_command
Пароль для меня:
[me @ linuxbox me]

долларов

Фактически, современные дистрибутивы даже не устанавливают пароль учетной записи root таким образом
делает невозможным войти в систему как пользователь root.Корневая оболочка все еще возможна
с sudo с использованием параметра "-i":

[me @ linuxbox me] $ sudo -i
Пароль для меня:
корень @ linuxbox: ~ #

Изменение владельца файла

Мы можем изменить владельца файла с помощью команды chown . Вот пример: предположим, мы хотим
измените владельца some_file с «я» на «вы». Мы могли:

[me @ linuxbox me] $ sudo chown you some_file

Обратите внимание, что для смены владельца файла у нас должен быть суперпользователь.
привилегии.Для этого в нашем примере использовалась команда sudo
команда для выполнения chown .

chown работает с каталогами так же, как и
по файлам.

Изменение группы собственности

Групповое владение файлом или каталогом можно изменить с помощью chgrp . Эта команда используется так:

[me @ linuxbox me] $ chgrp new_group some_file

В приведенном выше примере мы изменили групповое владение
some_file из предыдущей группы в «new_group».Мы должны быть
владелец файла или каталога для выполнения chgrp .

Дополнительная литература

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

В августе прошлого года Linux Foundation начал сертификацию LFCS ( Linux Foundation Certified Sysadmin ), совершенно новую программу, цель которой - позволить людям везде и в любом месте сдать экзамен, чтобы получить сертификат от базовой до промежуточной операционной поддержки для Системы Linux, включающие поддержку работающих систем и служб, а также общий мониторинг и анализ, а также интеллектуальное принятие решений, позволяющее решать, когда необходимо передать проблемы в группы поддержки более высокого уровня.

Сертифицированный системный администратор Linux Foundation - часть 8

Просмотрите следующее видео, в котором описывается введение в программу сертификации Linux Foundation.

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

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

Добавление учетных записей пользователей

Чтобы добавить новую учетную запись пользователя, вы можете запустить любую из следующих двух команд от имени пользователя root.

 # adduser [new_account]
# useradd [new_account]
 

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

1. Создан его / ее домашний каталог (по умолчанию / home / username ).

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

 .bash_logout
.bash_profile
.bashrc
 

3. Почтовый ящик создается для пользователя в / var / spool / mail / , имя пользователя .

4. Группа будет создана и получит то же имя, что и новая учетная запись пользователя.

Понимание / etc / passwd

Полная информация об учетной записи хранится в файле / etc / passwd . Этот файл содержит запись для каждой системной учетной записи пользователя и имеет следующий формат (поля разделены двоеточием).

 [имя пользователя]: [x]: [UID]: [GID]: [Комментарий]: [Домашний каталог]: [Оболочка по умолчанию]
 
  1. Поля [имя пользователя] и [Комментарий] говорят сами за себя.
  2. x во втором поле указывает, что учетная запись защищена теневым паролем (в / etc / shadow ), который необходим для входа в систему как [имя пользователя] .
  3. Поля [UID] и [GID] представляют собой целые числа, которые представляют идентификацию пользователя и первичную идентификацию группы, к которой принадлежит [имя пользователя] , соответственно.
  4. [Домашний каталог] указывает абсолютный путь к домашнему каталогу [имя пользователя] , и
  5. [Оболочка по умолчанию] - это оболочка, которая будет доступна этому пользователю, когда он или она войдет в систему.
Понимание / etc / group

Информация о группе хранится в файле / etc / group . Каждая запись имеет следующий формат.

 [Имя группы]: [Пароль группы]: [GID]: [Участники группы]
 
  1. [Имя группы] - это имя группы.
  2. x в [Групповой пароль] указывает, что групповые пароли не используются.
  3. [GID] : то же, что и в / etc / passwd.
  4. [члены группы] : список пользователей, которые являются членами группы [название группы] , разделенных запятыми.

Добавление учетных записей пользователей

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

 # usermod [параметры] [имя пользователя]
 
Установка даты истечения срока действия счета

Используйте флаг –expiredate , за которым следует дата в формате ГГГГ-ММ-ДД .

 # usermod --expiredate 2014-10-30 tecmint
 
Добавление пользователя в дополнительные группы

Используйте комбинированные параметры -aG или –append –groups , за которыми следует список групп, разделенных запятыми.

 # usermod --append --groups root, пользователи tecmint
 
Изменение местоположения по умолчанию домашнего каталога пользователя

Используйте параметры -d или –home , за которыми следует абсолютный путь к новому домашнему каталогу.

 # usermod --home / tmp tecmint
 
Изменение оболочки, которую пользователь будет использовать по умолчанию

Используйте –shell , за которым следует путь к новой оболочке.

 # usermod --shell / bin / sh tecmint
 
Отображение групп, в которых состоит пользователь
 # группы tecmint
# id tecmint
 

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

 # usermod --expiredate 2014-10-30 --append --groups root, users --home / tmp --shell / bin / sh tecmint
 

Примеры команды usermod

В приведенном выше примере мы установим дату истечения срока действия учетной записи пользователя tecmint на 30 октября 2014 г. .Мы также добавим учетную запись в корневой каталог и группу пользователей. Наконец, мы установим sh в качестве оболочки по умолчанию и изменим расположение домашнего каталога на / tmp :

.

Читайте также :

  1. 15 примеров команд useradd в Linux
  2. 15 примеров команд usermod в Linux

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

Отключение учетной записи путем блокировки пароля

Используйте вариант -L (верхний регистр L) или –lock , чтобы заблокировать пароль пользователя.

 # usermod --lock tecmint
 
Разблокировка пароля пользователя

Используйте параметр –u или –unlock , чтобы разблокировать пароль пользователя, который ранее был заблокирован.

 # usermod - разблокировать tecmint
 

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

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

Выполните следующую серию команд для достижения цели.

 # groupadd common_group # Добавить новую группу
# chown: common_group common.txt # Измените владельца группы common.txt на common_group
# usermod -aG common_group user1 # Добавить пользователя user1 в common_group
# usermod -aG common_group user2 # Добавить user2 в common_group
# usermod -aG common_group user3 # Добавить пользователя user3 в common_group
 
Удаление группы

Вы можете удалить группу с помощью следующей команды.

 # groupdel [имя_группы]
 

Если есть файлы, принадлежащие имя_группы , они не будут удалены, но владельцем группы будет установлен GID группы, которая была удалена.

Разрешения для файлов Linux

Помимо базовых разрешений на чтение, запись и выполнение, которые мы обсуждали в разделах «Инструменты архивирования и установка атрибутов файлов - часть 3 этой серии», существуют другие, менее используемые (но не менее важные) параметры разрешений, иногда называемые « специальные разрешения». ».

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

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

Вы можете удалить учетную запись (вместе с ее домашним каталогом, если он принадлежит пользователю, и всеми файлами, находящимися в нем, а также почтовым ящиком), используя команду userdel с опцией –remove .

 # userdel --remove [имя пользователя]
 
Управление Группой

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

Например, предположим, что у вас есть следующие пользователи.

  1. пользователь1 (основная группа: пользователь1)
  2. пользователь2 (основная группа: пользователь2)
  3. user3 (основная группа: user3)

Всем им нужно чтение и запись доступ к файлу с именем общий.txt , расположенный где-нибудь в вашей локальной системе, или, возможно, в сетевой папке, созданной user1 . У вас может возникнуть соблазн сделать что-то вроде,

 # chmod 660 common.txt
ИЛИ ЖЕ
# chmod u = rw, g = rw, o = common.txt [обратите внимание на пробел между последним знаком равенства и именем файла]
 

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

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

Общие сведения о Setuid

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

Подводя итог, можно сказать, что не только пользователь может выполнять двоичный файл, но и то, что он может делать это с правами root. Например, давайте проверим разрешения для / bin / passwd . Этот двоичный файл используется для изменения пароля учетной записи и изменения файла / etc / shadow .Суперпользователь может изменить любой пароль, но все остальные пользователи должны иметь возможность изменять только свой собственный.

Примеры команды passwd

Таким образом, любой пользователь должен иметь разрешение на запуск / bin / passwd , но только root сможет указать учетную запись. Другие пользователи могут изменять только свои соответствующие пароли.

Изменить пароль пользователя

Понимание Setgid

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

 # chmod g + s [имя файла]
 

Чтобы установить идентификатор setgid в восьмеричной форме, добавьте число 2 к текущим (или желаемым) базовым разрешениям.

 # chmod 2755 [каталог]
 
Установка SETGID в каталоге

Добавление Setgid в каталог

Общие сведения о липком бите

Когда для файлов установлен « липкий бит », Linux просто игнорирует его, тогда как для каталогов он предотвращает удаление или даже переименование файлов, содержащихся в нем, если пользователь не владеет каталогом, файлом или корень.

 # chmod o + t [каталог]
 

Чтобы установить закрепленный бит в восьмеричной форме, добавьте число 1 к текущим (или желаемым) базовым разрешениям.

 # chmod 1755 [каталог]
 

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

Добавить Stickybit в каталог

Специальные атрибуты файлов Linux

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

 # chattr + i file1
# chattr + a file2
 

После выполнения этих двух команд file1 будет неизменным (что означает, что он не может быть перемещен, переименован, изменен или удален), тогда как file2 войдет в режим только добавления (может быть открыт только в режиме добавления для записи).

Команда Chattr для защиты файлов

Доступ к учетной записи root и использование sudo

Один из способов получения доступа к учетной записи root - это ввести.

 $ su
 

, а затем введите пароль root.

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

 $ вс -
 

, а затем введите пароль root.

Включение доступа Sudo для пользователей

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

Прочтите также : Разница между su и sudo Пользователь

Для аутентификации с использованием sudo пользователь использует свой собственный пароль. После ввода команды нам будет предложено ввести наш пароль (не пароль суперпользователя), и если аутентификация прошла успешно (и если пользователю были предоставлены привилегии для выполнения команды), указанная команда будет выполнена.

Чтобы предоставить доступ к sudo, системный администратор должен отредактировать файл / etc / sudoers . Рекомендуется редактировать этот файл с помощью команды visudo вместо того, чтобы открывать его непосредственно в текстовом редакторе.

 # visudo
 

Это открывает файл / etc / sudoers с использованием vim (вы можете следовать инструкциям, приведенным в разделе «Установка и использование vim в качестве редактора - Часть 2 этой серии, чтобы отредактировать файл»).

Это самые актуальные строки.

 По умолчанию secure_path = "/ usr / sbin: / usr / bin: / sbin"
корень ВСЕ = (ВСЕ) ВСЕ
tecmint ALL = / bin / yum update
gacanepa ALL = NOPASSWD: / bin / updatedb
% admin ALL = (ВСЕ) ВСЕ
 

Давайте рассмотрим их поближе.

 По умолчанию secure_path = "/ usr / sbin: / usr / bin: / sbin: / usr / local / bin"
 

Эта строка позволяет указать каталоги, которые будут использоваться для sudo , и используется для предотвращения использования пользовательских каталогов, которые могут нанести вред системе.

Следующие строки используются для указания разрешений.

 root ALL = (ВСЕ) ВСЕ
 
  1. Первое ключевое слово ALL указывает, что это правило применяется ко всем хостам.
  2. Второй ВСЕ указывает, что пользователь в первом столбце может запускать команды с привилегиями любого пользователя.
  3. Третий ALL означает, что любая команда может быть запущена.
 tecmint ALL = / bin / yum update
 

Если после знака = не указан пользователь, sudo принимает пользователя root.В этом случае пользователь tecmint сможет запустить yum update от имени пользователя root.

 gacanepa ALL = NOPASSWD: / bin / updatedb
 

Директива NOPASSWD позволяет пользователю gacanepa запускать / bin / updatedb без необходимости вводить свой пароль.

% admin ВСЕ = (ВСЕ) ВСЕ
 

Знак % указывает, что эта строка относится к группе с именем « admin ». Смысл остальной части строки идентичен значению обычного пользователя.Это означает, что члены группы « admin » могут выполнять все команды от имени любого пользователя на всех хостах.

Чтобы узнать, какие привилегии предоставляет вам sudo, используйте параметр « -l », чтобы перечислить их.

Правила доступа Sudo

PAM (подключаемые модули аутентификации)

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

Например, с PAM не имеет значения, хранится ли ваш пароль в / etc / shadow или на отдельном сервере в вашей сети.

Например, когда программе входа в систему требуется аутентифицировать пользователя, PAM динамически предоставляет библиотеку, которая содержит функции для правильной схемы аутентификации. Таким образом, изменить схему аутентификации для приложения входа в систему (или любой другой программы, использующей PAM) легко, поскольку это включает только редактирование файла конфигурации (скорее всего, файла, названного в честь приложения, расположенного внутри / etc / pam.d и менее вероятно в /etc/pam.conf ).

Файлы внутри /etc/pam.d указывают, какие приложения изначально используют PAM. Кроме того, мы можем определить, использует ли определенное приложение PAM, проверив, связана ли с ним библиотека PAM ( libpam ):

 # ldd $ (какой логин) | grep libpam # логин использует PAM
# ldd $ (какой наверху) | grep libpam # top не использует PAM
 

Проверьте Linux PAM Library

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

Давайте проверим файл конфигурации PAM для passwd - да, хорошо известной утилиты для изменения паролей пользователей. Он расположен по адресу /etc/pam.d/passwd :

.

 # cat / etc / passwd
 

Файл конфигурации PAM для Linux. Пароль

В первом столбце указан тип аутентификации , который будет использоваться с путем модуля (третий столбец).Когда перед типом стоит дефис, PAM не будет записывать в системный журнал, если модуль не может быть загружен, потому что он не может быть найден в системе.

Доступны следующие типы аутентификации:

  1. учетная запись : этот тип модуля проверяет, предоставил ли пользователь или служба действительные учетные данные для аутентификации.
  2. auth : этот тип модуля проверяет, является ли пользователь тем, кем он / она является, и предоставляет все необходимые привилегии.
  3. пароль : этот тип модуля позволяет пользователю или службе обновлять свой пароль.
  4. сеанс : этот тип модуля указывает, что должно быть сделано до и / или после успешной аутентификации.

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

  1. реквизит : если аутентификация через этот модуль не удалась, общая аутентификация будет немедленно отклонена.
  2. требуется аналогичен реквизиту, хотя все остальные перечисленные модули для этой службы будут вызываться перед отказом в аутентификации.
  3. достаточно : если аутентификация через этот модуль не удалась, PAM все равно предоставит аутентификацию, даже если предыдущий, помеченный как обязательный, не прошел.
  4. необязательный : если аутентификация через этот модуль не удалась или завершилась успешно, ничего не произойдет, если только это единственный модуль такого типа, определенный для этой службы.
  5. include означает, что строки данного типа должны быть прочитаны из другого файла.
  6. Подстек

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

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

Первые три строки в /etc/pam.d/passwd (показано выше) загружают модуль system-auth , чтобы проверить, что пользователь предоставил действительные учетные данные (учетную запись). Если это так, это позволяет ему / ей изменить токен аутентификации (пароль), дав разрешение на использование passwd ( auth ).

Например, если вы добавите

 запомнить = 2
 

на следующую строку

 достаточно пароля pam_unix.Итак, sha512 shadow nullok try_first_pass use_authtok
 

в /etc/pam.d/system-auth :

 пароль достаточный pam_unix. so sha512 shadow nullok try_first_pass use_authtok помнить = 2
 

последние два хешированных пароля каждого пользователя сохраняются в / etc / security / opasswd , чтобы их нельзя было повторно использовать:

Поля паролей Linux

Сводка

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

Управление разрешениями и правами собственности на файлы - IBM Developer

Обзор

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

  • Управление разрешениями на доступ как к обычным, так и к специальным файлам, а также к каталогам
  • Обеспечение безопасности с помощью таких режимов доступа, как suid, sgid и липкий бит
  • Изменить маску создания файла
  • Предоставить доступ к файлам членам группы

Это руководство поможет вам подготовиться к Задаче 104. 5 в теме 104 экзамена 101 Linux Server Professional (LPIC-1). Цель имеет вес 3.

Пользователи, группы и владение файлами

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

Мы представили некоторые концепции владения файлами и группами, описанные в этом руководстве, в предыдущем руководстве «Изучение Linux 101: управление дисковыми квотами». Этот учебник поможет вам более полно понять эти концепции.

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

Чтобы извлечь максимальную пользу из руководств этой серии, вы должны иметь базовые знания Linux и работающую систему Linux, на которой вы можете практиковать команды, описанные в этом руководстве. Если не указано иное, в примерах этого руководства используется CentOS 6 с 2.6.32-573 ядро. Иногда разные версии программы форматируют выходные данные по-разному, поэтому ваши результаты могут не всегда выглядеть точно так, как в списках и на рисунках, показанных здесь.

Если не указано иное, в примерах в этом руководстве используется Fedora 13 с ядром 2.6.34. Ваши результаты в других системах могут отличаться.

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

Для начала давайте рассмотрим базовую информацию о пользователях и группах.

Кто я

Если вы не стали другим пользователем, вашим ID останется тот, который вы использовали для входа в систему.Если вы стали другим пользователем, ваше приглашение может включать ваш идентификатор пользователя, как это делается в большинстве примеров в этом руководстве. Если ваше приглашение не включает ваш идентификатор пользователя, вы можете использовать команду whoami , чтобы проверить свой текущий действующий идентификатор. В листинге 1 показаны некоторые примеры, в которых строки приглашения (из переменной среды PS1) отличаются от других примеров в этом руководстве. Наличие вашего идентификатора в строке приглашения может быть полезной функцией.

Листинг 1. Определение эффективного идентификатора пользователя
 
[ian @ attic4 ‑ cent ~] $ whoami
Ян
[ian @ attic4 ‑ cent ~] $ ksh ‑l
$ whoami
Ян
$ su jenni
Пароль:
[jenni @ attic4 ‑ cent ian] $ whoami
Дженни
[jenni @ attic4 ‑ cent ian] $ echo "$ PS1"
[\ u @ \ h \ W] \ $
[jenni @ attic4 ‑ cent ian] $ su - mary
Пароль:
[Мэри @ attic4 ‑ cent ~] $ whoami
Мэри
  

Показать ещеПоказать еще значок

В каких группах я

Точно так же вы можете узнать, в каких группах вы находитесь, с помощью команды groups .Вы можете узнать информацию о пользователях и группах с помощью команды id . Добавьте параметр идентификатора пользователя в группы или id , чтобы видеть информацию для этого идентификатора пользователя вместо текущего идентификатора пользователя. В листинге 2 показаны некоторые примеры. Обратите внимание, что без идентификатора пользователя команда id также отобразит контекст SELinux, а также базовую информацию об идентификаторе.

Листинг 2. Определение членства в группе
 
[ian @ attic4 ‑ cent ~] $ id
uid = 1000 (ian) gid = 1000 (ian) группы = 1000 (ian), 1002 (разработка), 8093 (редактор) context =
неограниченный_у: неограниченный_р: неограниченный_т: s0 ‑ s0: c0.c1023
[ian @ attic4 ‑ cent ~] $ id ian
uid = 1000 (ian) gid = 1000 (ian) группы = 1000 (ian), 1002 (разработка), 8093 (редактор)
[ian @ attic4 ‑ cent ~] $ groups
ian редактор разработки
[ian @ attic4 ‑ cent ~] $ id, Дженни
uid = 1004 (jenni) gid = 1004 (jenni) группы = 1004 (jenni), 1002 (разработка)
[ian @ attic4 ‑ cent ~] $ groups, Дженни
Дженни: Развитие Дженни
[ian @ attic4 ‑ cent ~] $ su jenni
Пароль:
[jenni @ attic4 ‑ cent ian] $ группы
Дженни развитие
[jenni @ attic4 ‑ cent ian] $ groups ian
ian: ian редактор разработки
  

Показать ещеПоказать еще значок

w3.org/1999/xhtml"> Владение файлом и разрешения

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

Обычные файлы

Используйте команду ls-l для отображения владельца и группы.

Листинг 3. Определение владельца файла
 
[ian @ attic4 ‑ cent ~] $ ls ‑l / bin / bash .bashrc helloworld.C
‑Rw ‑ r ‑ r‑. 1 ian ian 124 16 октября 2014 г.bashrc
‑Rwxr ‑ xr ‑ x. 1 корень root 2 23 июля, 14:55 / bin / bash
‑Rw ‑ rw ‑ r‑. 1 ian development 116 8 августа 21:40 helloworld.C
  

Показать ещеПоказать еще значок

В этом конкретном примере пользователь ian’s.Файл bashrc принадлежит ему и находится в группе ian, которая является его основной группой. Точно так же / bin / bash принадлежит пользователю root и находится в корне группы. Однако helloworld. C принадлежит пользователю ian, но его группа занимается разработкой. Имена пользователей и имена групп происходят из отдельных пространств имен, поэтому данное имя может быть как именем пользователя, так и именем группы. Фактически, многие дистрибутивы по умолчанию создают соответствующую группу для каждого нового пользователя.

Модель разрешений Linux имеет три типа разрешений для каждого объекта файловой системы.Разрешения: чтение (r), запись (w) и выполнение (x). Разрешение на запись включает в себя возможность изменять или удалять объект. Кроме того, эти разрешения указываются отдельно для владельца файла, членов группы файла и всех остальных.

Возвращаясь к первому столбцу листинга 3, обратите внимание, что он содержит строку из одиннадцати символов. Одиннадцатый символ добавлен недавно. Мы обсудим это через минуту. Первый символ описывает тип объекта ( - для обычного файла в этом примере), а следующие девять символов представляют три группы по три символа. Первая группа указывает права на чтение, запись и выполнение для владельца файла. указывает, что соответствующее разрешение не предоставлено. Таким образом, пользователь ian может читать и записывать файл .bashrc, но не может его выполнять; в то время как root может читать и писать, и выполняют файл / bin / bash. Вторая группа указывает разрешения на чтение, запись и выполнение для группы файла. Члены группы разработки могут читать или писать файл helloworld.C ian, а все остальные могут только читать его.Точно так же члены корневой группы и все остальные могут читать или выполнять файл / bin / bash.

Справочники

Каталоги

используют те же флаги разрешений, что и обычные файлы, но интерпретируются по-разному.

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

Без разрешения на выполнение для каталога объекты файловой системы внутри каталога недоступны. Без разрешения на чтение в каталоге объекты файловой системы внутри каталога не отображаются в списке каталогов, но к этим объектам можно получить доступ, если известен полный путь к объекту на диске. Листинг 4 представляет собой искусственный пример, иллюстрирующий эти моменты.

Листинг 4. Разрешения и каталоги
 
[ian @ attic4 ‑ cent ~] $ ls ‑l / дом
всего 32
drwx ‑‑‑‑‑‑.4. Крис Крис 4096 8 августа 18:11 Крис
drwx ‑ x ‑‑‑. 4 разработка разработка 4096 7 августа 16:00 разработка
drwxr ‑ x ‑‑‑. 26 greg development 4096 8 августа 22:01 greg
drwx ‑‑‑‑‑‑. 42 ian ian 4096 8 августа 21:40 ian
drwx ‑‑‑‑‑‑. 26 ian ‑ 500 ian ‑ 500 4096 8 августа 21:59 ian ‑ 500
drwx ‑‑‑‑‑‑. 26 Дженни Дженни 4096 8 августа 21:52 Дженни
drwx ‑‑‑‑‑‑. 26 мэри мэри 4096 8 августа 21:53 мэри
drwx ‑‑‑‑‑‑.  26 testuser testuser 4096 7 августа 22:07 testuser
[ian @ attic4 ‑ cent ~] $ ls ‑a ~ greg /.ба *
/home/greg/.bash_history /home/greg/.bash_profile
/home/greg/.bash_logout /home/greg/.bashrc
[ian @ attic4 ‑ cent ~] $ ls ‑a ~ jenni
ls: невозможно открыть каталог / home / jenni: в доступе отказано
[ian @ attic4 ‑ cent ~] $ ls ‑a ~ разработка
ls: невозможно открыть каталог / home / development: отказано в разрешении
[ian @ attic4 ‑ cent ~] $ head ‑n 3 ~ разработка / .bashrc
# .bashrc

# Источник глобальных определений
  

Показать ещеПоказать еще значок

Первый символ длинного списка описывает тип объекта ( d для каталога).Домашний каталог пользователя greg имеет разрешение на чтение и выполнение для членов группы разработчиков, поэтому пользователи mary и ian могут просматривать каталог. Домашний каталог пользователя jenni не имеет прав на чтение и выполнение для группы jenni или других пользователей, поэтому пользователь ian не может получить к нему доступ. Домашняя страница разработки пользователя имеет разрешение на выполнение, но не на чтение, поэтому пользователь ian не может перечислить содержимое, но может получить доступ к объектам в каталоге, если он знает, что они существуют.

Другие объекты файловой системы

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

Таблица 1. Типы объектов файловой системы
- Обычный файл
d Справочник
l 9047Символьное устройство

cимвольная ссылка 9047
b Блок специального устройства
p FIFO
s Розетка

Одиннадцатый знак

Одиннадцатый символ в длинном списке из команды ls является недавним улучшением, поэтому в некоторых дистрибутивах могут отображаться только первые десять символов. В других случаях одиннадцатый символ - это пробел, поэтому вы можете его не заметить. Этот символ указывает, применяется ли к файлу альтернативный метод доступа. Когда символ, следующий за битами режима файла, является пробелом, альтернативного метода доступа нет. Когда это печатный символ, то есть такой способ. Метод может быть, например, списком контроля доступа. GNU ls использует символ «.» (Точка) для обозначения файла только с контекстом безопасности SELinux. Файлы с любой другой комбинацией альтернативных методов доступа помечаются знаком «+» (плюс).

Изменение прав

Добавление разрешений

Предположим, вы создали сценарий оболочки «Hello world». Когда вы впервые создаете сценарий, он обычно не исполняется. Используйте команду chmod с опцией + x , чтобы добавить разрешения на выполнение, как показано в листинге 5.

Листинг 5. Создание исполняемого сценария оболочки
 
[ian @ attic4 ‑ cent ~] $ echo 'echo "Привет, мир!"'> hello. sh
[ian @ attic4 ‑ cent ~] $ ls ‑l hello.sh
‑Rw ‑ rw ‑ r‑.1 ian ian 20 8 августа 22:18 hello.sh
[ian @ attic4 ‑ cent ~] $ ./hello.sh
bash: ./hello.sh: В доступе отказано
[ian @ attic4 ‑ cent ~] $ chmod + x hello.sh
[ian @ attic4 ‑ cent ~] $ ./hello.sh
Привет, мир!
[ian @ attic4 ‑ cent ~] $ ls ‑l hello.sh
‑Rwxrwxr ‑ x. 1 ian ian 20 8 августа 22:18 hello.sh
  

Показать ещеПоказать еще значок

Вы можете использовать + r для установки разрешений на чтение и + w для установки разрешений на запись аналогичным образом. Фактически, вы можете использовать любую комбинацию r , w и x вместе.Например, использование chmod + rwx установит все разрешения на чтение, запись и выполнение для файла. Эта форма chmod добавляет разрешения, которые еще не установлены.

Избирательность

Вы могли заметить в приведенном выше примере, что разрешение на выполнение было установлено для владельца, группы, и других. Чтобы быть более избирательным, вы можете добавить к выражению режима префикс u , чтобы установить разрешение для пользователей, g , чтобы установить его для групп, и o , чтобы установить его для других.Указание a устанавливает разрешение для всех пользователей, что эквивалентно его пропуску. В листинге 6 показано, как добавить пользователю и группе права на запись и выполнение для другой копии сценария оболочки.

Листинг 6. Выборочное добавление разрешений
 
[ian @ attic4 ‑ cent ~] $ echo 'echo "Привет, мир!"'> hello2.sh
[ian @ attic4 ‑ cent ~] $ chmod ug + xw hello2.sh
[ian @ attic4 ‑ cent ~] $ ls ‑l hello2.sh
‑Rwxrwxr‑. 1 ian ian 20 9 августа 06:22 hello2.sh
[ 

Показать ещеПоказать еще значок

Удаление разрешений

Иногда вам нужно удалить разрешения, а не добавлять их.Просто измените + на - , и вы удалите все указанные разрешения, которые установлены. В листинге 7 показано, как удалить все разрешения для других пользователей в двух сценариях оболочки.

Листинг 7. Удаление разрешений
 
[ian @ attic4 ‑ cent ~] $ ls ‑l hello.sh
‑Rwxrwxr‑. 1 ian ian 20 9 августа 06:22 hello2.sh
‑Rwxrwxr ‑ x. 1 ian ian 20 8 августа 22:18 hello.sh
[ian @ attic4 ‑ cent ~] $ chmod o ‑ xrw hello.sh
[ian @ attic4 ‑ cent ~] $ ls ‑l привет, * .sh
‑Rwxrwx ‑‑. 1 ian ian 20 9 августа 06:22 hello2.ш
‑Rwxrwx ‑‑. 1 ian ian 20 8 августа 22:18 hello.sh
  

Показать ещеПоказать еще значок

Вы можете изменять права доступа более чем к одному файлу одновременно. Как и в случае с некоторыми другими командами, которые вы встретили в учебниках по теме 103, вы даже можете использовать параметр -R (или --recursive ) для рекурсивной работы с каталогами и файлами.

Настройка разрешений

Теперь, когда вы можете добавлять или удалять разрешения, вы можете задаться вопросом, как установить только определенный набор разрешений. Сделайте это, используя = вместо + или -. Чтобы установить разрешения для вышеуказанных сценариев, чтобы другие пользователи не имели прав доступа, вы можете использовать chmod o = hello * вместо команды, которую мы использовали для удаления разрешений.

Если вы хотите установить разные разрешения для пользователя, группы или другого пользователя, вы можете разделить разные выражения запятыми, например ug = rwx, o = rx , или вы можете использовать числовые разрешения, которые мы опишем ниже.

Восьмеричные разрешения

До сих пор вы использовали символы (ugoa и rxw) для указания разрешений.В каждой группе есть три возможных разрешения. Вы также можете установить разрешения, используя восьмеричные числа вместо символов. В разрешениях, установленных таким образом, используется до четырех восьмеричных цифр. Мы будем смотреть на первую цифру, когда будем обсуждать атрибуты. Вторая цифра определяет права пользователя, третья цифра определяет права группы, а четвертая цифра определяет другие разрешения. Каждая из этих трех цифр создается путем добавления желаемых настроек разрешений: чтение (4), запись (2) и выполнение (1). В примере для привет.sh в листинге 5 сценарий был создан с разрешениями -rw-r – r–, соответствующими восьмеричному числу 644. Установка разрешения на выполнение для всех изменила режим на 755.

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

Таблица 2. Числовые разрешения

rwx 7
rw- 6

9034 9047 9047 9047 904
r-- 4
-wx 3
-w- 2
1
- 0

Режимы доступа

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

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

suid и sgid

Модель разрешений Linux имеет два специальных режима доступа: suid (установить идентификатор пользователя) и sgid (установить идентификатор группы). Когда для исполняемой программы установлены режимы доступа suid, она будет работать так, как если бы она была запущена владельцем файла, а не пользователем, который действительно запустил ее. Точно так же с установленными режимами доступа sgid программа будет работать так, как если бы инициирующий пользователь принадлежал к группе файла, а не к его собственной группе.Можно установить один или оба режима доступа.

В листинге 8 показано, что исполняемый файл passwd принадлежит пользователю root:

.

Листинг 8. Режим доступа suid в / usr / bin / passwd
 
[ian @ attic4 ‑ cent ~] $ ls ‑l / usr / bin / passwd
‑Rwsr ‑ xr ‑ x. 1 root root 30768 22 февраля 2012 г. / usr / bin / passwd
  

Показать ещеПоказать еще значок

Обратите внимание, что вместо x в тройке разрешений пользователя стоит s . Это указывает на то, что для этой конкретной программы установлены биты suid и исполняемый бит. Таким образом, когда запускается passwd , он будет выполняться так, как если бы пользователь root запустил его с полным доступом суперпользователя, а не пользователя, который его запустил. Поскольку passwd работает с доступом root , он может изменять / etc / passwd.

Биты suid и sgid занимают то же место, что и биты x для пользователя и группы в длинном списке каталогов. Если файл является исполняемым, биты suid или sgid, если они установлены, будут отображаться в нижнем регистре s . В противном случае они отображаются в верхнем регистре S .

Хотя suid и sgid удобны и даже необходимы во многих случаях, неправильное использование этих режимов доступа может привести к нарушению безопасности системы. У вас должно быть как можно меньше программ suid. Команда passwd - одна из немногих, для которой необходимо использовать .

Настройка suid и sgid

Биты suid и sgid устанавливаются и сбрасываются символически с помощью буквы s . Например, u + s устанавливает режим доступа suid, а g-s удаляет режим sgid.В восьмеричном формате suid имеет значение 4 в первой (старшей) цифре, а sgid имеет значение 2.

Справочники и sgid

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

В листинге 9 показано, как пользователь greg может создать каталог, который могут использовать все пользователи группы разработки, а также пример того, как пользователь jenni может создать файл в каталоге.Созданный файл jenni.txt позволяет членам группы писать в файл, поэтому jenni использует chmod g -w , чтобы отключить возможность записи группы.

Листинг 9. Режим доступа и каталоги sgid
 
[greg @ attic4 ‑ cent ~] $ mkdir lpi101
[greg @ attic4 ‑ cent ~] $ chmod g + ws lpi101
[greg @ attic4 ‑ cent ~] $ ls ‑ld lpi101
drwxrwsr ‑ x.  2 greg development 4096 9 августа 06:43 lpi101
[greg @ attic4 ‑ cent ~] $ su - Дженни
Пароль:
[jenni @ attic4 ‑ cent ~] $ touch ~ greg / lpi101 / jenni.txt
[jenni @ attic4 ‑ cent ~] $ ls ‑l ~ greg / lpi101 / jenni.текст
‑Rw ‑ rw ‑ r‑. 1 разработка jenni 0 9 августа 06:44 /home/greg/lpi101/jenni.txt
[jenni @ attic4 ‑ cent ~] $ chmod g ‑ w ~ greg / lpi101 / jenni.txt
[jenni @ attic4 ‑ cent ~] $ ls ‑l ~ greg / lpi101 / jenni.txt
‑Rw ‑ r ‑ r‑. 1 разработка jenni 0 9 августа 06:44 /home/greg/lpi101/jenni.txt
  

Показать ещеПоказать еще значок

Теперь любой член группы разработчиков может создавать файлы в каталоге lpi101 пользователя greg. Как показано в листинге 10, другие члены группы не могут обновить файл gretchen.txt. Однако у них есть разрешение на запись в каталог и поэтому они могут удалить файл.

Листинг 10. Режим доступа sgid и владение файлом
 
                    
[jenni @ attic4 ‑ cent ~] $ su - mary
Пароль:
[mary @ attic4 ‑ cent ~] $ echo "что-то" >> ~ greg / lpi101 / jenni. txt
‑Bash: /home/greg/lpi101/jenni.txt: В доступе отказано
[mary @ attic4 ‑ cent ~] $ rm ~ greg / lpi101 / jenni.txt
rm: удалить обычный пустой файл с защитой от записи /home/greg/lpi101/jenni.txt '? y
[mary @ attic4 ‑ cent ~] `$ ls ‑l ~ greg / lpi101
всего 0
  

Показать ещеПоказать еще значок

Клейкая насадка

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

Оставшийся бит режима доступа называется закрепленным битом . Он представлен символически t и численно как 1 в восьмеричной цифре высокого порядка. Он отображается в длинном списке каталогов вместо флага исполняемого файла для других пользователей (последний символ) с тем же значением для верхнего и нижнего регистра, что и для suid и sgid. Если установлен для каталога, он разрешает только пользователю-владельцу или суперпользователю (root) удалять или разрывать связь с файлом. В листинге 11 показано, как пользователь greg может установить бит закрепления в своем каталоге lpi101, а также показывает, что этот бит установлен для / tmp.

Листинг 11. Прикрепленные каталоги
 
[greg @ attic4 ‑ cent ~] $ chmod + t lpi101
[greg @ attic4 ‑ cent ~] $ ls ‑ld lpi101 / tmp
drwxrwsr ‑ t. 2 greg development 4096 9 августа 06:51 lpi101
drwxrwxrwt. 42 root root 4096 9 августа 06:53 / tmp
  

Показать ещеПоказать еще значок

Исторически следует отметить, что системы UNIX® использовали бит закрепления на файлах, чтобы хранить исполняемые файлы в пространстве подкачки и избегать перезагрузки.Современные ядра Linux игнорируют липкий бит, если он установлен для файлов.

Обзор режима доступа

Таблица 3 суммирует символьное и восьмеричное представление для трех обсуждаемых здесь режимов доступа.

Таблица 3. Режимы доступа
suid s с u 4000
sgid
sgid

2000

липкий т 1000

Объединив это с предыдущей информацией о разрешениях, вы можете увидеть, что полное восьмеричное представление, соответствующее разрешениям greg lpi101 и режимам доступа drwxrwsr-t, равно 3775.Хотя команда ls не отображает восьмеричные разрешения, вы можете отобразить их с помощью команды find , как показано в

Листинг 12.

Разрешения на печать в символьном и восьмеричном формате

 
[greg @ attic4 ‑ cent ~] $ find. ‑Name lpi101 ‑printf "% M% m% f \ n"
drwxrwsr ‑ t 3775 lpi101
  

Показать ещеПоказать еще значок

Неизменяемые файлы

Режимы доступа и разрешения обеспечивают обширный контроль над тем, кто и что может делать с файлами и каталогами.Однако они не предотвращают такие вещи, как непреднамеренное удаление файлов пользователем root. Хотя это выходит за рамки темы 104.5 LPI, есть несколько дополнительных атрибутов , доступных в различных файловых системах, которые предоставляют дополнительные возможности. Один из них — неизменяемый атрибут . Если это установлено, даже root не может удалить файл, пока атрибут не будет снят.

Используйте команду lsattr , чтобы узнать, установлен ли неизменяемый флаг (или любой другой атрибут) для файла или каталога.Чтобы сделать файл неизменяемым, используйте команду chattr с флагом -i .

Листинг 12 показывает, что пользователь root может создать неизменяемый файл, но не может удалить его, пока не будет снят флаг неизменяемости.

Листинг 12. Неизменяемые файлы
 
[root @ attic4 ‑ cent ~] #touch keep.me
[root @ attic4 ‑ cent ~] #chattr + i keep.me
[root @ attic4 ‑ cent ~] #lsattr keep.me
‑‑‑‑ i ‑‑‑‑‑‑‑ keep.me
[root @ attic4 ‑ cent ~] #rm ‑f keep.me
rm: невозможно удалить keep.me ': операция запрещена
[root @ attic4 ‑ cent ~] #chattr ‑i keep.мне
[root @ attic4 ‑ cent ~] `#rm ‑f keep.me  

Показать ещеПоказать еще значок

Для изменения неизменяемого флага требуются права доступа root или, по крайней мере, возможность CAP_LINUX_IMMUTABLE. Создание неизменяемых файлов часто выполняется в рамках усилий по обеспечению безопасности или обнаружению вторжений. См. Страницу руководства по возможностям ( mancapabilities ) для получения дополнительной информации.

Маска создания файла

Когда создается новый файл, в процессе создания указываются разрешения, которые должен иметь новый файл.Часто запрашивается режим 0666, что делает файл доступным для чтения и записи любому пользователю. Каталоги обычно по умолчанию 0777. Однако на это разрешающее создание влияет значение umask , которое указывает, какие разрешения пользователь , а не хочет автоматически предоставлять вновь созданным файлам или каталогам. Система использует значение umask для уменьшения первоначально запрошенных разрешений. Вы можете просмотреть настройку umask с помощью команды umask , как показано в листинге 13.

Листинг 13. Отображение восьмеричной маски umask
 
[ian @ attic4 ‑ cent ~] $ umask
0002
  

Показать ещеПоказать еще значок

Помните, что umask указывает, какие разрешения должны быть предоставлены , а не . В системах Linux, где у пользователей нет закрытых групп, umask обычно по умолчанию 0022, который удаляет группу и другие права записи из новых файлов. Если у пользователей есть частная группа (как в системе CentOS, использованной в этих примерах), umask обычно по умолчанию имеет значение 0002, что удаляет разрешение на запись для других пользователей.Используйте опцию -S , чтобы отобразить umask символически, в форме, которая показывает, какие разрешения разрешены для и .

Используйте команду umask , чтобы установить umask, а также отобразить его. Итак, если вы хотите, чтобы ваши файлы были более приватными и запретили всем группам или другой доступ к вновь созданным файлам, вы должны использовать значение umask 0077. Или установите его символически, используя umask u = rwx, g =, o = , как показано в Листинге 14.

Листинг 14.Установка маски
 
[ian @ attic4 ‑ cent ~] $ umask ‑S
u = rwx, g = rwx, o = rx
[ian @ attic4 ‑ cent ~] $ umask u = rwx, g =, o =
[ian @ attic4 ‑ cent ~] $ umask
0077
[ian @ attic4 ‑ cent ~] $ touch newfile
[ian @ attic4 ‑ cent ~] $ ls ‑l новый файл
‑Rw ‑‑‑‑‑‑. 1 ian ian 0 9 августа 07:09 newfile
  

Показать ещеПоказать еще значок

Помните, что разрешение по умолчанию для вновь созданных файлов — 0666, а значения umask указывают, какой из этих битов должен быть удален (замаскирован). Поэтому разрешение на выполнение должно быть явно добавлено к файлу, если вы этого хотите.

Настройка владельца файла и группы

Группа файлов

Чтобы изменить группу файла, используйте команду chgrp с именем группы и одним или несколькими именами файлов. Вы также можете использовать номер группы, если хотите. Обычный пользователь должен владеть файлом, а также быть членом группы, в которую изменяется группа файла. Пользователь root может изменять файлы в любой группе. В листинге 15 показан пример.

Листинг 15. Смена владельца группы
 
[ian @ attic4 ‑ cent ~] $ touch file {1,2}
[ian @ attic4 ‑ cent ~] файл $ ls ‑l
‑Rw ‑ rw ‑ r‑.1 ian ian 0 9 августа 07:16 file1
‑Rw ‑ rw ‑ r‑. 1 ian ian 0 9 августа 07:16 file2
[ian @ attic4 ‑ cent ~] $ chgrp файл разработки1
[ian @ attic4 ‑ cent ~] $ chgrp 1002 file2
[ian @ attic4 ‑ cent ~] файл $ ls ‑l
‑Rw ‑ rw ‑ r‑. 1 ian development 0 9 августа 07:16 file1
‑Rw ‑ rw ‑ r‑. 1 ian development 0 9 августа 07:16 file2
  

Показать ещеПоказать еще значок

Как и многие команды, описанные в этом руководстве, chgrp имеет параметр -R , позволяющий рекурсивно применять изменения ко всем выбранным файлам и подкаталогам.

Группа по умолчанию

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

Вы также можете использовать команду newgrp , чтобы временно изменить вашу основную группу на другую группу, членом которой вы являетесь. Будет создана новая оболочка, и когда вы выйдете из оболочки, ваша предыдущая группа будет восстановлена, как показано в листинге 16.

Листинг 16. Использование newgrp для временного изменения группы по умолчанию
 
[ian @ attic4 ‑ cent ~] $ groups
ian редактор разработки
[ian @ attic4 ‑ cent ~] $ newgrp development
[ian @ attic4 ‑ cent ~] $ groups
редактор-разработчик
[ian @ attic4 ‑ cent ~] $ touch file3
[ian @ attic4 ‑ cent ~] $ ls ‑l file3
‑Rw ‑ r ‑ r‑. 1 ian development 0 9 августа 07:21 file3
[ian @ attic4 ‑ cent ~] $ exit
выход
[ian @ attic4 ‑ cent ~] $ groups
ian редактор разработки
  

Показать ещеПоказать еще значок

Владелец файла

Пользователь root может изменить владельца файла с помощью команды chown .В простейшей форме синтаксис аналогичен команде chgrp , за исключением того, что вместо имени или идентификатора группы используется имя пользователя или числовой идентификатор. Группу файла можно изменить одновременно, добавив двоеточие и имя или идентификатор группы сразу после имени или идентификатора пользователя. Если задано только двоеточие, то используется группа пользователя по умолчанию. Естественно, опция -R применяет изменение рекурсивно. В листинге 17 показан пример.

Листинг 17. Использование chown для изменения владельца файла
 
[ian @ attic4 ‑ cent ~] $ touch file4
[ian @ attic4 ‑ cent ~] $ su -
Пароль:
[root @ attic4 ‑ cent ~] #ls ‑l ~ ian / file4
‑Rw ‑ rw ‑ r‑.1 ian ian 0 9 августа 07:27 / home / ian / file4
[root @ attic4 ‑ cent ~] #chown greg ~ ian / file4
[root @ attic4 ‑ cent ~] #ls ‑l ~ ian / file4
‑Rw ‑ rw ‑ r‑. 1 greg ian 0 9 августа 07:27 / home / ian / file4
[root @ attic4 ‑ cent ~] #chown jenni: mary ~ ian / file4
[root @ attic4 ‑ cent ~] #ls ‑l ~ ian / file4
‑Rw ‑ rw ‑ r‑. 1 дженни мэри 0 9 августа 07:27 / home / ian / file4
[root @ attic4 ‑ cent ~] #chown: jenni ~ ian / file4
[root @ attic4 ‑ cent ~] #ls ‑l ~ ian / file4
‑Rw ‑ rw ‑ r‑. 1 Дженни Дженни 0 9 августа 07:27 / home / ian / file4
  

Показать ещеПоказать еще значок

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

На этом вы закончите знакомство с правами доступа к файлам и каталогам в Linux.

Как управлять пользователями с группами в Linux

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

Мы начнем с пользователей и перейдем к более сложным ACL. Все, что вам нужно для этого, будет включено в выбранный вами дистрибутив Linux.Мы не будем касаться основ пользователей, поскольку в этой статье речь идет о группах.

В рамках этой статьи я предполагаю следующее:

Вам необходимо создать двух пользователей с именами пользователей:

Вам нужно создать две группы:

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

Я буду демонстрировать на платформе Ubuntu 16.04 Server. Команды будут универсальными — с той лишь разницей, что в выбранном вами дистрибутиве sudo не используется. В этом случае вам нужно сначала выполнить su для пользователя root, чтобы выполнить команды, требующие sudo в демонстрациях.

Создание пользователей

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

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

sudo useradd -m olivia

sudo useradd -m натан 

Мы создали наших пользователей. Если вы посмотрите в каталог / home , вы найдете их соответствующие дома (потому что мы использовали параметр -m , который создает домашний каталог).

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

sudo passwd olivia

sudo passwd натан 

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

Вот и все, ваши пользователи созданы.

Создание групп и добавление пользователей

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

читатели addgroup

редакторы addgroup 

Вот и все. Если вы введете команду less / etc / group , вы увидите список наших недавно созданных групп (рисунок 1).

Рисунок 1: Наши новые группы готовы к использованию.

После создания групп нам нужно добавить наших пользователей. Мы добавим пользователя nathan в группу reader с помощью команды:

sudo usermod -a -G читатели натан 

Добавим пользователя olivia в группу editors командой:

sudo usermod -a -G редакторы olivia 

Теперь мы готовы приступить к управлению пользователями с помощью групп.

Предоставление группам прав доступа к каталогам

Допустим, у вас есть каталог / READERS , и вам необходимо разрешить всем членам группы reader доступ к этому каталогу. Сначала измените группу папки с помощью команды:

sudo chown -R: читатели / ЧИТАТЕЛИ 

Затем удалите разрешение на запись из группы командой:

sudo chmod -R g-w / READERS 

Теперь мы удаляем других x бит из каталога / READERS (чтобы предотвратить доступ любого пользователя, не входящего в группу читателей, к любому файлу внутри) с помощью команды:

sudo chmod -R o-x / ЧИТАТЕЛИ 

На этом этапе только владелец каталога (корень) и члены группы читателей могут получить доступ к любому файлу в пределах / READERS .

Допустим, у вас есть каталог / EDITORS , и вам нужно дать членам группы редакторов права на чтение и запись его содержимого. Для этого потребуется следующая команда:

sudo chown -R: редакторы / РЕДАКТОРЫ

sudo chmod -R g + с РЕДАКТОРАМИ

sudo chmod -R o-x / РЕДАКТОРЫ 

На этом этапе любой член группы редакторов может получать доступ и изменять файлы внутри. Все остальные (кроме root) не имеют доступа к файлам и папкам в пределах / EDITORS .

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

Использование списков контроля доступа

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

Структура этой команды выглядит так:

setfacl ОПЦИЯ X: ИМЯ: Y / КАТАЛОГ 

Где OPTION — доступные параметры, X — либо u (для пользователя), либо g (для группы), NAME — это имя пользователя или группы, а DIRECTORY — это каталог, который будет использоваться. Мы будем использовать опцию -m для модификации . Итак, наша команда для добавления группы reader для доступа на чтение к каталогу / DATA будет выглядеть так:

sudo setfacl -m g: читатели: rx -R / DATA 

Теперь любой член группы reader может читать файлы, содержащиеся в / DATA , но не может их изменять.

Чтобы предоставить членам группы редакторов разрешения на чтение / запись (при сохранении разрешений на чтение для группы читателей ), мы выполнили команду;

sudo setfacl -m g: редакторы: rwx -R / DATA 

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

Все необходимое для управления

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

  • человек

    долларов США

  • человек addgroup

  • человек usermod

  • человек sefacl

  • человек чоун

  • человек chmod

Узнайте больше о Linux из бесплатного курса «Введение в Linux» от Linux Foundation и edX.

разрешений в Linux — GeeksforGeeks

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

Введение

Когда вы выполняете команду «ls», вам не дается никакой информации о безопасности файлов, потому что по умолчанию «ls» перечисляет только имена файлов. Вы можете получить дополнительную информацию, используя «option» с командой «ls».Все варианты начинаются с «-«. Например, чтобы выполнить «ls» с опцией «длинный список», вы должны ввести ls -l

.

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

В этих строках много информации.

  1. Первый символ почти всегда будет либо «-», что означает файл, либо «d», что означает каталог.
  2. Следующие девять символов (rw-r – r–) показывают безопасность; мы поговорим о них позже.
  3. В следующем столбце отображается владелец файла. В данном случае это я, мой идентификатор пользователя — «aditya314».
  4. В следующем столбце отображается группа-владелец файла. В моем случае я хочу предоставить группе людей aditya314 особый доступ к этим файлам.
  5. В следующем столбце показан размер файла в байтах.
  6. В следующем столбце отображается дата и время последнего изменения файла.
  7. И, конечно же, в последнем столбце указано имя файла.

Расшифровка символов безопасности потребует немного больше работы.

Общие сведения о разрешениях безопасности

Во-первых, вы должны представить эти девять символов как три набора из трех символов (см. Рамку внизу). Каждый из трех символов «rwx» относится к разным операциям, которые вы можете выполнить с файлом.

--- --- ---
rwx rwx rwx
группа пользователей другое
 

Чтение, запись, выполнение и —

Символ «r» означает, что вы можете «читать» содержимое файла.
«w» означает, что вы можете «записывать» или изменять содержимое файла.
Символ «x» означает, что вы можете «выполнить» файл. Это разрешение предоставляется только в том случае, если файл является программой.
Если какой-либо из символов «rwx» заменен на «-», то это разрешение было отозвано.

Пользователь, группа и др.

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

Чтение разрешений безопасности

Например, предположим, что разрешения пользователя для некоторых файлов — это «rw-» в качестве первых трех символов. Это означает, что владелец файла («aditya314», то есть я) может «читать» его (смотреть на его содержимое) и «писать» (изменять его содержимое). Я не могу его выполнить, потому что это не программа; это текстовый файл.

Если «r-x» — второй набор из 3 символов, это означает, что члены группы «aditya314» могут только читать и выполнять файлы.

Последние три символа показывают разрешения, предоставленные всем, у кого есть UserID в этой системе Linux. Допустим, у нас есть разрешение («r–»). Это означает, что любой человек в мире Linux может читать, но не может изменять содержимое файлов или выполнять его.

Изменение разрешений безопасности

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

  1. Первый аргумент, который вы даете команде «chmod», — это «u», «g», «o». Мы используем:
    u для пользователя
    g для группы
    o для других,
    вы также можете использовать их комбинацию (u, g, o).
    Указывает, какую из трех групп вы хотите изменить.
  2. После этого используйте
    «+» для добавления
    «-» для удаления
    и «=» для назначения разрешения.
  3. Затем укажите разрешение r, w или x, которое вы хотите изменить.
    Здесь также можно использовать комбинацию r, w, x.
    Указывает, какое из трех разрешений «rwx» вы хотите изменить.
  4. используйте запятые для изменения дополнительных разрешений
  5. Наконец, имя файла, разрешение которого вы меняете

Пример прояснит это.
Например, если вы хотите предоставить миру разрешение на выполнение («other») для файла «xyz.txt», вы должны начать с ввода

chmod o
 

Теперь вы должны набрать «+», чтобы сказать, что вы «добавляете» разрешение.

chmod o +
 

Затем вы должны ввести «x», чтобы сказать, что вы добавляете разрешение на «выполнение».

chmod o + x
 

Наконец, укажите, какой файл вы изменяете.

chmod o + x xyz.txt
 

Вы можете увидеть изменение на картинке ниже.

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

chmod ugo-rwx xyz.текст
 

Приведенный выше код отменяет все права на чтение (r), запись (w) и выполнение (x) у всех пользователей (u), группы (g) и других (o) для файла xyz.txt, что приводит к этому.

Другой пример:

chmod ug + rw, o-x abc.mp4
 

Приведенный выше код добавляет разрешения на чтение (r) и запись (w) как для пользователя (u), так и для группы (g) и отменяет разрешение на выполнение (x) у других (o) для файла abc.mp4.

Примерно так:

chmod ug = rx, o + r abc.c
 

назначает разрешения на чтение (r) и выполнение (x) как пользователю (u), так и группе (g), а также добавляет разрешение на чтение другим пользователям для файла abc.c.

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

Восьмеричные обозначения

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

Использование таблицы восьмеричных обозначений вместо «r», «w» и «x». Каждая восьмеричная цифра может использоваться для любой из групп «u», «g», «o».

Итак, следующие работают так же.

chmod ugo + rwx [имя_файла]
chmod 777 [имя_файла]
 

Оба они предоставляют полное право чтения, записи и выполнения (код = 7) для всей группы.

То же самое и с этим ..

chmod u = r, g = wx, o = rx [имя_файла]
chmod 435 [имя_файла]
 

Оба кода дают пользователю права на чтение (код = 4), запись и выполнение (код = 3) для группы и чтение и выполнение (код = 5) для других.

И даже это…

chmod 775 [имя_файла]
chmod ug + rwx, o = rx [имя_файла]
 

Обе команды предоставляют все разрешения (код = 7) пользователю и группе, чтение и выполнение (код = 5) для других.

Дальнейшее обучение

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

Ссылки: askubuntu
linuxcommand.org

Эта статья предоставлена ​​ Адитья Нихал Кумар Сингх . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *