What does the ‘d’ mean in ls -al results and what is that slot called? [duplicate]
In Linux, what does the d mean in the first position of drwxr-xr-x ? And what are all of the possible letters that could be there, and what do they mean? I’m trying to learn more about the Linux file permissions system, and I’d like to see a list of the character meanings for the first slot.
2 Answers 2
It means that it is a directory. The first mode field is the «special file» designator; regular files display as — (none). As for which possible letters could be there, on Linux the following exist:
- d (directory)
- c (character device)
- l (symlink)
- p (named pipe)
- s (socket)
- b (block device)
- D (door, not common on Linux systems, but has been ported)
On Gentoo, what the first character in a linux file permissions drwxrwxrwx means:
The first character gives you a hint of the type of object it is.
Possible values for that first character: ( — , d , c , l , p , s , b , D )
— (dash) means file and and d means directory.
el@angeliqe ~/tmpdir $ mkdir my_empty_directory el@angeliqe ~/tmpdir $ touch myfile.txt el@angeliqe ~/tmpdir $ ls -al total 16 drwxrwxr-x 3 el users 4096 Dec 21 13:06 . drwx--x--x 9 el users 4096 Dec 21 11:47 .. drwxrwxr-x 3 el users 4096 Dec 21 11:54 my_empty_directory -rw-rw-r-- 1 el users 182 Dec 21 11:45 myfile.txt
my_empty_directory has a ‘d’ and is a directory, and myfile.txt has a ‘-‘ and is a normal text file.
c means character device file
el@angeliqe /dev $ ls -al total 4 drwxr-xr-x 12 root root 4080 Dec 19 21:18 . drwxr-xr-x 20 root root 4096 Nov 3 19:00 .. crw-rw---- 1 root tty 7, 133 Nov 24 10:13 vcsa5
vcsa5 is a character device file. Find character device files with this command: find / -type c -print 2>/dev/null
b means block device
el@angeliqe /dev $ ls -al total 4 drwxr-xr-x 12 root root 4080 Dec 19 21:18 . drwxr-xr-x 20 root root 4096 Nov 3 19:00 .. brw-rw---- 1 root disk 8, 0 Nov 24 10:13 sda
sda is a block device. Find block device files with this command: find / -type b -print 2>/dev/null
l means link
el@angeliqe ~/tmpdir $ touch myfile.txt el@angeliqe ~/tmpdir $ ln -s myfile.txt myfile2.txt el@angeliqe ~/tmpdir $ ls -al total 8 drwxrwxr-x 2 el users 4096 Dec 21 13:23 . drwx--x--x 9 el users 4096 Dec 21 13:22 .. -rw-rw-r-- 1 el users 0 Dec 21 13:23 myfile.txt lrwxrwxrwx 1 el users 10 Dec 21 13:23 myfile2.txt -> myfile.txt
myfile2.txt is a symbolic link to myfile.txt . Find symbolic link files with this command: find / -type l -print 2>/dev/null
p means named pipe
el@angeliqe /dev $ ls -al total 4 drwxr-xr-x 12 root root 4080 Dec 19 21:18 . drwxr-xr-x 20 root root 4096 Nov 3 19:00 .. prw------- 1 root root 0 Nov 24 10:13 initctl
initctl is a named pipe. Find pipe files with this command: find / -type p -print 2>/dev/null
s is a socket
el@angeliqe /dev $ ls -al total 4 drwxr-xr-x 12 root root 4080 Dec 19 21:18 . drwxr-xr-x 20 root root 4096 Nov 3 19:00 .. srwxrwxrwx 1 root root 0 Nov 24 10:13 gpmctl
gpmctl is a socket. Find socket files with this command: find / -type s -print 2>/dev/null
D means door
Права доступа к файлам в Linux
В этой статье мы поговорим об обозначении прав доступа к файлам в Unix подобных системах и на простых примерах разберем, что же обознают цифры 777, 755, 644 и т.д., а также символы drwxrwxrwx.
Права доступа могут быть представлены как в буквенном, так и цифровом виде, то есть к примеру
запись «777» является полностью идентична записи «drwxrwxrwx» или «-rwxrwxrwx».
Существует 3 вида прав доступа:
- чтение — обозначается как r (read),
- запись — обозначается как w (write),
- выполнение — обозначается как x (execute).
И 3 типа пользователей, которым эти права раздаются:
- Владелец файла или директории
- Группа пользователей, которой принадлежит владелец
- Все остальные
Рассмотрим символьное представление прав доступа.
к примеру «drwxrwxrwx» (полный доступ всем) можно поделить на 4 секции: d rwx rwx rwx
1 секция можеть быть либо «d»- директория, либо «-» — файл.
2 секция показывает права доступа владельца файла или директории.
r-чтение, w-запись, x- выполнение.
3 секция показывает права доступа группы в которой находится владелец, rwx — аналогично
4 секция показывает права доступа все остальных пользователей системы.
Расшифруем несколько примеров для закрепления:
Допустим мы имеем директорию test, ниже представлен ее вывод
gt# ls -la
total 6
drwxr-xr-x 3 igor users 512 May 16 11:06 .
drwxr-xr-x 5 igor users 512 May 16 11:05 ..
-rwxr-xr-x 1 igor users 0 May 16 11:06 script.pl
drwxr—— 2 igor users 512 May 16 11:06 test2
-rwxrw-r— 1 igor users 0 May 16 11:06 text.txt
Слева направо поля: права на объект, число ссылок на объект, имя владельца, группа к которой принадлежит владелец, размер объекта, дата и время последней модификации, имя объекта.
script.pl имеет права при которых владелец может все (rwx), а все остальные, в том числе пользователи группы владельца только чтение и выполнение (r-x).
test2 видим, что это директория, владелец может все (rwx), группа владельца только чтение (r- -), у все остальных никаких прав доступа нет (- — -).
text.txt владелец может все (rwx), группа владельца может читать и изменять файл (rw-), все остальные пользователи только читать (r- -).
Теперь рассмотрим цифровое значение прав доступа.
3 цифры прав доступа это 3 секции:владелец, группа владельца, все остальные.
У каждого типа доступа есть свое значение:
Чтобы получить цифру доступа просто складываем права для каждой секции отдельно, то есть:
7 (4+2+1) — чтение, запись, выполнение;
Если взять нашу директорию test, то права доступа будут выглядеть следующим образом:
script.pl 755 или -rwxr-xr-x
text.txt 764 или -rwxrw-r—
test2 740 или drwxr——
Чтобы изменить права доступа в Linux необходимо воспользоваться командой chmod
Например: chmod 755 test.txt
Права доступа к файлам Linux
Все пользователи объединяются в группы и идентифицируются по номеру. Чтобы узнать свой UID и GID, то есть уникальный номер пользователя и номер группы, к которой принадлежит пользователь, необходимо ввести команду id, результат должен выглядеть следующим образом:
uid=1000(testk) gid=1000(testk) groups=1000(testk),27(sudo)
Просмотреть текущие права доступа к файлам Linux или каталогу можно по команде:
ls -l /etc
Результат выполнения команды выглядит следующим образом:
drwxr-xr-x 3 root root 4096 Nov 2 11:14 postfix drwxr-xr-x 4 root root 4096 Aug 1 22:37 ppp drwxr-xr-x 4 root root 4096 Aug 1 22:37 ppp -rw-r--r-- 1 root root 608 Nov 3 13:02 profile drwxr-xr-x 2 root root 4096 Oct 26 09:20 profile.d -rw-r--r-- 1 root root 2932 Oct 25 2014 protocols
Параметры результата обозначают следующие параметры:
drwxr-xr-x 4 testk testk 4096 Oct 28 11:53 testk формат владелец группа размер_файла дата_последнего_изменения имя_файла
- Первый символ обозначает тип объекта: «—» означает обычный файл, «d» означает папку.
- Три следующих символа rwx означают права доступа владельца файла.
- Далее следует триада rwx означают права доступа группы.
- Последние 3 символа rwx означают права доступа остальных.
Символ r — это сокращение от слова Read (Чтение).
Для обычного файла это разрешение на чтение, позволяет пользователю просматривать содержимое файла.
Для каталога разрешение на чтение позволяет пользователю просматривать имена файлов в каталоге.
Символ w — это сокращение от слова Write (Запись)/
Для файла это разрешение на запись, позволяет пользователю изменять и удалять файл.
Для каталога разрешение на запись позволяет пользователю удалить каталог, изменять его содержимое (создавать, удалять и переименовывать файлы в нем), а также изменять содержимое файлов, которые пользователь может прочитать.
Символ x — это сокращение от слова Execute (Выполнять)
Для файла это разрешение на исполнение, позволяет пользователю выполнять файл (пользователь также должен иметь разрешение на чтение). Таким образом, права на выполнение должны быть установлены для исполняемых программ и скриптов до того, как пользователь запустит их.
Для каталога разрешение на выполнение позволяет пользователю получить доступ к метаданным о файлах в каталоге (информация, которая может быть получена в результате выполнения команды ls -l).
Примеры форматов
- -rw——-: Файл, который доступен только его владельцем.
- -rwxr-хт-х: Файл, который является исполняемым любым пользователем в системе.
- -rw-rw-rw-: Файл, который открыт для модификации каждого пользователя в системе.
- drwxr-хт-х: каталог, что каждый пользователь в системе может читать и доступ.
- drwxrwx —: Каталог, который является изменяемым (включая его содержание) его владельцем и группой.
- drwxr-х —: Каталог, который доступен по своей группе.
Права доступа к папке Linux
- разрешение на чтение папки дает право на просмотр списка имен файлов (не более);
- получение разрешения записи для каталога дает право создавать и удалять файлы в нем, в том числе принадлежащие другим пользователям;
- для получения подробной информации о файлах, находящихся в каталоге нужно иметь доступ на исполнение папки.
Изменение прав доступа
Права пользователя могут быть изменены только владельцем файла или пользователем с правами администратора системы. Для изменения прав используются команды chown, chgrp и chmod.
Рассмотрим подробно аргументы команды chmod:
chmod [ u | g | o | a ] [+ | — | = ] [r | w | x ] name1 [name2 . ]
Выделяют 3 группы, которые могут иметь права доступа к файлам Linux:
owner (u) – владелец файла;
group (g) – группа владельца файла;
others (o) – все остальные;
all (a ) – все вышеперечисленные группы вместе.
и 3 вида прав доступа для каждой группы:
право на чтение ( r);
право на запись (w);
право на исполнение (x).
а также 3 вида операций:
добавить (+);
убрать (-);
присвоить (=).
С помощью команды chmod также происходит управление битами, которые позволяют производить тонкое изменение прав доступа и запускать файл на выполнение с правами владельца или группы (биты SGID и SUID).
Изменять права доступа к файлу может его владелец или суперпользователь (root).
Примеры изменения прав доступа Linux
Команда, добавляющая право записи для группы владельца файла выглядит так:
chmod g+w file
Для добавления права доступа к файлам Linux для совершения записи для владельца и группы владельца:
chmod ug+w file
Дает право чтения файла всем пользователям, кроме владельца:
chmod go=r file
Лишает пользователей не находящихся в группе владельца права исполнения файла:
chmod o-x file
- chmod rw-r—r— или chmod 644 – команда разрешает владельцу чтение и запись файла, а пользователям из группы владельца и всем остальным, только чтение.
- chmod rwxr-xr-x или chmod 755 – команда дает владельцу выполнять любые операции с файлом, а пользователям из группы владельца и всем остальным разрешено чтение и исполнение.
- chmod rwxrxxrxx или chmod 777 – у всех пользователей есть все права.
- chmod r-sr-xr-xfail.pl или chmod 4555 для запуска с правами владельца, где «4» — обозначение бита SUID.
- chmod r-xr-sr-xfail.pl или chmod 2755 для запуска с правами группы, где «2» — обозначение бита SGID.