Автор Тема: Шпаргалка по правам доступа  (Прочитано 28616 раз)

Оффлайн ivm

  • Ветеран
  • *****
  • Сообщений: 3071
  • Что бы ни случилось, всё будет хорошо!
Шпаргалка по правам доступа
« : 15 Августа 2015, 02:46:36 »
Права доступа к файлам и папкам в Linux: устройство, настройка, изменение - Шпаргалка по правам доступа.

Оффлайн vita

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4803
  • Да будет свет!
Re: Шпаргалка по правам доступа
« Ответ #1 : 21 Декабря 2015, 15:31:21 »
Хорошим дополнением к шпаргалке может стать статья chmod: изменение прав доступа, хоть и написана давненько (01.08.2008).
chmod: изменение прав доступа
chmod: изменение прав доступа

Команда chmod (CHange MODe - изменить режим) имеет весьма специфический синтаксис. Синтаксис в общем случае:

chmod [опции] <изменение режима> <файл|каталог> [файл|каталог...]

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

    в виде восьмеричного числа. Разрешения владельца при этом соответствуют числам в виде 00, где соответствует назначаемому разрешению: 4 на чтение, 2 на запись и 1 на выполнение. Аналогично, разрешения группы владельца принимают вид 0, а разрешения для «остальных» - . Затем, все что вам нужно сделать - так это найти сумму назначаемых разрешений, чтобы получить нужный режим. Так, разрешения rwxr-xr-- соответствуют 400+200+100 (разрешения для владельца, rwx) +40+10 (разрешения для группы, r-x) +4 (разрешения для остальных, r--) = 754; таким образом, разрешения выражаются через свободные члены. Это значит, что предыдущие разрешения безусловно заменяются;
    при помощи выражений. При этом разрешения выражаются через последовательность выражений, разделенных запятыми. Отсюда выражение принимает следующий вид: [категория]<+|-|=><разрешения>.



Примеры:

    chmod -R o-w /shared/docs: рекурсивно удаляет разрешение на запись для остальных у всех файлов и подкаталогов в каталоге /shared/docs/.
    chmod -R og-w,o-x private/: рекурсивно удаляет разрешение на запись для группы и остальных у всего каталога private/, и удаляет разрешение на выполнение для остальных.
    chmod -c 644 misc/file*: изменяет разрешения для всех файлов в каталоге misc/, чьи имена начинаются с file на rw-r--r-- (т.е. разрешение на чтение для всех и разрешение на запись только для владельца), и сообщает только о тех файлах, которые были подвержены действию команды.


[Caution]   Предостережение
Помните, что ограничение доступа к файлам — это способ защитить систему. Всякий раз, когда вы разрешаете кому-нибудь читать файл, записывать в него или запускать его на исполнение, вы рискуете, что файл будет изменен или удален. Как правило, доступ к файлу следует разрешать только тем пользователям, которым это действительно необходимо.
В следующем примере показано, как разрешить всем пользователям читать файл, вносить в него изменения и сохранять их. Для этого надо изменить права доступа группы «остальные».
Введите в командной строке:

ls -l example1.txt

На экран будет выведена следующая информация:

-rw-rw-r--   1 user user 42 Мар 24 22:07 example1.txt

Теперь введите такую команду:

chmod o+w example1.txt

Команда o+w означает, что вы даете права «остальным» («others», обозначается буквой «о») на запись в файл example1.txt. Чтобы увидеть, к чему привело выполнение указанной команды, опять посмотрим на файл:

-rw-rw-rw-  1 user user 42 Мар 24 22:09 example1.txt

Теперь все могут читать и осуществлять запись в файл.
Чтобы запретить чтение файла example1.txt и запись в него, используйте команду chmod.

chmod go-rw example1.txt

Команда go-rw сообщает системе, что вы хотите запретить чтение файла example1.txt и запись в него группе и «остальным».
В результате права доступа будут выглядеть так:

-rw-------  1 user user 42 Мар 24 22:10 example1.txt

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

