При попытке скопировать/удалить файл, отказано в доступе
Не скажу что в линуксе я нуб, но всё же стыдно становится от того, что залип на какой-то детской ерунде. В общем система archlinux MATE. Имеем /dev/sda, /dev/sdb и /dev/sdс Система соответственно стоит на /dev/sda До вчерашнего дня всё было нормально, но с сегодняшнего дня не могу ничего скопировать/удалить, да и вообще что-нибудь создать на /dev/sdb dev/sdc отказано в доступе. Такое ощущение что при монтировании диски ридонли. Даже в терминале пытаюсь скопирвоать от рута — отказано в доступе. При попытке chmod — неподдерживаемая операция. Может кто что подскажет. С наступающим всех.
Так проверьте:
cat /proc/mount
ls -ld что куда
[root@archlinux
]# cat /proc/mounts proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 sys /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 dev /dev devtmpfs rw,nosuid,relatime,size=4043884k,nr_inodes=1010971,mode=755 0 0 run /run tmpfs rw,nosuid,nodev,relatime,mode=755 0 0 /dev/sda2 / ext4 rw,relatime,data=ordered 0 0 securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0 tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0 devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0 cgroup /sys/fs/cgroup/unified cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate 0 0 cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,name=systemd 0 0 pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0 cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0 cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_cls,net_prio 0 0 cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0 cgroup /sys/fs/cgroup/rdma cgroup rw,nosuid,nodev,noexec,relatime,rdma 0 0 cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacct 0 0 cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0 cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0 cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0 cgroup /sys/fs/cgroup/pids cgroup rw,nosuid,nodev,noexec,relatime,pids 0 0 cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0 systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=36,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=733 0 0 debugfs /sys/kernel/debug debugfs rw,relatime 0 0 tmpfs /tmp tmpfs rw,nosuid,nodev 0 0 hugetlbfs /dev/hugepages hugetlbfs rw,relatime,pagesize=2M 0 0 configfs /sys/kernel/config configfs rw,relatime 0 0 mqueue /dev/mqueue mqueue rw,relatime 0 0 binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0 /dev/sda1 /boot ext2 rw,relatime,block_validity,barrier,user_xattr,acl 0 0 /dev/sda3 /home ext4 rw,relatime,data=ordered 0 0 tmpfs /run/user/1000 tmpfs rw,nosuid,nodev,relatime,size=810236k,mode=700,uid=1000,gid=997 0 0 gvfsd-fuse /run/user/1000/gvfs fuse.gvfsd-fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=997 0 0 fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0 /dev/sdc5 /run/media/sharapov/Data ntfs rw,nosuid,nodev,relatime,uid=1000,gid=997,fmask=0177,dmask=077,nls=utf8,errors=continue,mft_zone_multiplier=1 0 0
А вторую команду не понял
Ну и где в твоём вывод /dev/sdb и /dev/sdc? Не смонтировано ни одной файловой системы с них.
В форме отправки сообщения на форум между полем для ввода текста сообщения и кнопками «поместить», «предпросмотр» и «отмена» есть некоторый текст, прочти его пожалуйста и в частности открой ссылку на разметку lorcode.
И обрати внимание на тег [code][/code].
Будеи выглядеть вот так:
И нажимай кнопку «предпросмотр» перед помещением, а то читать твоё сообщение невозможно.
UPD:
А вот нашёл среди каши твоего сообщения, у тебя на /dev/sdc5 NTFS и использован ядерый драйвер ntfs, который умеет только читать:
Источник
Урок 17. Права доступа Linux к файлам и папкам
В 3-м уроке была рассмотрена команда ls -l , а также краткое описание к выводу команды. В выводе команды также присутствует информация о правах доступа к данному файлу:
Права доступа разделены на 3 группы:
- владелец файла
- группа владельцев файла
- другие пользователи
Для указания уровня доступа к файлу или каталогу используются следующие атрибуты.
- r (read) — чтение файла разрешено, то есть можно просматривать его содержимое, открывать в текстовом редакторе.
- w (write) — запись файла разрешена, то есть можно его редактировать, переименовывать, удалять.
- x (execute) — исполнение файла разрешено. Это касается исполняемых файлов.
- r (read) — разрешено просматривать содержимое каталога, то есть можно воспользоваться командой ls и посмотреть какие файлы и каталоги содержаться в данном каталоге.
- w (write) — используется совместно с атрибутом x (execute). Позволяет удалять и переименовывать файлы в каталоге.
- x (execute) — при использовании совместно атрибутом r (read) позволяет увидеть атрибуты файла, то есть его размер, дату модификации, права доступа. Одним словом позволяет полноценно воспользоваться командой ls -l . При использовании совместно с атрибутом w (write) позволяет перейти в каталог командой cd , удалять и переименовывать файлы.
Рассмотрим вышесказанное на примерах.
У нас в системе имеются 2 пользователя: teacher (учитель) и student (студент). У каждого из них имеется свой домашний каталог, в котором они могут хранить свои файлы.Так как пользователь student не является владельцем каталога /home/teacher и не относится к группе его владельцев, то для него будут действовать права доступа для категории остальных пользователей.
Домашний каталог пользователя teacher имеет следующие права доступа:
Пользователь student хочет посмотреть какие файлы имеются в данном каталоге:
Доступа нет. Попробуем хотя бы перейти в этот каталог:
Снова нет доступа.
Пользователь teacher решил всем разрешить просмотр его файлов в каталоге:
Попробуем узнать что у него хранится:
Мы узнали имена файлов, но абсолютно ничего не знаем какие это файлы и их атрибуты. То есть атрибут r (read) каталога позволяет просматривать имена (только имена) файлов с помощью ls , но не выдает о них дополнительную информацию. Попробуем перейти в этот каталог:
И снова неудача. Попробуем установить права записи, то есть атрибут w (write):
Теперь попробуем выполнить все те же действия, что и до этого:
Как видно атрибут w (write) сам по себе не работает. Удалим этот атрибут и установим x (execute):
доступ к данному каталогу у нас имеется при наличии установленных прав на чтение и исполнение.
Попробуем теперь удалить или переименовать любой файл:
Операция запрещена, так как у нас для каталога teacher/ не установлен атрибут w (write).
Но ведь сами файлы в каталоге имеют полный доступ для всех остальных пользователей.. Почему мы ничего не можем сделать с данными файлами?
Все верно, файлы имеют полный доступ для всех, однако система прежде всего смотрит на то, какие права доступа у каталога, так как файлов может быть очень много и менять права доступа каждого из них довольно утомительно и легко можно допустить ошибку. Гораздо проще установить определенные права доступа на каталоги и перемещать соответствующие файлы в эти каталоги. Кроме того, операции по удалению и перемещению файлов регламентируются правами доступа данного каталога, а не файла.
Когда для каталога запрещена запись, то остальным пользователям запрещено следующее:
- удалять файлы из каталога
- перемещать/переименовывать файлы
- создавать жесткие ссылки
- создавать новые файлы и каталоги в данном каталоге
Однако данная политика не накладывает ограничения на редактирование и копирование файлов. Можно с легкостью отредактировать и сохранить файл. Кроме того, мы можем скопировать файл в свой каталог. Причем файл будет иметь совершенно иные атрибуты. Например, скопируем файл Worknotes.txt в каталог /home/student/:
Теперь у скопированного файла новый владелец и другие права доступа. Здесь данные операции регламентируется уже правами доступа самого файла.
А что можно делать с файлами, когда установлен атрибут x (execute)?
Можно делать следующее:
- просматривать атрибуты файлов (совместно с атрибутом r ) с помощью команды ls -l
- переходить в каталог командой cd
- запуск исполняемых файлов
- совместно с атрибутом w (write) можно удалять и перемещать файлы
Теперь установим атрибут w (write) для каталога /home/teacher/ и посмотрим, что произойдет:
Теперь можно делать абсолютно что угодно с файлами и каталогами.
То есть атрибут w (write) работает всегда в паре с x (execute)?
Все верно, но это в отношении каталогов. У файлов данные атрибуты независимы друг от друга.
А как быть, если пользователь student хочет предоставить доступ к своим файлам определенным пользователям и запретить остальным?
Для этого существует группа владельцев файла. Пользователю student достаточно поменять группу владельцев файла на teache r и предоставить соответствующие права, а всем остальным — запретить:
А как поменять группу?
С помощью команды chgrp [опции] группа файл .
Например, чтобы поменять группу владельцев файла Linux.txt на teacher введем chgrp teacher Linux.txt.
А если имеется много файлов, то как это сделать быстрее и проще?
Есть специальная опция -R ( —recursive ). Например, имеется каталог Homework/ с файлами:
Применим команду chgrp -R teacher Homework/ :
А можно поменять и самого владельца?
Конечно, существует команда chown [опции] владелец файл .
Однако в тех случаях, когда нам необходимо поменять сразу и группу и владельца, то приходится выполнять 2 команды и это не очень удобно. Поэтому команда chown позволяет менять одновременно и владельца и группу chown [опции] владелец:группа файл. Опция -R ( —recursive ) действительна и для данной команды.
А как можно менять сами права для группы владельцев и остальных пользователей?
Существуют 2 способа:
Используются следующие обозначения объектов, которым предоставляем права доступа:
Права меняются с помощью команды chmod [опции] права_доступа файл. Например, файл notes.txt имеет следующие права доступа:
Запретим остальным пользователям редактирование данного файла:
chmod o-w notes.txt
Теперь разрешим группе владельцев исполнение данного файла:
chmod g+x notes.txt
То есть мы указываем объект ( u , g или о ), а затем с помощью символов управления назначаем или удаляем соответствующие права.
А можно одновременно выполнить вышеуказанные действия в одной команде?
Конечно, достаточно выполнить chmod o-w,g+x notes.txt и результат будет тот же.
А можно одновременно в одной команде выполнить следующее:
- владельцу назначить rw-
- группе назначить r-x
- остальным назначить r— ?
Конечно можно. Для этого существует символ ” = ” : chmod u=rw,g=rx,o=r notes.txt.
А если нужно всем назначить одинаковые права, например r-x , то воспользуемся chmod a=rx notes.txt :
Существует и другой способ указать права доступа — с помощью восьмеричного представления. Не будем вдаваться в подробности булевы алгебры и двоично-восьмеричного преобразования. Просто запомним таблицу:
Источник