루트 자격 증명을 사용하여 파일에 쓸 수 없습니다.

루트 자격 증명을 사용하여 파일에 쓸 수 없습니다.

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

이 디렉터리에 파일을 쓸 수 있는 권한이 없는 것 같습니다. 왜 루트로 실행 중인지 이해할 수 없으며 이러한 파일에 대한 권한은 다음과 같습니다.

-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에서 비롯됩니다.

세 줄은 모두 같은 줄에 있어야 합니다. 또는 단일 명령이 아닌 쉘 스크립트를 작성하므로 이를 작성하는 더 적절한 방법은 다음과 같습니다.

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

줄 끝에 있는 백슬래시를 참고하세요. 이는 다음 줄이 현재 줄의 연속임을 의미합니다. 두 번째 루프에도 동일하게 적용됩니다.

관련 정보