우분투 스크립트 해당 파일 없음 /etc/init.d/ 스크립트

우분투 스크립트 해당 파일 없음 /etc/init.d/ 스크립트

시작할 때 이 스크립트를 실행하려고 하는데 계속해서 오류가 발생합니다./etc/init.d/put_ubuntu_users: 14: /etc/init.d/put_ubuntu_users: cannot open ~/data.txt: No such file

이것은 내 스크립트입니다

#!/bin/sh

### BEGIN INIT INFO
# Provides:          Updates Password at Login
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: script for updating password
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO

                while IFS=: read f1 f2
                        do
                                user=$(sudo grep "$f1" /etc/shadow | cut -d':' -f 1);
                                pwd=$(sudo grep "$f1" /etc/shadow | cut -d':' -f 2);

                                        if [ -n "$user" -a "$f2" != "$pwd" ]; then
                                                #search for password, and repalce it with new one
                                                sudo sed -i 's@'$pwd'@'$f2'@' /etc/shadow
                                        fi

                done < ~/data.txt

나는 이 명령 세트를 실행했습니다

sudo chmod 755 put_ubuntu_users
sudo update-rc.d put_ubuntu_users defaults
sudo service put_ubuntu_users start

그런데 이 스크립트는 수동으로 입력하여 실행하면 정상적으로 작동합니다../put_ubuntu_users

내가 잘못하고 있는 건지 말해주세요

답변1

오류는 ~/data.txt 파일을 찾을 수 없다는 메시지입니다. 이유는 간단합니다. /etc/init.d 스크립트는 루트로 실행되며 루트의 홈인 /root에 data.txt 파일이 없다고 확신합니다. absolute경로가 아닌 경로를 사용하여 이 문제를 해결할 수 있습니다 relative.

반면에 명령문 이후에 리디렉션이 수행하는 작업을 이해하기가 어렵습니다 done. 정확히 무엇을 하려는 건가요?

답변2

오류는 data.txt 파일(사용자 홈 디렉터리용)을 찾거나 액세스할 수 없다는 것입니다. 이 문제를 해결하는 가장 쉬운 방법은 스크립트의 마지막 줄을 편집하고 ~/data.txt를 /home/{username_here}/data.txt로 변경하는 것입니다.

답변3

서비스에는 홈 디렉터리가 없습니다. 따라서 ~/data.txt해당 맥락에서 생각하는 대로 수행되지 않습니다. 정적 파일 이름으로 참조하는 위치에 파일을 넣어야 합니다.

답변4

init 프로세스 사용자(정상)에 대해 설정된 홈 폴더가 없을 가능성이 있습니다.

스크립트 시작 부분에 를 추가하면 setuid myuser해당 사용자로 스크립트가 실행됩니다. 현재 init 사용자는 홈 폴더가 설정되어 있지 않습니다(추측, 그렇지 않으면 홈 폴더 위치에 쓸 것입니다). 놀라울 정도로 유용한위키피디아 페이지이것에 관해서.

관련 정보