Когда я использую sudo для выполнения некоторых действий с файлами, эти файлы меняют владельца. Как я могу использовать команды с sudo, не меняя владельца файлов?
Файл примера archivos35.sh из apache, но я использую sed (с usr admin sudo)
$ ls -l
-rwxr-xrw-. 1 apache apache 181 Aug 5 11:56 archivos35.sh
Пользователь admin
с sudo ---
sudo sed -i s/old/new/g archivos35.sh
Но выполнение этой команды с помощью sudo меняет владельца файла
$ ls -l
-rwxr-xrw-. 1 admin apache 181 Aug 5 11:56 archivos35.sh
Как можно избежать использования команды с sudo для смены владельца файла? Я просто хочу внести изменения в файл без изменения его владельца.
Ответы:
Если вам нужно использовать
sudo
для изменения файла, то используйте его, чтобы перейти к нужному пользователю. Вам не нужно переключаться на root, это просто по умолчанию. Итак, в вашем случае вы хотели бы сделать:Это запустит
sed
команду как пользовательapache
.источник
Вы на самом деле не меняете владельца файла, скорее вы удаляете старый файл и создаете новый. Когда вы делаете это, создается новый файл, принадлежащий uid создателя. Чтобы избежать этого, вы должны изменить файл на месте. Отредактируйте его, используя текстовый редактор, который сохраняет, перезаписывая исходный файл на месте. Или выполните команды sed с выводом во временный файл, а затем скопируйте временный файл поверх исходного файла.
источник
-i
вариант ака--in-place
будет на самом деле изменить на месте ...ed
илиex
илиvi
/vim
.