Перейти к содержимому

Как дать права пользователю linux

  • автор:

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

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

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

Всего предусмотрено три варианта прав:

  • чтение, обозначаемое буквой ® ,
  • запись, используется (w),
  • запуск файла (x).

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

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

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

ls -l имя каталога

Наглядно её использование можно увидеть на следующем примере:

ls -l certs.xml

После введения такой команды вы получите в ответ:

-r-r-- 1 denis 2115693 Jun 11 12:11 certs.xml

Расшифровывается написанное так:

  • — (1 символ) — символьное обозначение файла, если каталог, то буква d;
  • r-(максимально 3 символа) — отображают непосредственно права доступа, то есть — чтение, запись и запуск на выполнение, в данном примере пользователь может лишь читать файл, внесение изменений и запуск запрещены;
  • r- (максимум 3 символа) — аналогично предыдущему, но показывают права уже группы владельцев, куда входит данный пользователь, соответственно, они могут читать файл, но не могут его отправлять на выполнение или изменять;
  • — (еще 3 символа) — показывают права доступа для других пользователей, то есть данный файл никто кроме администратора не сможет даже прочитать, при попытке зайти в него будет выведено на экран сообщение Access denied.

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

rw-r-- 

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

Теперь давайте возьмем лишь права только владельца файла: rw-. Ему разрешено чтение, держим в памяти 1, а также редактирование, запоминаем ещё 1. Поскольку запуск запрещен, то добавляем 0 и получаем в итоге цифру 110. Если её перевести из двоичной системы в восьмеричную, то выйдет 6. Для перевода других чисел вы всегда сможете воспользоваться приведенной ниже таблицей.

Таблица 1. Преобразование из двоичной в восьмеричную систему

Двоичная система Восьмеричная система Двоичная система Восьмеричная система
000 0 100 4
001 1 101 5
010 2 110 6
011 3 111 7

Если по подобию разобрать на числа права группы владельца, то выйдет 100. При его переводе в восьмеричную систему останется 4. У посторонних набор и вовсе прост — 000. При переводе останется просто 0. Итак, общие права доступа для данного файла — 640 и чтобы их установить, требуется лишь внести команду следующего формата:

chmod 640 имя_файла

Чаще всего в практике применяются следующие варианты чисел для команды:

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

Создание пользователя с правами root на CentOS 7

При первом запуске Linux доступна только учётная запись ROOT-пользователя с «безграничными» привилегиями. Она нужна для администрирования системы и работы со специализированным ПО.

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

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

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

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

Зарегистрировать учётную запись в системе можно с помощью следующего алгоритма:

  1. Чтобы добавить пользователя, необходимо открыть терминал и выполнить команду от имени администратора (ROOT):
sudo useradd username

Вместо «username» в примерах нужно вводить желаемое имя пользователя.

  1. Назначить пароль для созданной учётной записи:
sudo passwd username

С помощью приведённой команды можно также задать пароль ROOT или любому другому пользователю.

Новая учётная запись зарегистрирована, но её права доступа на данном этапе существенно ограничены. Нужно добавить пользователя в группу «Wheel», чтобы получить возможность выполнять команды от имени администратора (ROOT), вводя перед командой слово «sudo».

Как добавить пользователя в группу администраторов Wheel

Дать права пользователю в CentOS для доступа к утилите «sudo» можно следующей командой:

sudo gpasswd -a username wheel

Для переключения учётной записи в терминале нужно ввести:

su username

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

Проверка работы утилиты «sudo»

Уже на данном этапе создание пользователя с правами ROOT закончено. Остаётся только убедиться, действительно ли новый пользователь обладает привилегиями администратора. Для этого нужно войти в созданную учётную запись CentOS и попробовать выполнить команду, требующую прав администратора. Например, попытаться просмотреть файлы в директории ROOT-пользователя:

sudo ls -la /root

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

Каталог root пользователя

Надежный хостинг для сайта. 14 дней — бесплатно!

Права суперпользователя Linux

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

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

