Можно ли заменить строку в исполняемом файле, принадлежащую другому пользователю, не затрагивая права доступа к файлу? - PullRequest
0 голосов
/ 04 ноября 2018

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

1 Ответ

0 голосов
/ 06 ноября 2018

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

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, файл не может быть изменен кем-либо еще при сохранении этого разрешения.

...