Linux. Files. Permissions: различия между версиями
Cless (обсуждение | вклад) |
Cless (обсуждение | вклад) |
||
| Строка 2: | Строка 2: | ||
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__ | __ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__ | ||
= | = File types = | ||
The file type is one of the following characters: | The file type is one of the following characters: | ||
| Строка 89: | Строка 89: | ||
<nowiki>-------------</nowiki>e-- keep.txt | <nowiki>-------------</nowiki>e-- keep.txt | ||
= '''SUID, GUID''' = | |||
== Настройка Setuid == | |||
Setuid – это бит разрешения, который позволяет пользователю запускать исполняемый файл с правами владельца этого файла. Другими словами, использование этого бита позволяет нам поднять привилегии пользователя в случае, если это необходимо. Классический пример использования этого бита в операционной системе это команда sudo. | |||
<code>root@ruvds-hrc [~]# which sudo /usr/bin/sudo | |||
root@ruvds-hrc [~]# ls -l /usr/bin/sudo | |||
-rwsr-xr-x 1 root root 125308 Feb 20 14:15 /usr/bin/sudo</code> | |||
Как мы видим на месте, где обычно установлен классический бит x (на исполнение), у нас выставлен специальный бит s. Это позволяет обычному пользователю системы выполнять команды с повышенными привилегиями без необходимости входа в систему как root. | |||
Установка бита setuid не представляет сложности. Для этого используется команда: | |||
<code>root@ruvds-hrc [~]# chmod u+s <filename></code> | |||
Рассмотрим на примере. Создадим файл с именем ''myfile'', а затем проверим его разрешения с помощью команды ''ls -l''. | |||
<code>root@ruvds-hrc [~]# touch myfile | |||
root@ruvds-hrc [~]# ls -l myfile | |||
-rw-rw-r-- 1 test test 0 Mar 25 17:59 myfile</code> | |||
Как видим, файл не имеет разрешений на выполнение для пользователя, группы и остальных. Добавим бит setuid: | |||
<code>root@ruvds-hrc [~]# chmod u+s myfile | |||
root@ruvds-hrc [~]# ls -l myfile | |||
-rwSrw-r-- 1 test test 0 Mar 25 12:00 myfile</code> | |||
Обратим внимание, что вместо ожидаемой буквы «s», видим заглавную «S». Почему? Это случается, если setuid установлен, но сам владелец файла не имеет прав на его выполнение. Добавим это разрешение с помощью команды ''chmod u + x''. | |||
<code>root@ruvds-hrc [~]# chmod u+x myfile | |||
root@ruvds-hrc [~]# ls -l | |||
total 0 | |||
-rwsrw-r-- 1 test test 0 Mar 25 12:59 myfile</code> | |||
== Настройка Setgid == | |||
Принцип работы Setgid очень похож на setuid с отличием, что файл будет запускаться пользователем от имени группы, которая владеет файлом. Иллюстрирует работу этого бита команда ''crontab'': . | |||
<code>root@ruvds-hrc [~]# which crontab | |||
/usr/bin/crontab | |||
root@ruvds-hrc [~]# ls -l /usr/bin/crontab | |||
-rwxr-sr-x 1 root crontab 34021 Feb 12 2017 /usr/bin/crontab</code> | |||
Теперь перейдем к настройке этого бита. Аналогично setuid, бит setgid выставляется с помощью команды chmod g + s . | |||
Рассмотрим на примере создания нового файл с именем ''myfile2''. | |||
<code>root@ruvds-hrc [~]# touch myfile2 | |||
root@ruvds-hrc [~]# ls -l myfile2 | |||
-rw-rw-r-- 1 test test 0 Mar 25 19:25 myfile2</code> | |||
Выполним команду ''chmod g + s'' и посмотрим результаты. | |||
<code>root@ruvds-hrc [~]# chmod g+s myfile2 | |||
root@ruvds-hrc [~]# ls -l myfile2 | |||
-rw-rwSr-- 1 test test 0 Mar 25 19:25 myfile2</code> | |||
Как разобрались выше, меняем заглавную « S » путем выдачи прав на исполнение группе-владельцу: | |||
<code>root@ruvds-hrc [~]# chmod g+x myfile2 | |||
root@ruvds-hrc [~]# ls -l | |||
total 0 | |||
-rwsrw-r-- 1 test test 0 Mar 25 19:25 myfile | |||
-rw-rwsr-- 1 test test 0 Mar 25 19:25 myfile2</code> | |||
= '''Sticky bit''' = | = '''Sticky bit''' = | ||
Версия 22:06, 26 ноября 2024
File types
The file type is one of the following characters:
- regular file
b block special file
c character special file (disk)
C high performance ("contiguous data") file
d directory
D door (Solaris 2.5 and up)
l symbolic link
M off-line ("migrated") file (Cray DMF)
n network special file (HP-UX)
p FIFO (named pipe)
P port (Solaris 10 and up)
s socket
? some other file type
Посмотреть все аттрибуты файла
stat ./Тест.part03.rar
File: «./Тест.part03.rar»
Size: 5146762 Blocks: 10056 IO Block: 4096 обычный файл
Device: 871h/2161d Inode: 8650784 Links: 1
Access: (0760/-rwxrw----) Uid: ( 3131/tmb_chishko) Gid: ( 513/Domain Users)
Access: 2019-11-08 13:14:28.768582082 +0400
Modify: 2019-11-06 17:03:47.109375000 +0400
Change: 2019-11-08 13:14:29.065585726 +0400
Timestamps
There are 3 kind of "timestamps":
Access - the last time the file was read
Modify - the last time the file was modified (content has been modified)
Change - the last time meta data of the file was changed (e.g. permissions)
Аттрибуты дополнительные
Просмотреть аттрибуты
// создадим файл
touch keep.txt
// просмотрим аттрибуты
lsattr keep.txt
-------------e-- keep.txt
// создадим аттрибут "только для чтения"
sudo chattr +i keep.txt
// теперь даже root не сможет удалить этот файл
lsattr keep.txt
----i--------e-- keep.txt
// удалим аттрибут "только для чтения"
sudo chattr -i keep.txt
// просмотрим
lsattr keep.txt
-------------e-- keep.txt
SUID, GUID
Настройка Setuid
Setuid – это бит разрешения, который позволяет пользователю запускать исполняемый файл с правами владельца этого файла. Другими словами, использование этого бита позволяет нам поднять привилегии пользователя в случае, если это необходимо. Классический пример использования этого бита в операционной системе это команда sudo.
root@ruvds-hrc [~]# which sudo /usr/bin/sudo
root@ruvds-hrc [~]# ls -l /usr/bin/sudo
-rwsr-xr-x 1 root root 125308 Feb 20 14:15 /usr/bin/sudo
Как мы видим на месте, где обычно установлен классический бит x (на исполнение), у нас выставлен специальный бит s. Это позволяет обычному пользователю системы выполнять команды с повышенными привилегиями без необходимости входа в систему как root.
Установка бита setuid не представляет сложности. Для этого используется команда:
root@ruvds-hrc [~]# chmod u+s <filename>
Рассмотрим на примере. Создадим файл с именем myfile, а затем проверим его разрешения с помощью команды ls -l.
root@ruvds-hrc [~]# touch myfile
root@ruvds-hrc [~]# ls -l myfile
-rw-rw-r-- 1 test test 0 Mar 25 17:59 myfile
Как видим, файл не имеет разрешений на выполнение для пользователя, группы и остальных. Добавим бит setuid:
root@ruvds-hrc [~]# chmod u+s myfile
root@ruvds-hrc [~]# ls -l myfile
-rwSrw-r-- 1 test test 0 Mar 25 12:00 myfile
Обратим внимание, что вместо ожидаемой буквы «s», видим заглавную «S». Почему? Это случается, если setuid установлен, но сам владелец файла не имеет прав на его выполнение. Добавим это разрешение с помощью команды chmod u + x.
root@ruvds-hrc [~]# chmod u+x myfile
root@ruvds-hrc [~]# ls -l
total 0
-rwsrw-r-- 1 test test 0 Mar 25 12:59 myfile
Настройка Setgid
Принцип работы Setgid очень похож на setuid с отличием, что файл будет запускаться пользователем от имени группы, которая владеет файлом. Иллюстрирует работу этого бита команда crontab: .
root@ruvds-hrc [~]# which crontab
/usr/bin/crontab
root@ruvds-hrc [~]# ls -l /usr/bin/crontab
-rwxr-sr-x 1 root crontab 34021 Feb 12 2017 /usr/bin/crontab
Теперь перейдем к настройке этого бита. Аналогично setuid, бит setgid выставляется с помощью команды chmod g + s .
Рассмотрим на примере создания нового файл с именем myfile2.
root@ruvds-hrc [~]# touch myfile2
root@ruvds-hrc [~]# ls -l myfile2
-rw-rw-r-- 1 test test 0 Mar 25 19:25 myfile2
Выполним команду chmod g + s и посмотрим результаты.
root@ruvds-hrc [~]# chmod g+s myfile2
root@ruvds-hrc [~]# ls -l myfile2
-rw-rwSr-- 1 test test 0 Mar 25 19:25 myfile2
Как разобрались выше, меняем заглавную « S » путем выдачи прав на исполнение группе-владельцу:
root@ruvds-hrc [~]# chmod g+x myfile2
root@ruvds-hrc [~]# ls -l
total 0
-rwsrw-r-- 1 test test 0 Mar 25 19:25 myfile
-rw-rwsr-- 1 test test 0 Mar 25 19:25 myfile2
Sticky bit
// благодаря таким правам удалить файл из TMP может только пользователь, который этот файл создал
chmod 1777 /tmp
Freebsd расширенные атрибуты
https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/fs-acl.html
// несмотря на полный доступ к файлам, они могут ни удаляться, ни переименовываться
// или не изменяться права доступа даже из под root.
// это значит что на файл установлены дополнительные атрибуты ACL
// увидеть это можно через "ls -lao"
// "+" означает что на файле имеются расширенные атрибуты ACL
ls -lao /mnt/raid1/share/ПТК.xlsx
...
-rwxrw-rw-+ 1 root wheel uarch 17301 Jul 9 08:26 ПТК.xlsx
...
// смотрим атрибуты
getfacl /mnt/raid1/share/ПТК.xlsx
# file: /mnt/raid1/share/ПТК.xlsx
# owner: root
# group: wheel
owner@:rwxpD-aARWcCo-:-------:allow
group@:rw-p--a-R-c---:-------:allow
everyone@:rw-p--a-R-c---:-------:allow
// сбрасываем атрибуты
// Параметр -k удалит все установленные на данный момент ACL из файла или файловой системы.
// Более предпочтительный метод это использование параметра -b, который оставит необходимые для работы ACL поля.
setfacl -b /mnt/raid1/share/ПТК.xlsx
// смотрим
getfacl /mnt/raid1/share/ПТК.xlsx
# file: /mnt/raid1/share/ПТК.xlsx
# owner: root
# group: wheel
owner@:rwxp--aARWcCos:-------:allow
group@:rwxp--a-R-c--s:-------:allow
everyone@:rwxp--a-R-c--s:-------:allow
--------------------------------------------------------------------------------