В этой статье мы рассмотрим какие программы нужны для того, чтобы получить права root пользователя linux, как они работают, как выполнять программу с правами root от обычного пользователя и как запускать графические программы с правами root. А также выясним что такое sudo в чем разница su или sudo.

Права суперпользователя в Linux

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

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

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

Вход под суперпользователем

Чтобы войти под пользователем root можно переключиться в одну из виртуальных консолей, например, с помощью сочетания клавиш Ctrl+Alt+F1 и затем ввести логин root и пароль root пользователя.

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

Можно поступить полностью противоположным путем, ввести логин root и его пароль в графическом менеджере входа, чтобы окружение рабочего стола работало от имени root, и мы получаем все права root linux, но такой вариант крайне не рекомендованный, и очень опасный, вы можете случайно повредить всю систему. Поэтому этот способ был отключен во многих менеджерах входа.

Переключение на суперпользователя в терминале

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

$ su опции пользователь

Вот ее основные опции:

  • -c, —command — выполнить команду
  • -g, —group — установить основную группу пользователя (только для root)
  • -G —supp-group — дополнительные группы пользователя (только для root)
  • -, -l, —login — режим входа, будут очищены и инициализированы с учетом нового пользователя все переменные окружения, а также изменен домашний каталог
  • -p, —preserve-environment — сохранить переменные окружения
  • -s, —shell — задать оболочку для входа
  • —version — отобразить версию программы.

Теперь немного поэкспериментируем, чтобы понять как работает команда su linux.

Сначала выполним su без параметров, но для начала создадим переменную окружения, чтобы проверить как с ними обходится эта команда:

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

whoami
pwd
echo $VAR
echo $PATH
exit

sudo

Из этих команд мы видим, что теперь мы пользователь root, но домашней директорией считается директория нашего предыдущего пользователя и наша переменная не сохранилась также изменилась переменная PATH, теперь там добавлен путь /sbin.

Теперь используем вход в режиме логина:

И повторим ту же комбинацию:

whoami
pwd
echo $VAR
echo $PATH
exit

sudo1

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

sudo2

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

sudo3

Более подробно о команде su вы можете почитать в отдельной статье. Получение прав суперпользователя таким способом используется во многих дистрибутивах, например, Debian, OpenSUSE, ArchLInux, Gentoo и т д. Но в Ubuntu, как дистрибутиве для начинающих вход под пользователем root отключен. Это сделано потому, что это тоже не очень безопасно, вы можете забыть что выполняете команду от root и что-то натворить в системе. Поэтому переходим к следующей программе.

Получение прав root без переключения

Чтобы реализовать максимально безопасный интерфейс для работы с правами суперпользователя в Linux была разработана команда sudo. Давайте рассмотрим что такое sudo. Эта команда пишется перед каждой командой, которую нужно выполнить от имени суперпользователя, и для ее выполнения нужно ввести пароль уже не root, а всего лишь вашего пользователя. Так же, как и в предыдущей, в этой утилиты есть свои опции. Сначала рассмотрим синтаксис:

$ sudo опции команда

  • -b — выполнять запускаемую утилиту в фоне
  • -E — сохранить переменные окружения
  • -g — запустить команду от группы
  • -H — использовать домашний каталог
  • -l — показать список полномочий в sudo для текущего пользователя
  • -r — использовать для команды роль SELinux
  • -s — использовать оболочку
  • -u — запустить команду от имени пользователя, если не задано используется root
  • -i — не выполнять команду, а войти в оболочку, эквивалентно su —

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

Использование sudo — это рекомендованный способ выполнять команды от имени суперпользователя в Linux. Так вы не забудете с чем имеете дело и меньше всего рискуете повредить систему. Более подробно о команде sudo читайте здесь. Но остался еще один нерешенный вопрос — как быть с графическими утилитами? Ведь команда sudo их не запускает, а запускать графическую оболочку от имени root небезопасно. Это мы и рассмотрим далее.

