我正在创建一个debian包,我在其中编写了预安装和后安装脚本。在我的预安装脚本中,我使用";sudo";。但这些文件的实际所有者是其他一些自定义用户。因此,当我备份或恢复这些文件时,用户将更改为root用户。
如何定义我的自定义用户来复制或移动debian包预装脚本中的文件?
if [ -e /home/custom/file.txt]; then
sudo cp -v /home/custom/file.txt /home/custom/backup/file.txt
exit 1
fi
在pre-inst脚本中执行上述代码后,file.txt的所有者将更改为根
如果您是root
,则可以始终使用su
。
if [ -e /home/custom/file.txt ];: then
su custom -c 'cp -v /home/custom/file.txt /home/custom/backup/file.txt'
exit 1
fi
如果你有sudo
,那就更好了;但请记住,您的软件包必须依赖于它的安装和配置,才能在您的场景中正常工作。如果您的包由于其他原因还没有完成这些工作,那么只使用su
可能会更简单。但如果你这样做了,只需使用sudo -u custom cp
。。。
要复制具有特定所有权的文件,请参阅install
。
if [ -e /home/custom/file.txt ]; then
install -o custom -g customgroup -t /home/custom/backup -D
/home/custom/file.txt
exit 1
fi
请注意,-D
选项还可以减轻您确保目标目录存在的负担。
显然,将customgroup
更改为正确的组名,或者省略-g
选项。