Вопрос или проблема
Это учебная задача в курсе Linux:
Команда ls -la /
дает следующий результат:
total 72
drwxr-xr-x 19 root root 4096 Apr 15 23:39 .
drwxr-xr-x 19 root root 4096 Apr 15 23:39 ..
lrwxrwxrwx 1 root root 7 Jan 28 22:23 bin -> usr/bin
drwxr-xr-x 4 root root 4096 Jan 28 22:30 boot
drwxr-xr-x 18 root root 3320 Apr 15 23:24 dev
drwxr-xr-x 73 root root 4096 Apr 15 23:24 etc
drwxr-xr-x 4 root root 4096 Feb 5 20:55 home
lrwxrwxrwx 1 root root 7 Jan 28 22:23 lib -> usr/lib
drwx------ 2 root root 16384 Jan 28 22:23 lost+found
drwxr-xr-x 3 root root 4096 Jan 28 22:23 media
drwxr-xr-x 2 root root 4096 Jan 28 22:23 mnt
drwxr-xr-x 2 root root 4096 Jan 28 22:23 opt
dr-xr-xr-x 133 root root 0 Apr 15 23:24 proc
drwx------ 5 root root 4096 Apr 15 23:47 root
drwxr-xr-x 17 root root 520 Apr 15 23:25 run
lrwxrwxrwx 1 root root 8 Jan 28 22:23 sbin -> usr/sbin
drwxrwxrwx 3 root root 4096 Apr 15 23:40 something
drwxr-xr-x 2 root root 4096 Jan 28 22:23 srv
dr-xr-xr-x 13 root root 0 Apr 15 23:24 sys
drwxrwxrwt 8 root root 4096 Apr 15 23:47 tmp
drwxr-xr-x 11 root root 4096 Jan 28 22:23 usr
drwxr-xr-x 11 root root 4096 Jan 28 22:23 var
Команда sudo ls -lR /something
выдает следующий результат:
/something:
total 4
drw-r-xr-x 3 george george 4096 Apr 16 14:24 one
/something/one:
total 4
drwxr-xr-x 2 george george 4096 Apr 15 23:47 two
/something/one/two:
total 4
-rwxrwxrwx 1 george george 7 Apr 15 23:47 somefile
Мы работаем под пользователем george
, т.е. команда whoami
дает нам george
. Команда groups george
дает нам результат george : george users
.
Какой результат мы получим для команды cat /something/one/two/somefile
и почему?
Моя попытка решить задачу:
1. Посмотрим, какие права доступа у нас есть к somefile:
Файл somefile
имеет права -rwxrwxrwx
, следовательно, пользователи пользователь, группа и другие имеют все права на чтение, запись и выполнение этого файла. Следовательно, пользователь george может читать этот файл.
2. Давайте убедимся, что somefile существует:
Запуск команды sudo ls -lR /something
отображает список всех файлов и подкаталогов в директории /something
, включая информацию о разрешениях и размере файла, с привилегиями суперпользователя. Файл находится в директории /something/one/two/somefile
.
3. Давайте проверим права доступа к директории /something/one/two/somefile :
Директория one
имеет права доступа drw-r-xr-x
– пользователь george имеет разрешение на вход в эту директорию и чтение содержимого;
Директория two
имеет права доступа drwxr-xr-x
– пользователь george имеет разрешение на вход в эту директорию и чтение содержимого;
Выполнив команду cat /something/one/two/somefile
, мы сможем просмотреть содержимое somefile
.
Команда ls -l
показывает, что “`somefile“ имеет размер 7 байт. Если файл содержит текст или символы, они будут отображены в консоли.
Мой наставник говорит, что эти гипотезы нужно проверить.
Как мне протестировать эту задачу?
Ответ или решение
Для лучшего понимания прав доступа и работы с ними в Linux, в данном случае рассматриваем команду cat /something/one/two/somefile
, крайне важно проанализировать представленные данные о правах доступа к файлам и директориям.
1. Права доступа к файлу somefile
Файл somefile
имеет права доступа -rwxrwxrwx
. Это означает следующее:
- Символ
-
указывает, что это файл, а не директория. - Первая группа символов
rwx
обозначает права пользователя (владельца файла) – в данном случае, пользовательgeorge
имеет право на чтение, запись и выполнение. - Вторая группа символов
rwx
отражает права группы, к которой принадлежит файл. Поскольку файл также принадлежит пользователюgeorge
, данный пользователь имеет те же права. - Третья группа символов
rwx
указывает на права для всех остальных пользователей. Это означает, что любой пользователь системы также может читать, записывать и выполнять этот файл.
Таким образом, пользователь george
имеет право на чтение файла somefile
.
2. Права доступа к директориям
Теперь важно рассмотреть, какие права доступа имеют директории, в которых находится файл. Это необходимо, поскольку доступ к файлам в Linux также зависит от прав доступа к директориям.
Директория /something/one
- Права доступа:
drw-r-xr-x
- Это означает, что пользователь
george
может:r
: читать содержимое директории (ls
)w
: записывать в директорию (создавать или удалять файлы)x
: входить в директорию (использоватьcd
)
Директория /something/one/two
- Права доступа:
drwxr-xr-x
- Здесь также:
r
: право читатьw
: право записыватьx
: право входить в директорию
Таким образом, пользователь george
имеет доступ к обеим директориям, что позволяет ему перемещаться в них и получать доступ к файлу somefile
.
3. Проверка наличия и чтения файла
Как было описано, sudo ls -lR /something
подтвердило наличие файла somefile
, так что мы можем быть уверены, что файл существует.
Итог
Поскольку у пользователя george
есть нужные права как на файл, так и на родительские директории, он в состоянии выполнить команду cat /something/one/two/somefile
. Эта команда выведет содержимое файла в терминал, и, если файл содержит текстовые данные, они будут успешно отображены.
Тестирование гипотез
Чтобы проверить данную гипотезу, можно выполнить команду cat
в терминале, находясь под пользователем george
. Если команда выполнится успешно и выведет содержимое файла, это будет подтверждением правильности анализа прав доступа. В противном случае, если будет ошибка прав доступа, необходимо будет переосмыслить доступ к директориям или правам файла.
Заключение
Правила работы с правами доступа и их понимание играют важную роль в безопасном администрировании систем Linux. В нашем случае пользователь george
будет в состоянии без проблем просмотреть содержимое somefile
, благодаря правильно установленным правам и доступу к директориям.