Графически приложения от имени суперпользователя

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

Просто наберите gksu или kdesu, а затем нужную команду:

Эта команда запустит файловый менеджер KDE с правами суперпользователя. В Gnome это будет выглядеть вот так:

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

Выводы

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

unixforum.org

Доброго всем времени суток.
я только неделю как юзаю опенсус 11.2(и вообще линукс)
ВОпрос:
Как сделать так чтобы пользователь Юзернейм заходил в систему уже с правами root?
Что бы после входа все программы, папки, процессы открывались/запускались без подтверждения паролем root.

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

Спасибо сказали:
SLEDopit Модератор Сообщения: 4819 Статус: фанат консоли (= ОС: GNU/Debian, RHEL

Re: как дать пользователю права рута?

Сообщение SLEDopit » 13.02.2010 22:25

13.02.2010 21:44
Как сделать так чтобы пользователь Юзернейм заходил в систему уже с правами root?

Заходить под рутом =)
Вот только с точки зрения безопасности так лучше не делать. 95% всей совершаемой работы не требуют рутовых прав при корректной настройке. У кого то и все 100.
А если принять во внимание, что в сусе рулить системой практически полностью можно через яст, который иногда предлагает поставить галочку «Запомнить пароль» ваше желание абсолютно непонятно.

зы. настройки интерфейса хранятся в домашней папке пользователя. И если вы перенесете их из папки пользователя в домашнюю папку рута (по дефолту /root), то все настройки сохранятся.

Но повторюсь еще раз. Работать нужно под обычным пользователем. А не под рутом.

UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don’t do mistakes, the more bugs are in your code.

Спасибо сказали:
4yKoTkA Сообщения: 183 ОС: Gentoo GNU/Linux.FreeBSD

Re: как дать пользователю права рута?

Сообщение 4yKoTkA » 13.02.2010 22:26

Как сделать так чтобы пользователь Юзернейм заходил в систему уже с правами root?

Этого, делать не надо.
А настройки можно перенести тупо скопировав домашнюю папку «Юзернейма», но повторюсь ещё раз — не стоит этого делать.

Спасибо сказали:
Atolstoy Сообщения: 1654 Статус: Tux in the rain ОС: Linux x86_64 Контактная информация:

Re: как дать пользователю права рута?

Сообщение Atolstoy » 13.02.2010 22:28

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

Всего лишь 26 литров пива достаточно человеку для удовлетворения ежедневной потребности в кальции. Здоровое питание — это так просто!
http://atolstoy.wordpress.com

Спасибо сказали:
agentprog Сообщения: 362 Статус: Ad Astra per aspera ОС: openSUSE 11.4, Arch

Re: как дать пользователю права рута?

Сообщение agentprog » 13.02.2010 22:29

su -c "cat >> /etc/sudoers" username ALL=(ALL) NOPASSWD: ALL

No problems — just solutions!
Спасибо сказали:
Olegator Сообщения: 2493 ОС: SuseLinux 11.2 KDE 4.3

Re: как дать пользователю права рута?

Сообщение Olegator » 14.02.2010 00:54

Upful
не тяните в linux виндовые привычки, не в коем случае пользователю нельзя давать права рута. изучите работу в консоли Вам понадобиться всего несколько программ, для получения прав рута на одну операцию настройте sudo http://ru.opensuse.org/%D0%90%D0%B4%D0%BC%. 1%89%D0%B8_Sudo , для редактирования файлов изучите vi, изменять права chmod и консольный файловый менеджер mc. Например чтобы запустить файловый менеджер с правами рута наберите sudo mc

Спасибо сказали:
Olegator Сообщения: 2493 ОС: SuseLinux 11.2 KDE 4.3

Re: как дать пользователю права рута?

Сообщение Olegator » 14.02.2010 01:05

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

echo 'export PATH=$PATH:/sbin:/usr/sbin' >> ~/.bashrc

Спасибо сказали:
Upful Сообщения: 5 ОС: Runtu

Re: как дать пользователю права рута?

