无法使用 root 凭据写入文件

无法使用 root 凭据写入文件

我正在尝试启动一个小脚本来修复iceweasel图标中的错误。

这是脚本。您可以找到它作为解决方法在错误报告中

for n in 16 32 48; do inkscape -z -w $n -h $n -e 
/usr/share/iceweasel/browser/chrome/icons/default/default${n}.png 
/usr/share/icons/hicolor/scalable/apps/iceweasel.svg; done

for n in 16 32 48 64 128; do inkscape -z -w $n -h $n -e 
/usr/share/icons/hicolor/${n}x${n}/apps/iceweasel.png 
/usr/share/icons/hicolor/scalable/apps/iceweasel.svg; done

我创建了一个tempiceweasel.sh包含上面几行的文件。我给了它执行权限:

# chmod +x tempiceweasel.sh
# ls -la tempiceweasel.sh
-rwxr-xr-x 1 user user 349 mars   9 16:33 tempiceweasel.sh

当我启动脚本时出现权限错误:

# ./scripts/tempiceweasel.sh
Nothing to do!
./scripts/tempiceweasel.sh: ligne 3: /usr/share/iceweasel/browser/chrome/icons/default/default16.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 4: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 3: /usr/share/iceweasel/browser/chrome/icons/default/default32.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 4: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 3: /usr/share/iceweasel/browser/chrome/icons/default/default48.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 4: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/16x16/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/32x32/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/48x48/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/64x64/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée
Nothing to do!
./scripts/tempiceweasel.sh: ligne 7: /usr/share/icons/hicolor/128x128/apps/iceweasel.png: Permission non accordée
./scripts/tempiceweasel.sh: ligne 8: /usr/share/icons/hicolor/scalable/apps/iceweasel.svg: Permission non accordée

看来我没有权限在这些目录中写入文件。我不明白为什么;我以 root 身份运行,这些文件的权限如下:

-rw-r--r-- 1 root root   93 févr. 14 14:25 default16.png
-rw-r--r-- 1 root root  325 févr. 14 14:25 default32.png
-rw-r--r-- 1 root root 1845 févr. 14 14:25 default48.png

有什么想法为什么我无法写入这些文件吗?

答案1

您复制粘贴的命令应该是单行命令。相反,它们被分成三行。因此每个命令都与您执行的命令相同:

# for n in 16 32 48; do inkscape -z -w $n -h $n -e
# /usr/share/iceweasel/browser/chrome/icons/default/default${n}.png 
# /usr/share/icons/hicolor/scalable/apps/iceweasel.svg; done

所以基本上,在循环的每一步中,它都会尝试运行 inkscape,然后就是尝试将图像文件作为可执行文件运行,然后它尝试对 svg 文件执行相同的操作。当然,您收到有关权限的错误的原因是图像没有执行权限。 “无事可做”来自 inkscape,它缺少参数。

这三行应该都在同一条线上。或者,由于您正在编写 shell 脚本而不是单个命令,更合适的编写方法是:

for n in 16 32 48
do
    inkscape -z -w $n -h $n -e \
        /usr/share/iceweasel/browser/chrome/icons/default/default${n}.png \
        /usr/share/icons/hicolor/scalable/apps/iceweasel.svg
done

请注意行末尾的反斜杠 - 它们意味着下一行是当前行的延续。这同样适用于第二个循环。

相关内容