показанный удаляет бит setuid: ошибка или функция?

Файл на самом деле имеет имя, но это сделано из непечатаемых символов.

Легкий метод должен полагаться на завершение оболочки: нажимайте Tab неоднократно, пока “странное” имя файла не будет вставлено. Необходимо было настроить оболочку для циклического повторения между возможными завершениями:

  • В ударе необходимо вызвать menu-complete, который не связывается по умолчанию, а не complete, который связывается с Вкладкой по умолчанию. С другой стороны, используйте Esc * для вставки завершений для всех файлов, и удалить тех Вы не хотите удалять из командной строки.
  • В zsh настройки по умолчанию прекрасны; Вы должны иметь setopt auto_menu или setopt menu_complete набор.

Если завершение не полезно в Вашей оболочке, можно звонить rm -i -- * и ответьте "нет" за исключением этого конкретного файла. Если имя файла не начинается с печатаемого символа, можно ограничить соответствия файлами, первый символ которых не находится в ряде печатаемых символов:

rm -i [!!-~]*
rm -i [![:print:]]*
rm -i -- [!a-z]

(Остерегайтесь, если Ваш шаблон может соответствовать названному файлу -f, который rm рассматривал бы как опция.)

Другой метод должен звонить ls -i найти inode файла (inode однозначно определяет файл в данной файловой системе), затем find -inum воздействовать на тот конкретный файл. Этот метод главным образом полезен, когда каталог содержит много файлов.

ls -i
# note the inode number 12345
find . -xdev -inum 12345 -delete

Если Ваш find не имеет a -delete опция, звонить rm:

find . -xdev -inum 12345 -exec rm -- {} \;

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

14
08.12.2018, 23:20
2 ответа

Не ошибка согласно показанной документации:

$ info coreutils 'chown invocation'

   The `chown' command sometimes clears the set-user-ID or set-group-ID
permission bits.  This behavior depends on the policy and functionality
of the underlying `chown' system call, which may make system-dependent
file mode modifications outside the control of the `chown' command.
For example, the `chown' command might not affect those bits when
invoked by a user with appropriate privileges, or when the bits signify
some function other than executable permission (e.g., mandatory
locking).  When in doubt, check the underlying system behavior.
17
27.01.2020, 19:50
  • 1
    Спасибо jlliagre. Я не знал info coreutils прежде. Я только прочитал страницу справочника и искал сеть. передача –  Germar 02.11.2012, 22:59

Это дизайном, и это - стандартное поведение. Заключение в кавычки стандарта POSIX:

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

(s setuid (или setgid в столбце группы), не липкий, между прочим.)

Это поведение следует за поведением базового системного вызова (за исключением того, что в некоторых системах, setxid биты только очищены для исполняемых файлов).

Причина удаления setuid укусила, то, что изменение владельца также изменяется, какой пользователь будет эффективным идентификатором пользователя процесса. В частности, в системах, где пользователь может отдать файл, cp /bin/sh foo; chmod u+s foo; chown joe foo создал бы setuid исполняемый файл, принадлежащий joe, гигантской дыре в системе безопасности.

12
27.01.2020, 19:50
  • 1
    Upvoting для придирания к мелочам! SUID/SGID не являются "липким" битом! –  Jim Dennis 13.07.2017, 22:29
  • 2
    Большая точка о последствиях безопасности сохранения SUID/SGID. Я был побеспокоен поведением, пока я не считал то предложение. Я добавил бы, однако, я никогда не видел показанный не очищать биты, работая как корень. Мне любопытно, что "подразумевали бы соответствующие полномочия". –  vastlysuperiorman 17.08.2017, 07:52
  • 3
    @vastlysuperiorman На классической платформе Unix, “соответствующие полномочия” означают идентификатор пользователя 0. Но POSIX позволяет системам определять свою собственную политику безопасности. Например, для многих операций на Linux, “соответствующие полномочия” реализованы как возможность (то, которые только базируются, добирается по умолчанию). В данном случае, действительно подавляет setxid биты на показанном независимо от полномочий, как большинство если не все варианты Unix. Но уровень POSIX в Windows мог бы работать по-другому. –  Gilles 'SO- stop being evil' 17.08.2017, 11:45

Теги

Похожие вопросы