training-web.ruГлавнаяКатегорииО насКарта сайтаПоискТёмная тема

Категории

Как изменить права у файла при помощи chmod BASH

Создано: 11 мая 2017Автор: Егор Астапов4762 просмотраСложность: легкий

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

операторописание
+добавить определенные права
-удалить определенные права
=установить определенные права

# операторы для команды chmod 
+  -  =

# Делает файл "file1" доступным для исполнения всем пользователям. 
chmod +x script1.sh

# запрет на выполнение
chmod -x script1.sh

# любой пользователь сможет запустить "file1" с привилегиями владельца файла.
chmod u+s /f1/f3/file1

# разрешение на чтение
chmod o+r /folder/file

# снятие разрешения чтения файла
chmod o-r /folder/file

#забрать все права
chmod o= /folder/file

# Выдает право на запись/чтение владельцу файла "file1", и право на чтение
# всем остальным (восьмеричное число).
chmod 644 file1

# Выдает право на чтение, запись и исполнение файлов в каталоге,
# дополнительно устанавливает "sticky bit".
# Это означает, что удалять файлы в этом каталоге могут только владельцы файлов,
chmod 1777 directory-name

С ключом -R команда chmod будет рекурсивно накидывать всем файлам права 777 на выполнение. Даже если в папке folder одна тысяча файлов, то все они будут иметь права 777 или rwx.


# широкие полномочия
chmod -R +777 ./folder
chmod -R +777 ./folder

# аналогичная запись
chmod -R +rwx ./folder
chmod -R -rwx ./folder

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


# Еще один способ отличить root-а от не root-а:
ROOTUSER_NAME=root

username=`id -nu` # Или... username=`whoami`
if [ "$username" = "$ROOTUSER_NAME" ]
then 
  echo "Рутти-тутти. - root!"
else 
  echo "Вы - лишь обычный юзер."
fi

Таблица с правилами владельца

значениеописание
uвладелец
gгруппа
oпрочие пользователи
aвсе пользователи (или ugo)

Таблица атрибутами

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

Символьное представление выглядит примерно так: r:w:x|r:w:x|r:w:x. Я специально поставил разделитель |, чтобы показать три блока.

Числовое представление выглядит примерно так: 4:2:1|4:2:1|4:2:1.

Владельцы: u | g | o | a. Например, chmod u=rwx,g=rx,o=rx filename.txt - эта команда установит права «rwxr-xr-x» (755) для файла filename.txt

chmod 0777 filename.txt - эта команда разрешает всем все действия (чтение, запись, выполнение) с файлом.

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

значениеописание
0---
1--x
2-w-
3-wx
4r--
5r-x
6rw-
7rwx

Например, -rw-rw-rw равносильно chmod 666 file.txt. Предлагаю вам простой способ для накидывания прав. Запомнить все таблицы сложно и не нужно. Вы добавляете большие права файлу chmod 777 file.txt и потом лишаете его некоторых прав. Допустим файлы нельзя выполнять chmod o-x file.txt. Прочие пользователи (не root) не смогут запускать файл, но смогут читать и записывать информацию в файл.

Довольно часто нужно создать папку с нужными правами. Смотрите статью как создать папки mkdir BASH. Если при создании файла указали не верные права, то вам не нужно заново создавать файл. Вы можете воспользоваться командой chmod с нужными ключами.

Вы можете изменить владельца файла, директории или ссылки. Файлы с включённым режимом StickyBit может удалить только владелец файла (u=user2).


#смена владельца папки
sudo chown user2 dir1/

#смена группы владеющей файлом
sudo chgrp group1 file.txt

#включить StickyBit
sudo chmod 1777 dir1

#выключить StickyBit
sudo chmod 0777 dir1

Комментарии

реклама