Классы
    u — пользователь, который является владельцем файла (от английского «user»);
    g — группа, к которой принадлежит пользователь (от английского «group»);
    o — остальные (не владелец и не группа-владелец, от английского «others»);
    a — все (u, g и o, от английского «all»).
Права
    r — право на чтение;
    w — право на запись;
    x — право на исполнение.
Действия
    + — дает право;
    - — отбирает право;
    = — оставляет только данное право.

Хотите проверить ваши знания? Отберите у всех пользователей все права на файл example1.txt.

chmod a-rwx example1.txt

А сейчас проверьте, можете ли вы прочитать данный файл командой cat example1.txt. Вы должны увидеть следующее:

cat: example1.txt: Permission denied

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

chmod u+rw example1.txt

Чтобы убедиться что вы можете прочитать данный файл, воспользуйтесь командой cat example1.txt.
Приведем несколько примеров использования команды chmod:

    g+w — дает группе-владельцу право на запись;
    o-rwx — отбирает все права у остальных пользователей;
    u+x — дает владельцу право на выполнение файла;
    a+rw — позволяет любому читать и записывать в файл;
    ug+r — позволяет владельцу и группе читать файл;
    g=rx — позволяет группе читать и исполнять файл (не записывать в него).

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

chmod a-x docs

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

bash: docs: Permission denied

Верните права себе и своей группе:

chmod ug+x docs

Если вы сейчас проверите результаты своих действий при помощи команды ls -l, вы увидите, что доступ к каталогу docs/ запрещен только остальным пользователям.
Делай с нами, делай как мы, делай лучше нас!

Оффлайн alv

  • Ветеран
  • *****
  • Сообщений: 1470
  • Это я и есть
    • Наш Блогосайт
Re: Шпаргалка по правам доступа
« Ответ #2 : 21 Декабря 2015, 17:06:04 »
хоть и написана давненько (01.08.2008).
UNIX - не конституция, в нём права раз в пять лет не перекраивают :)
Лучшее, что я читал про политику разграничения прав доступа, написано Иваном Паскалем в конце прошлого тысячелетия: http://pascal.tsu.ru/unix/users/users0.html
На примере FreeBSD, кстати :)
За прекрасных дам!

Оффлайн ivm

  • Ветеран
  • *****
  • Сообщений: 3071
  • Что бы ни случилось, всё будет хорошо!
Re: Шпаргалка по правам доступа
« Ответ #3 : 21 Декабря 2015, 17:42:08 »
Файлы и "права доступа" к ним находятся в книге-то в этой, но на другой странице.

Оффлайн vita

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4803
  • Да будет свет!
Re: Шпаргалка по правам доступа
« Ответ #4 : 21 Марта 2016, 10:35:13 »
В случае необходимости предоставления прав полного доступа к определённым каталогам нужно с правами root выполнить, например,:
sudo chmod 777 ~/.cache/thumbnails
Для полного доступа к вложенным в эти каталоги папкам или файлам в команде указывается к ним путь, например:
sudo chmod 777 ~/.cache/thumbnails/normalP.s.: К сожалению, в файловом менеджере Caja подобные операции выполняются не всегда корректно.
« Последнее редактирование: 28 Марта 2016, 15:20:59 от vita »
Делай с нами, делай как мы, делай лучше нас!

Оффлайн ivm

  • Ветеран
  • *****
  • Сообщений: 3071
  • Что бы ни случилось, всё будет хорошо!
Re: Шпаргалка по правам доступа
« Ответ #5 : 09 Октября 2016, 00:31:29 »
Иногда домашнюю папку вручную копируют в другое место, а затем «восстанавливают» в свежеустановленную систему. Однако, это может вызвать проблемы, если имя пользователя или UID отличается от предыдущего.
Чтобы изменить владельца файлов в вашем домашнем каталоге на текущего пользователя (проще говоря, стать владельцем домашней папки) надо выполнить следующую команду в терминале: sudo chown username -R /home/usernameЭто может пригодиться для работы с прежним домашним каталогом, а также при копировании части имеющейся домашней папки новому пользователю, созданному в системе, установленной при помощи Systemback.