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

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
жучара
Сообщения: 1091
ОС: астралинукс

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

Сообщение жучара »

Друзья! В папке /tmp есть две символические ссылки, ссылающиеся на один и тот же файл

Shell

user@debian:~$ ls -l /tmp | grep ^l
lrwxrwxrwx 1 foo foo 9 Дек 29 13:14 foo_ln -> /tmp/file
lrwxrwxrwx 1 root root 9 Дек 29 13:15 root_ln -> /tmp/file
user@debian:~$
Сам файл принадлежит текущему пользователю user

Shell

user@debian:~$ ls -l /tmp/file
-rw-r--r-- 1 user user 9 Дек 29 13:13 /tmp/file
user@debian:~$
Попробуем прочитать его опосредованно, через ссылку /tmp/foo_ln

Shell

user@debian:~$ cat /tmp/foo_ln
cat: /tmp/foo_ln: Отказано в доступе
user@debian:~$
Вот, собсно и весь вопрос. Почему отказано в доступе. Все права на чтение везде где можно, соблюдены. Ман тоже ничего не даёт.

Shell

man 7 symlink
...
Symbolic link ownership, permissions, and timestamps
The owner and group of an existing symbolic link can be changed using
lchown(2). The only time that the ownership of a symbolic link matters
is when the link is being removed or renamed in a directory that has
the sticky bit set (see stat(2)).

The last access and last modification timestamps of a symbolic link can
be changed using utimensat(2) or lutimes(3).

On Linux, the permissions of a symbolic link are not used in any opera‐
tions; the permissions are always 0777 (read, write, and execute for
all user categories), and can't be changed.
...
Вывод делается такой, что вообще все эти права для симолических ссылок не нужны. Нужны-не нужны, а не работает.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Путаницу вносит обращение к /tmp/file, через ссылку /tmp/root_ln

Shell

user@debian:~$ cat /tmp/root_ln
cafebebe
user@debian:~$
То есть. Если ссылка принадлежит какому-то foo, про которого знать никто не знает и который просто ЕСТЬ, то права доступа нарушены. А если целому root-у, то пожалуйста- заходи кто хочешь, бери, что хочешь. Вообще я сам не могу какое-нибудь объяснение придумать, поэтому обратился к вам. Спасибо, кто откликнется. Debian 7, 32
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3728
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

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

Сообщение Hephaestus »

жучара
А что с правами на каталог /tmp ?
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1091
ОС: астралинукс

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

Сообщение жучара »

Hephaestus писал:
30.12.2019 12:36
жучара
А что с правами на каталог /tmp ?
не трогал

Shell

user@debian:~$ ls -ld /tmp
drwxrwxrwt 10 root root 4096 Дек 30 13:22 /tmp
user@debian:~$
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3728
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

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

Сообщение Hephaestus »

жучара писал(а):
30.12.2019 12:38
не трогал
Дело не в том, что не трогал.
Дело в том, что там есть.
Попробуйте перейти в каталог /tmp и оттуда прочитать разные файлы по симлинкам.
Добавлено (12:57):
У пользователя foo есть доступ к исходному файлу?
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1091
ОС: астралинукс

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

Сообщение жучара »

Hephaestus писал:
30.12.2019 12:40
Попробуйте перейти в каталог /tmp и оттуда прочитать разные файлы по симлинкам.
то же самое:

Shell

user@debian:/tmp$
user@debian:/tmp$ cat /tmp/foo_ln
cat: /tmp/foo_ln: Отказано в доступе
user@debian:/tmp$
user@debian:/tmp$ cat /tmp/root_ln
cafebebe
user@debian:/tmp$
+++++++++++++++++++++++++++++++++++++++++++++++++
Hephaestus писал:
30.12.2019 12:40
У пользователя foo есть доступ к исходному файлу?
да, есть

Shell

user@debian:~$ ls -l /tmp/file
-rw-r--r-- 1 user user 9 Дек 29 13:13 /tmp/file
user@debian:~$

Shell

user@debian:~$
user@debian:~$ su foo
Пароль:
foo@debian:/home/user$ cat /tmp/file
cafebebe
foo@debian:/home/user$
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3728
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

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

Сообщение Hephaestus »

жучара писал(а):
30.12.2019 13:58
то же самое:
жучара писал(а):
30.12.2019 13:58
cat /tmp/foo_ln
Не так.
Я же не случайно предложил перейти в каталог /tmp.
Вот так:
cat foo_ln
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1091
ОС: астралинукс

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

Сообщение жучара »

У пользователя foo будучи в /temp доступ к /tmp/file посредством символической ссылки /tmp/foo_ln есть:

Shell

foo@debian:/tmp$ cat foo_ln
cafebebe
foo@debian:/tmp$
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3728
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

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

Сообщение Hephaestus »

жучара
Вообще-то это надо было сделать от пользователя user.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5405
ОС: Gentoo

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

Сообщение /dev/random »

Опция sysctl fs.protected_symlinks:
https://www.kernel.org/doc/Documentation/admin-guide/sysctl/fs.rst писал(а):protected_symlinks
------------------

A long-standing class of security issues is the symlink-based
time-of-check-time-of-use race, most commonly seen in world-writable
directories like /tmp. The common method of exploitation of this flaw
is to cross privilege boundaries when following a given symlink (i.e. a
root process follows a symlink belonging to another user). For a likely
incomplete list of hundreds of examples across the years, please see:
http://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=/tmp

When set to "0", symlink following behavior is unrestricted.

When set to "1" symlinks are permitted to be followed only when outside
a sticky world-writable directory, or when the uid of the symlink and
follower match, or when the directory owner matches the symlink's owner.

This protection is based on the restrictions in Openwall and grsecurity.
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1091
ОС: астралинукс

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

Сообщение жучара »

Hephaestus писал:
30.12.2019 14:15
жучара
Вообще-то это надо было сделать от пользователя user.
У пользователя user будучи в /temp доступа к /tmp/file посредством символической ссылки /tmp/foo_ln нет:

Shell

user@debian:/tmp$ cat foo_ln
cat: foo_ln: Отказано в доступе
user@debian:/tmp$
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1091
ОС: астралинукс

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

Сообщение жучара »

/dev/random, я понял, я так полагаю, это сделано из-за безопасности? Хот бы они пример какой-нибудь привели, что ли, чем плохо, когда

Shell

user@astra:~$ sudo cat /proc/sys/fs/protected_symlinks
0
user@astra:~$
причём, что характерно, они привязываются к биту t. То есть. Если есть директория, файлы из которой могут удалять только её владельцы, то на действие символических ссылок, которые в этой директории присутствуют, наложены ограничения. Так, а если мы бит t снимаем, снимаются и ограничения на действия символических ссылок.

Во-первых. мне непонятно, зачем они привязываются к t, а во вторых, простое соображение: Если на что-то накладывается ограничение, в чём-то должно быть послабление (это необязательно, но одно ограничение не должно паровозом влечь за собой другое! ). Тут же два ограничения идут парой и два послабления тоже.

Ограничили пользователей в удалении файлов- автоматом ограничилось действие символических ссылок.
Убрали ограничение пользователей в удалении файлов- автоматом убралось ограничение на действие символических ссылок.


Не знаю, может, оно так надо. Не хватает у меня ума сообразить, как одно коррелирует с другим.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21257
Статус: nulla salus bello
ОС: Debian GNU/Linux

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

Сообщение Bizdelnick »

жучара писал(а):
30.12.2019 21:31
Хот бы они пример какой-нибудь привели
Там ссылка на кучу примеров. Можете также погуглить про TOCTOU.
жучара писал(а):
30.12.2019 21:31
Во-первых. мне непонятно, зачем они привязываются к t
Установка этого бита, как правило, означает, что каталог предназначен для совместного использования, но пользователи, имеющие к нему доступ на запись, не доверяют друг другу.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1091
ОС: астралинукс

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

Сообщение жучара »

Bizdelnick писал:
30.12.2019 21:44
жучара писал(а):
30.12.2019 21:31
Во-первых. мне непонятно, зачем они привязываются к t
Установка этого бита, как правило, означает, что каталог предназначен для совместного использования, но пользователи, имеющие к нему доступ на запись, не доверяют друг другу.
это негласное соглашение, я понять не могу?
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21257
Статус: nulla salus bello
ОС: Debian GNU/Linux

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

Сообщение Bizdelnick »

жучара писал(а):
30.12.2019 22:03
это негласное соглашение
Нет, это не соглашение. Просто исходя именно из этого соображения выставляют этот бит. По этой причине и решили ориентироваться на него для предупреждения эксплуатации уязвимостей данного класса.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1091
ОС: астралинукс

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

Сообщение жучара »

Bizdelnick, тогда примеры смотреть я не буду. Так-то примерно понятно. Раз они друг другу не доверяют, то не должно так быть, чтобы A делал ссылку, а B ей пользовался. В этом каталоге.
Хотя в другом каталоге- бога ради. Ну ладно. Наверное, так и надо.
Я просто читаю маны.
Спасибо сказали: