Зачем менять владельца символической ссылки в Linux?


12

В Linux можно сменить владельца или владельца группы символической ссылки (символическая ссылка). Мне было интересно, почему кто-то хотел бы сделать это, так как разрешения символической ссылки не используются при доступе к файлу через него.

Я могу только вообразить один случай использования, где это может быть полезно: позволить пользователю удалить символическую ссылку в каталоге с закрепленным битом.

Знаете ли вы другие случаи, когда было бы полезно изменить владельца или владельца группы символической ссылки?

Ответы:


6

Предположим, что root работает в каталоге, в который может писать Ева. В fooэтом каталоге есть файл, который нужно изменить, чтобы он принадлежал Еве. Итак, корневые типы chown eve foo. Но незадолго до того, как root нажал Enter, Ева бежит ln -sf /etc/passwd foo. Теперь /etc/passwdпринадлежит Еве! Если root может работать, chown -h eve fooчтобы удостовериться, что он не следует по символическим ссылкам, то наибольший вред, который может быть причинен, состоит в том, что какой-то другой файл в том же каталоге был изменен на принадлежащий Eve.

lchownтакже удобно, когда вы меняете владельца дерева каталогов. Вам не нужно беспокоиться о случайном воздействии на файл вне дерева, потому что вы вызвали chownсимволическую ссылку.


«Если root может запустить команду chown -h bob foo, чтобы не следовать символическим ссылкам, то наибольший вред, который может быть причинен, заключается в том, что какой-то другой файл в том же каталоге был изменен на принадлежащий Еве. Я предполагаю, что ты имеешь в виду "chown -h eve foo". Другой файл, который может быть изменен, это символическая ссылка, я прав?
user368507

@ user5528 Другой файл может не быть символической ссылкой: Eve все еще может работать mv myfile foo, и root в конечном итоге сменит владельца myfile. Но myfileэто должен быть файл, который Ева может создать или переместить в этот каталог, это не может быть файл в системе.
Жиль "ТАК ... перестать быть злым"

2
Несмотря на то, что этот вопрос интересен и явно одобрен автором, я не вижу, как этот ответ отвечает на этот вопрос. Кажется, более объяснимым, почему можно использовать chown -hв качестве меры предосторожности при смене владельца файла, который не должен быть символической ссылкой, но все же может быть (крайний случай, IMO). Это не объясняет, почему кто-то может захотеть изменить владельца файла, который на самом деле предназначен для символической ссылки, что и было задано в вопросе.
Иван Икс

Зачем chownменять владельца «файла вне дерева» - это все, что вы меняете, это владелец каталога?
Мелаб

@Melab Когда вы меняете владельца дерева каталогов , т.е. отменяете утилиту chown -R, которая вызывает (l)chownсистемный вызов для каждой записи каталога. Если запись в каталоге является символической ссылкой, вы не должны вызывать chownсистемный вызов, потому что это повлияет на цель ссылки, которая может находиться за пределами дерева.
Жиль "ТАК - перестань быть злым"

8

Apache можно настроить так, чтобы он следовал по символическим ссылкам, только если владелец ссылки совпадает с владельцем пункта назначения. Это может помешать пользователям создавать ссылки для веб-доступа к файлам, которые им не принадлежат (например, / etc / passwd).

... так скажем, вы, как пользователь root, хотели , чтобы apache перешел по ссылке для отображения определенного файла журнала, который принадлежал xymon или что-то в этом роде, но вы не хотели ослаблять безопасность apache, позволяя ему следовать символическим ссылкам независимо от владельца , Тогда вы можете сделать xymon владельцем символической ссылки.


1
Хорошо. Я знаю, что это не связано, но какой смысл этого поведения в apache? Я имею в виду, если пользователь может прочитать файл, зачем читать его из веб-доступа? thx
user368507

Ну, это не просто локальный пользователь, читающий файл; если Apache может прочитать это, то потенциально каждый может прочитать это. И если какая-то уязвимость apache позволила создать символическую ссылку на /etc/passwd, то злоумышленник мог иметь доступ на чтение к этому файлу без какого-либо другого локального доступа - но был бы заблокирован символической ссылкой, принадлежащей apache.
Ларс Рорбах

4

Первый ответ, кажется, не затрагивает вопрос, а второй относится только к Apache.

Одна вещь, о которой я могу думать в целом о linux, - это то, что обычный пользователь может сделать жесткую ссылку на символическую ссылку, только если пользователь является владельцем символической ссылки. Почему кто-то захочет сделать такую ​​ссылку, я не знаю.

Другое дело, что обычный пользователь может изменить владение группы файлом, только если пользователь владеет файлом (и также является членом группы, в которую добавляется файл). Это поднимает вопрос о том, кому принадлежит группа. символическая ссылка делает. В организации это может быть полезно в качестве тега, чтобы указать, какой команде понадобится ссылка.

Кроме того, по крайней мере в Ubuntu любой может обновить временную метку символической ссылки. Тем не менее, могут быть некоторые системы, которые позволяют только владельцу. Чем хороша временная метка для символической ссылки, я не уверен, но она может дать некоторую полезную информацию о том, как часто она используется.

Редактировать: я только что понял еще одну причину, почему право собственности было бы важно. Ссылка может быть внутри липкой директории, где только владелец файла может удалить или переименовать его.


0

У меня есть программа, которая добавляет в файл журнала. Эти файлы журнала создаются ежемесячно, каждый с другим именем. Вместо того, чтобы программа определяла точное имя файла, я использую «общее» имя файла (скажем, data.log), которое является символической ссылкой, указывающей на текущий файл за этот месяц. Это автоматизировано на работе cron.

Теперь, когда создается новый ежемесячный файл, ему необходимо указать символическую ссылку на новый файл. Если существует конфликт владения / группы, программное обеспечение не может изменить символическую ссылку. Таким образом, вам нужно иметь права владельца / записи группы, чтобы изменить символическую ссылку.


0

Если вы хотите, чтобы на начальном экране была ссылка на файл, символическая ссылка должна быть в

"/ Главная / имя пользователя / Desktop"

каталог.

Кроме того, сама символическая ссылка должна обладать правами root: root (0: 0), в противном случае ссылка не работает.

(Ubuntu / Debian и т. Д.)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.