Только root может делать это

Только root может делать это Техника

Я установил Ubuntu 12.04 вместе с Windows 8.1. Когда я попытался открыть диск C: в Ubuntu, выскочило окно, говорящее о запуске этой команды:

mount -t ntfs-3g -o remove_hiberfile /dev/sda2 /media/2A36EE3236EDFEA7

После выполнения команды я получаю ошибку mount: only root can do that.

Что мне делать?

задан

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

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

Доброго времени суток.

Подключение к Windows не вызвало проблем, но с linux возникли сложности.

Имеется Synology DS216+II. Подключено к отдельной сетевой карте в компьютере с Linux Mint.

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

Отказано в доступе:

Если скопировать этот файл с Synology на рабочий стол — ошибок в приложении нет. Вывод — ошибка возникает из-за местоположения файла.

mount:только root может делать это

При попытке монтирования Synology через sudo mount //192.168.1.100/Master /mnt/synology выдается:

Дело в том, что root отключен ( его в принципе можно включить, но не хотелось бы )

При попытке смонтировать Synology командой

mount.cifs //192.168.1.100 /mnt/synology

mount.cifs: permission denied: no match for /mnt/synology found in /etc/fstab

Подскажите, пожалуйста, как смонтировать сетевой диск? Без активации root’а не обойтись?

На всякий случай укажу — на компьютере установлена, настроена и работает samba c аудитом.

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

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

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

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

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

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

Мне нужно разрешить пользователю без полномочий root монтировать / размонтировать устройство. Я абсолютный нуб, когда дело доходит до UNIX, поэтому, пожалуйста, сделайте это для меня.

Вот содержимое моего fstab:

# /etc/fstab: static file system information.
#
# Use 'vol_id --uuid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
#                
proc            /proc           proc    defaults        0       0
# / was on /dev/mapper/minicc-root during installation
UUID=1a69f02a-a049-4411-8c57-ff4ebd8bb933 /               ext3    relatime,errors=remount-ro 0       1
# /boot was on /dev/sda5 during installation
UUID=038498fe-1267-44c4-8788-e1354d71faf5 /boot           ext2    relatime        0       2
# swap was on /dev/mapper/minicc-swap_1 during installation
UUID=0bb583aa-84a8-43ef-98c4-c6cb25d20715 none            swap    sw              0       0
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto,exec,utf8 0       0
/dev/scd0       /media/floppy0  auto    rw,user,noauto,exec,utf8 0       0
/dev/sdb1   /mnt/sdcard auto    auto,user,rw,exec   0   0

Мой раздел флешки отображается как /dev/sdb1 . Я почти уверен, что мой fstab настроен нормально, но все остальные посты, похоже, не упоминают, как они на самом деле вызывают команду mount когда эта запись находится в файле fstab. Я думаю, что это где моя проблема. Команда, которую я использую для монтирования диска:

$ mount /dev/sdb1 /mnt/sdcard

/bin/mount принадлежит root и находится в корневой группе и имеет 4755 разрешений.
/bin/umount принадлежит root и находится в корневой группе и имеет 4755 разрешений.
/mnt/sdcard принадлежит мне и входит в одну из моих групп и имеет 0755 разрешений.

Моя команда монтирования работает нормально, если я использую sudo , но мне нужно иметь возможность делать это без sudo (нужно уметь делать это из сценария PHP с использованием shell_exec). Какие-либо предложения?

Что за файловая система на диске? В некоторых можно указать владельца файловой системы при монтировании.

Что за файловая система на диске? В некоторых можно указать владельца файловой системы при монтировании.

fat32
При монтировании от имени пользователя пишет что только root может это сделать
only root can do that

Рут может смонтировать под другого пользователя. При условии, что id вашего пользователя и группы — 1000.

mount -o uid=1000,gid=1000,umask=22 /dev/sdb1 /data

Ну а все опции для fat смотреть в

/dev/sdb1 /data vfat rw,user,noauto 0 0

Но это при условии, что диск всегда будет определяться как /dev/sdb1, что, в общем-то, не гарантировано. Поэтому лучше для его идентификации использовать UUID файловой системы или её метку. Например,

LABEL=DATA /data vfat rw,user,noauto 0 0

Монтировать можно будет от пользователя командой

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

LABEL=DATA /data vfat rw,uid=1000,gid=1000,umask=22 0 0

Рут может смонтировать под другого пользователя. При условии, что id вашего пользователя и группы — 1000.

mount -o uid=1000,gid=1000,umask=22 /dev/sdb1 /data

Ну а все опции для fat смотреть в

/dev/sdb1 /data vfat rw,user,noauto 0 0

Но это при условии, что диск всегда будет определяться как /dev/sdb1, что, в общем-то, не гарантировано. Поэтому лучше для его идентификации использовать UUID файловой системы или её метку. Например,

LABEL=DATA /data vfat rw,user,noauto 0 0

Монтировать можно будет от пользователя командой

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

LABEL=DATA /data vfat rw,uid=1000,gid=1000,umask=22 0 0

Рут может смонтировать под другого пользователя. При условии, что id вашего пользователя и группы — 1000.

mount -o uid=1000,gid=1000,umask=22 /dev/sdb1 /data

Ну а все опции для fat смотреть в

/dev/sdb1 /data vfat rw,user,noauto 0 0

Но это при условии, что диск всегда будет определяться как /dev/sdb1, что, в общем-то, не гарантировано. Поэтому лучше для его идентификации использовать UUID файловой системы или её метку. Например,

LABEL=DATA /data vfat rw,user,noauto 0 0

Монтировать можно будет от пользователя командой

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

LABEL=DATA /data vfat rw,uid=1000,gid=1000,umask=22 0 0

Подскажи ещё как с сетевой папкой быть. Делаю вот так но она тоже только под root монтируеться
mount -t cifs //192.168.88.199/shara /home/gogo/shara/
Пробывал добавить -o uid=1000,gid=1000,umask=22 но валиться ошибка

Содержание
  1. Тема: Проблема: Только root может монтировать …. в media/disk  (Прочитано 6377 раз)
  2. Now_just_Sue
  3. kostryukov
  4. Now_just_Sue
  5. фирэфохэ
  6. kostryukov
  7. Now_just_Sue
  8. Пользователь
  9. фирэфохэ
  10. Now_just_Sue
  11. mazut
  12. Пользователь
  13. Now_just_Sue
  14. Разрешить mount юзеру
  15. Re: Разрешить mount юзеру
  16. Re: Разрешить mount юзеру
  17. Re: Разрешить mount юзеру
  18. Re: Разрешить mount юзеру
  19. Re: Разрешить mount юзеру
  20. Re: Разрешить mount юзеру
  21. Re: Разрешить mount юзеру
  22. Re: Разрешить mount юзеру
  23. Re: Разрешить mount юзеру
  24. Re: Разрешить mount юзеру
  25. Re: Разрешить mount юзеру
  26. Re: Разрешить mount юзеру
  27. Вход под суперпользователем
  28. Ответа
  29. Монтирование устройства, такого как Nautilus
  30. Теги
  31. Похожие вопросы
  32. Получение прав root без переключения
  33. Графически приложения от имени суперпользователя
  34. Опция allow_other
  35. Переключение на суперпользователя
  36. Предназначение root-прав в Linux
  37. Монтирование при загрузке
  38. 1. Редактируем файл /etc/fstab
  39. 2. Создаем новый unit-файл
  40. 2.1. Создаем service-файл
  41. 2.2. Создаем mount-файл
  42. Дополнительно
  43. Безопасность использования прав суперпользователя
  44. Команда sudo и примеры ее использования
  45. Переключение на суперпользователя в терминале
  46. Аутентификация по ключу
  47. Предоставление и отзыв прав суперпользователя
  48. Создание нового пользователя с root
  49. Для существующей учетной записи
  50. Откат прав суперпользователя
  51. Выводы

Только root может делать это