Сообщение Upful » 14.02.2010 10:06

13.02.2010 22:29

su -c "cat >> /etc/sudoers" username ALL=(ALL) NOPASSWD: ALL

agentprog я так понимаю это надо добавить строчку username ALL=(ALL) NOPASSWD: ALL в файле sudoers?
где юзернейм имя пользователя, для которого нужно сделать полный доступ

Спасибо сказали:
agentprog Сообщения: 362 Статус: Ad Astra per aspera ОС: openSUSE 11.4, Arch

Re: как дать пользователю права рута?

Сообщение agentprog » 14.02.2010 10:07

14.02.2010 01:05
и кстати чтобы все консольные утилиты были видны обычному пользователю

а на самом деле, что мешает делать например /sbin/ifconfig с полным путем?

14.02.2010 10:06

agentprog я так понимаю это надо добавить строчку username ALL=(ALL) NOPASSWD: ALL в файле sudoers?
где юзернейм имя пользователя, для которого нужно сделать полный доступ

да, эту строчку надо добавить в файл /etc/sudoers, она даст возможность вызывать sudo без необходимости вводить пароль.

PS: на самом так делать не безопасно, но если Вам это так надо.

No problems — just solutions!
Спасибо сказали:
Upful Сообщения: 5 ОС: Runtu

Re: как дать пользователю права рута?

Сообщение Upful » 14.02.2010 10:28

# sudoers file. # # This file MUST be edited with the ‘visudo’ command as root. # Failure to use ‘visudo’ may result in syntax or file permission errors # that prevent sudo from running. # # See the sudoers man page for the details on how to write a sudoers file. # # Host alias specification # User alias specification # Cmnd alias specification # Defaults specification # Prevent environment variables from influencing programs in an # unexpected or harmful way (CVE-2005-2959, CVE-2005-4158, CVE-2006-0151) Defaults always_set_home Defaults env_reset # Change env_reset to !env_reset in previous line to keep all environment variables # Following list will no longer be necessary after this change Defaults env_keep = «LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE» # Comment out the preceding line and uncomment the following one if you need # to use special input methods. This may allow users to compromise the root # account if they are allowed to run commands without authentication. #Defaults env_keep = «LANG LC_ADDRESS LC_CTYPE LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE LC_TIME LC_ALL LANGUAGE LINGUAS XDG_SESSION_COOKIE XMODIFIERS GTK_IM_MODULE QT_IM_MODULE QT_IM_SWITCHER» # In the default (unconfigured) configuration, sudo asks for the root password. # This allows use of an ordinary user account for administration of a freshly # installed system. When configuring sudo, delete the two # following lines: Defaults targetpw # ask for the password of the target user i.e. root ALL ALL=(ALL) ALL # WARNING! Only use this together with ‘Defaults targetpw’! # Runas alias specification # User privilege specification root ALL=(ALL) ALL upful ALL=(ALL) ALL # Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL # Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL # Samples # %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom # %users localhost=/sbin/shutdown -h now

upful — пользователь для которого это всё надо. после изменения файла и перезагрузки системы всёравно не добился нужных результатов.(например: что бы зайти на локальный диск нтфс требуется ввести пароль)

Спасибо сказали:
petyanamlt Сообщения: 1773 ОС: Kubuntu 16.04(x86-64)KDE 5.8.7

Re: как дать пользователю права рута?

Сообщение petyanamlt » 14.02.2010 10:31

А можно узнать, зачем пользователю права рута?
Мне чисто из любопытства.
не тяните в linux виндовые привычки, не в коем случае пользователю нельзя давать права рута.

MSI 990FXA-GD80 SocketAM3+ / FX 8350 / Geforce gtx670 4GB / 4xHDD — 2000 -2х500 (Velociraptor) — 240ssd под Kubuntu / 16Gb RAM DDR3 1600 / TV TBS 6281. Ну и разгон естественно, жить без этого не могу.
(mail agent) petyanamlt собака маил.ру

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *