Когда я вызываю cp -a 1 2
от пользователя без полномочий root, владение сохраняется, несмотря на то, что файл 1
принадлежит другому пользователю. Насколько я понимаю, это не должно быть возможно.
Что здесь происходит?
Убедитесь, что в двоичном cp
не установлен бит setuid ...
$ ls -l /bin/cp /tmp/badcp1
-rwxr-xr-x 1 root root 103K Jul 1 11:59 /bin/cp
-rwsr-xr-x 1 root root 103K Jul 1 11:59 /tmp/badcp1
^
... и что ему не назначены специальные возможности:
$ getcap /tmp/badcp2
/tmp/badcp2 = cap_chown,cap_fowner+eip
Если и то, и другое верно, этот вопрос - хорошее начало.