Тема: Проблема: Только root может монтировать …. в media/disk  (Прочитано 6377 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
Now_just_Sue

Все было прекрасно, заставил хард монтироваться при запуске через fstab, вчера поставил компьютер на автовыключение с помощью sudo shutdown.
Проснулся с голубым экраном вариантов загрузки, выбрал обычную, теперь не могу монтировать ни один из нтфс’ных хардов.
Что случилось?  :(


Оффлайн
kostryukov

паказывай фстаб, и что значит не можеш монтировать?

заставил хард монтироваться при запуске через fstab


Оффлайн
Now_just_Sue

Не могу — значит выводится сообщение (см. сабж) при попытке подключения тома.


Оффлайн
фирэфохэ

а папку /media/disk создавал?

http://i18.ЗАПРЕЩЁННЫЙ РЕСУРС/big/2011/0325/6d/19eaa72dd24048a6fb0587832c4b096d.gif КДЕ — УГ. Дебиан — недоось.


Оффлайн
kostryukov

теперь не могу монтировать ни один из нтфс’ных хардов.

а в fstab’e у тебя только один раздел, а где остальные?

/dev/sda5 в /media/disk монтируется или нет ? через fstab


Оффлайн
Now_just_Sue

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


Пользователь решил продолжить мысль 09 Ноября 2009, 17:06:33:


Папку сейчас создал, никакой реакции.
И, нет,  sda5 не монтируется.

« Последнее редактирование: 09 Ноября 2009, 17:06:33 от Now_just_Sue »


Пользователь

Тож так было, на Ubuntu 9.10 — ни с того ни ссего, в один прекрасный момент перестали монтироваться нтфс разделы, нашел решение:
установил программу ntfs-config и настроил через нее (запуск через главное меню)


Оффлайн
фирэфохэ

В конце fstab есть пустая строчка? Если нет — добавь.

потом вывод сюда

sudo fdisk -l
sudo umount /media/disk
sudo mount -a

http://i18.ЗАПРЕЩЁННЫЙ РЕСУРС/big/2011/0325/6d/19eaa72dd24048a6fb0587832c4b096d.gif КДЕ — УГ. Дебиан — недоось.


Оффлайн
Now_just_Sue

В общем,
вот что получается:

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

А вот что при монтировании из под суперпользователя:


Оффлайн
mazut

а как смотритца

sudo mount -t ntfs-3g /dev/sda5 /mnt


Пользователь

Невозможно создать ссылку /etc/mtab~
Возможно, существует устаревший файл блокировки?

Хм, а я не додумался было монтировать вручную, чтобы посмотреть в чем дело. Значит в mtab какая-то запись мешает?


Оффлайн
Now_just_Sue


Пользователь решил продолжить мысль 10 Ноября 2009, 22:43:33:


Проблема решилась.
В mtab’e поменял права доступа на чтение и запись.
При перезагрузке диск примонтировался как надо.
Выходит, права каким-то образом сбросились без моего ведома(


Пользователь решил продолжить мысль 11 Ноября 2009, 00:54:17:


ха-ха)
Зато теперь я не могу их отмонтировать обратно ;D

« Последнее редактирование: 11 Ноября 2009, 00:54:17 от Now_just_Sue »


Модераторы: Warderer, Модераторы разделов

Аватара пользователя

RobinHood

Сообщения: 18
ОС: Open SuSe 11

Разрешить mount юзеру

Доброго времени суток, Господа!

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

Спасибо за внимание.

Аватара пользователя

skeletor

Сообщения: 1224

Re: Разрешить mount юзеру


Варианта 2:
1)добавить бит suid для /bin/mount. Делается так

2)установить пакет sudo. Далее в файле /etc/sudoers прописать нужному юзеру права

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

Аватара пользователя

nesk

Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3
Контактная информация:

Re: Разрешить mount юзеру


как то так. Чему равно значения iocharset зависит от того, какая кодировка в linux
потом любой пользователь сможет сделать
mount /SYSTEM

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

/dev/hdb1 /SYSTEM vfat umask=0,iocharset=utf-8 0 1

то, что предложил skeletor уж больно радикально, и наверно в Вашем случае не нужно.

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

Аватара пользователя

nesk

Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3
Контактная информация:

Re: Разрешить mount юзеру


-sanches- писал(а):

Только не iocatset, а iocharset я так понимаю.

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

Аватара пользователя

RobinHood

Сообщения: 18
ОС: Open SuSe 11

Re: Разрешить mount юзеру


Спасибо — смонтировалось.
Но все же это не совсем то. Теперь разделы монтируются автоматом при загрузке. Но пользователь ручками не может монтировать. Т.е. mount пишет что только root может монтировать.
Может как то можно разрешить пользователю монтировать?

Аватара пользователя

nesk

Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3
Контактная информация:

Re: Разрешить mount юзеру


RobinHood писал(а):

Спасибо — смонтировалось.
Но все же это не совсем то. Теперь разделы монтируются автоматом при загрузке. Но пользователь ручками не может монтировать. Т.е. mount пишет что только root может монтировать.
Может как то можно разрешить пользователю монтировать?

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

Аватара пользователя

slthebest

Сообщения: 6
ОС: debian

Re: Разрешить mount юзеру


RobinHood писал(а):

Спасибо — смонтировалось.
Но все же это не совсем то. Теперь разделы монтируются автоматом при загрузке. Но пользователь ручками не может монтировать. Т.е. mount пишет что только root может монтировать.
Может как то можно разрешить пользователю монтировать?

mount -t vfat /dev/hdb1 /SYSTEM

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

Аватара пользователя

kma21

Сообщения: 874
Статус: Странный экспериментатор…
Контактная информация:

Re: Разрешить mount юзеру


Вот у меня подобная проблема. Автомонтирование есть, а примонтировать юзер не может.
Мой кусок fstab

Код: Выделить всё

/dev/hda1    /media/win_C    ntfs-3g user,auto,umask=0,utf8 0 0

Опытным путЁм выяснил, что если указать ФС «ntfs», то всЁ прекрасно монтируется. Но нет прав на запись. Следовательно, проблемы в NTFS-3G.

Вот код ошибки

Код: Выделить всё

Error opening '/dev/hda1': Отказано в доступе
Failed to mount '/dev/hda1': Отказано в доступе
Please check '/dev/hda1' and the ntfs-3g binary permissions,
and the mounting user ID. More explanation is provided at
http://ntfs-3g.org/support.html#unprivileged

Может не правильно собран пакет??

Аватара пользователя

slen26

Сообщения: 77
ОС: openSUSE

Re: Разрешить mount юзеру


kma21 писал(а):

Вот у меня подобная проблема. Автомонтирование есть, а примонтировать юзер не может.
Мой кусок fstab

Код: Выделить всё

/dev/hda1    /media/win_C    ntfs-3g user,auto,umask=0,utf8 0 0

Опытным путЁм выяснил, что если указать ФС «ntfs», то всЁ прекрасно монтируется. Но нет прав на запись. Следовательно, проблемы в NTFS-3G.

а если указать параметр dmask=002, то запись будет разрешена
вот так примерно

Код: Выделить всё

users,gid=users,fmask=133,dmask=002,locale=ru_RU.UTF-8 0 0

Аватара пользователя

anarhist1

Сообщения: 680
Контактная информация:

Re: Разрешить mount юзеру


kma21 писал(а):

И это не помогло…

Аватара пользователя

TechnoMag

Сообщения: 298
ОС: Debian 8.0 Jessie

Re: Разрешить mount юзеру


мне нужно монтировать ISO под юзером (хочу сделать скрипт для Nautilus).
Если я разрешу выполнять команду монтирования пользователям через судо и установкой бита SUID, насколько это будет безопасно и правильно?

Аватара пользователя

Nazyvaemykh

Сообщения: 438
Статус: Подопытный участник

Re: Разрешить mount юзеру


Для монтирования ISO-дисков можно установить fuseiso и монтировать средствами fuse.
На мой взгляд, наиболее удобный и безопасный вариант.

Разрешать пользователю выполнение команды mount не безопасно и не правильно: очень легко можно будет получить полный доступ к системе.

!

Аватара пользователя

TechnoMag

Сообщения: 298
ОС: Debian 8.0 Jessie

Re: Разрешить mount юзеру


Код: Выделить всё

$>fuseiso -p file.iso /mnt/ISO
fuse: failed to open /dev/fuse: Отказано в доступе

А вот нашел, но неуверен что это безопасно ибо метод для Убунты

Код: Выделить всё

sudo chmod 4755 /bin/fusermount
sudo chmod o+rw /dev/fuse
sudo addgroup <имя_пользователя> fuse

вот сделал все что указано

Код: Выделить всё

fuseiso file.iso /mnt/ISO
fusermount: mount failed: Operation not permitted

что ему еще нужно?!!

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

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

Ответа

Используйте (примечание sudo впереди)

sudo mount -t ntfs-3g -o remove_hiberfile /dev/sda2 /media/2A36EE3236EDFEA7

Если в будущем программа сообщит вам, что «это может сделать только root», «Требуется доступ с правами root», «Требуется супер-пользователь», «Отказано в доступе» или аналогичные проблемы, связанные с разрешениями, попробуйте поставить sudo перед выполняемой командой.


Монтирование устройства, такого как Nautilus

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

udisksctl mount -b /dev/<device>

Если вы хотите смонтировать раздел как пользователь без прав администратора без команды sudo, вы также можете сделать это с помощью udisks . Это позволяет монтировать разделы (или файлы) в каталоге /media/<drive_identifier>.

udisks --mount /dev/<sdxX>  ## to mount
udisks --unmount /dev/<sdxX> ## to unmount

Замените <sdxX> номером устройства вашего привода. Вы можете смело монтировать разделы Windows только тогда, когда они не были в спящем режиме.

Попробуйте sudo! Для запуска команд от имени root вы должны использовать команду «sudo» перед другими командами

Теги

Похожие вопросы

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

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

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

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

sudo -u test ls

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

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

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

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

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

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

Опция allow_other

Сейчас доступ к директории /home/evgeniy/var-www/ имеет только пользователь evgeniy. Чтобы разрешить другим пользователям работать с файлами в этой директории, нужно использовать опцию allow_other:

 
fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf

По умолчанию это может делать только пользователь root. Чтобы разрешить другим пользователям применять эту опцию, редактируем файл /etc/fuse.conf:

 sudo nano /etc/fuse.conf
#mount_max = 1000


user_allow_other

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

 

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

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

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

  • -c – позволяет выполнить команду;
  • -g – устанавливает группу для пользователя;
  • -G – дополнительные группы для юзера;
  • -l —login – один из режимов входа, при котором происходит переключение домашнего каталога;
  • -p – сохранение переменных окружения;
  • -s – выбор оболочки для выхода.

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

Предназначение root-прав в Linux

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

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

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

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Монтирование при загрузке

Если есть необходимость автоматически монтировать удаленную директорию при загрузке системы, то есть два пути. Первый — отредактировать файл /etc/fstab и добавить новую запись о монтировании. Второй — создать новый unit-файл для системы инициализации systemd.

1. Редактируем файл /etc/fstab

Монтирование удаленной директории выглядит примерно так:

 sudo nano /etc/fstab
developer@123.123.123.123:/var/www/  /home/evgeniy/var-www/  fuse.sshfs  allow_other,reconnect,uid=1000  0  0

Но, чтобы это заработало, должна быть настроена аутентификация по ключу на сервере. Мы это уже сделали, но монтирование файловых систем происходит от имени пользователя root. И файл ключа операционная система будет искать в директории /root/.ssh/. А наш ключ рсположен в домашней директории пользователя evgeniy. Поэтому нужно явно указать путь:

 sudo nano /etc/fstab
developer@123.123.123.123:/var/www/  /home/evgeniy/var-www/  fuse.sshfs  allow_other,reconnect,uid=1000,IdentityFile=/home/evgeniy/.ssh/id_rsa  0  0

Кроме того, нужно один раз подключиться к серверу от имени пользователя root — чтобы был создан файл /root/.ssh/known_hosts:

 
The authenticity of host '123.123.123.123 (123.123.123.123)' can't be established.
ECDSA key fingerprint is SHA256:4SekW639zeTtdrRugvhGitb54QJroU4p07bkUs83rkA.
Are you sure you want to continue connecting (yes/no)? 
Warning: Permanently added '123.123.123.123' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-106-generic x86_64)
 

