У меня есть простой исполняемый файл, принадлежащий другому пользователю. В какой-то момент у вас есть системная команда ("ls / path / file"), и /path/file имеет того же владельца, что и исполняемый файл, и может быть прочитан только им. Я попытался изменить команду ls на sed, чтобы я мог видеть содержимое файла, но это влияет на право собственности. Есть ли способ изменить строку в исполняемом файле и сохранить право собственности?





Причина смены владельца, скорее всего, заключается в том, что ваш редактор не изменяет файл. Вместо этого он создает новый файл (обязательно принадлежащий вам), который заменяет существующий.
GNU sed -i использует эту модель, поэтому редактирование файла приведет к смене владельца:
$ ls -l foo
-rwxrwxrwx 1 bob ourgroup 26 Nov 5 18:10 foo
$ sed -i 's/foo/bar/g' foo
(no output)
$ ls -l foo
-rwxrwxrwx 1 alice ourgroup 26 Nov 5 18:10 foo
Чтобы сохранить право собственности, просто используйте редактор, который будет перезаписывать, а не заменять. nano и vim - это интерактивные редакторы, которые делают это, а ed - это редакторы с поддержкой сценариев.
Обратите внимание, что если в файле установлен бит suid u + s, файл не может быть изменен кем-либо еще с сохранением этого разрешения.
Я думаю, что вас что-то смущает: право собственности будет изменено только тогда, когда ВЫ запускаете исполняемый файл, а не когда ОНИ запускают исполняемый файл. Кроме того, вы пометили свой вопрос как «повышенные привилегии», но не объяснили, откуда берутся повышенные привилегии, поэтому либо вы что-то упускаете в своем вопросе, либо ошибочно полагаете, что файл может быть только прочитал другой пользователь.