Когда мы создаем на клиенте новый файл, на самом деле мы создаем файл на сервере от имени пользователя developer. Основная группа этого пользователя — www-data (см. здесь). Эта группа существует как на сервере, так и на клиенте (хотя на клиенте веб-сервер не установлен). И идентификатор этой группы равен 33 (на клиенте и на сервере установлена ОС Ubuntu). Так что можно не задавать опцию монтирования gid=идентификатор.

2. Создаем новый unit-файл

Здесь опять возможны два варианта — создать файл .service (который просто выполнит команду монтирования), либо файл .mount (который предназначен специально для монтирования файловых систем).

2.1. Создаем service-файл

Итак, создаем новый unit-файл:

 
Mount remote file system with sshfs
network-online.target network.target
network-online.service network.target

simple
evgeniy
/usr/bin/sshfs -f -o allow_other developer@123.123.123.123:/var/www/ /home/evgeniy/var-www/
/bin/fusermount -u /home/evgeniy/var-www/
always
3

remote-fs.target

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

Команда sshfs выполняется от имени пользователя evgeniy, поэтому нам не нужно указывать путь к файлу ключа. Если пользователь не указан, команда будет выполнена от имени пользователя root — в этом случае указываем путь к файлу ключа:

# пользователь не указан, команда будет выполнена от имени пользователя root
simple
/usr/bin/sshfs -f -o allow_other -o IdentityFile=/home/evgeniy/.ssh/id_rsa developer@123.123.123.123:/var/www/ /home/evgeniy/var-www/
/bin/fusermount -u /home/evgeniy/var-www/

Если по каким-то причинам нельзя настроить аутентификацию по ключу, можно использовать утилиту sshpass. Опция -f для утилиты sshpass говорит о том, что пароль доступа к серверу сохранен в файле /home/evgeniy/server.pass.

# пользователь не указан, команда будет выполнена от имени пользователя root
simple
/usr/bin/sshpass -f /home/evgeniy/server.pass /usr/bin/sshfs -f -o allow_other developer@123.123.123.123:/var/www/ /home/evgeniy/var-www/
/bin/fusermount -u /home/evgeniy/var-www/

Разумеется, утилиту sshpass надо предварительно установить. Если нет желания хранить пароль в отдельном файле, можно просто передать его прямо в команде монтирования:

# пользователь не указан, команда будет выполнена от имени пользователя root
simple
/usr/bin/sshfs -o allow_other -o ssh_command="sshpass -p 'qwerty' ssh" developer@123.123.123.123:/var/www/ /home/evgeniy/var-www/
/bin/fusermount -u /home/evgeniy/var-www/

Сообщаем системе про новый unit-файл:

 

Добавляем новую службу в автозагрузку:

 systemctl enable mount-remote-file-system.service

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

 sudo systemctl start mount-remote-file-system.service
 sudo systemctl stop mount-remote-file-system.service

2.2. Создаем mount-файл

Мне пришлось изменить имя директории для монтирования удаленной файловой системы с /home/evgeniy/var-www/ на /home/evgeniy/server/, потому что имя unit-файла должно состоять из имен директорий, показывающих путь к точке монтирования, то есть вот так home-evgeniy-server.mount.

 
Mount remote file system with sshfs
network-online.target network.target
network-online.service network.target

developer@123.123.123.123:/var/www/
/home/evgeniy/server/
allow_other,uid=1000,IdentityFile=/home/evgeniy/.ssh/id_rsa
fuse.sshfs

remote-fs.target

Если по каким-то причинам нельзя настроить аутентификацию по ключу, можно использовать пароль:

/home/evgeniy/server/
allow_other,uid=1000,ssh_command=sshpass -f /home/evgeniy/server.pass ssh
fuse.sshfs
/home/evgeniy/server/
allow_other,uid=1000,ssh_command=sshpass -p qwerty ssh
fuse.sshfs

Сообщаем системе про новый unit-файл:

 

Добавляем новую службу в автозагрузку:

 systemctl enable home-evgeniy-server.mount

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

 sudo systemctl start home-evgeniy-server.mount
 sudo systemctl stop home-evgeniy-server.mount

Посмотреть текущее состояние можно с помощью команды:

 sudo systemctl status home-evgeniy-server.mount
● home-evgeniy-server.mount - Mount remote file system with sshfs
   Loaded: loaded (/etc/systemd/system/home-evgeniy-server.mount; enabled; vendor preset: enabled)
   Active: active (mounted) since Mon 2020-06-15 16:39:26 MSK; 2min 50s ago
    Where: /home/evgeniy/server
     What: developer@123.123.123.123:/var/www/
  Process: 646 ExecMount=/bin/mount developer@123.123.123.123:/var/www/ /home/evgeniy/server -t fuse.sshfs -o allow_other,uid=1000,IdentityFile=/home/evgeniy/.ssh/id_rsa (code=exited, status=0/SUC
    Tasks: 6 (limit: 2328)
   CGroup: /system.slice/home-evgeniy-server.mount
           ├─659 ssh -x -a -oClearAllForwardings=yes -oIdentityFile=/home/evgeniy/.ssh/id_rsa -2 developer@123.123.123.123 -s sftp
           └─798 sshfs developer@123.123.123.123:/var/www/ /home/evgeniy/server -o rw,allow_other,uid=1000,IdentityFile=/home/evgeniy/.ssh/id_rsa,dev,suid

июн 15 16:39:25 sshfs-client systemd[1]: Mounting Mount remote file system with sshfs...
июн 15 16:39:26 sshfs-client systemd[1]: Mounted Mount remote file system with sshfs.

Дополнительно

Поиск:
Linux • SSH • Директория • Клиент • Ключ • Настройка • Сервер • Установка • Файл • SSHFS

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

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

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

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

Команда sudo и примеры ее использования

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

Использование команды sudo в Linux

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

 sudo program \\   program – название приложения, которое вы хотите запустить

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

sudo apt install program

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

VDS Timeweb арендовать

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

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

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

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

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

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

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

sudo

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

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

sudo1

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

sudo2

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

su - test

sudo3

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

Аутентификация по ключу

Давайте создадим пару ключей на клиенте и скопируем публичный ключ на сервер:

 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/evgeniy/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in .
Your public key has been saved in .
The key fingerprint is:
SHA256:aR5/t1LFc40pkZD6WjGgog4om4gbiWbDjP5HTH1+cb8 evgeniy@sshfs-client
The key's randomart image is:
+---[RSA 2048]----+
|          .o .   |
|        . . o    |
|      .. o   . +.|
|    .....oo...o.=|
|.  .o.  S. oo...o|
|O..  o o +o.  .. |
|O@  .   .oo ... .|
|O.o  .  .  ... E |
|.o...        ..  |
+----[SHA256]-----+
 
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/evgeniy/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
developer@123.123.123.123's password: 
Number of key(s) added: 1
Now try logging into the machine, with: "ssh developer@123.123.123.123"
and check to make sure that only the key(s) you wanted were added.

Проверяем, что теперь можем подключаться к серверу без ввода пароля:

 
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 4.15.0-106-generic x86_64)
..........
 

И монтируем удаленную директорию уже без ввода пароля:

 

Предоставление и отзыв прав суперпользователя

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

Создание нового пользователя с root

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

sudo Linux

  1. Откройте Терминал и введите команду
  2. В консоли появятся инструкции по созданию нового пользователя. Присвойте пароль и подтвердите действие, чтобы завершить создание.
  3. Добавьте новую учетную запись в группу sudo, введя user здесь тоже понадобится заменить).
  4. Проверьте выполненные действия, переключившись на новую учетную запись через . Для подтверждения введите пароль (при вводе символы не отображаются на экране).
  5. Выполните любую команду с и убедитесь, что все прошло успешно.

Для существующей учетной записи

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

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

Используйте предыдущую инструкцию для проверки внесенных изменений.

Откат прав суперпользователя

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

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

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

Выводы

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Дополнительно:  What is the suffix of art?
Оцените статью
Master Hi-technology
Добавить комментарий