Noipをインストールし、設定ファイルを作成するコマンドを実行しました
/usr/local/bin/noip2 -C
そして実行コマンドを実行しました
/usr/local/bin/noip2
そして戻ってきた
Can't locate configuration file /usr/local/etc/no-ip2.conf. (Try -c). Ending!
ファイルの場所を確認しましたが、確かにそこにありました。ファイルが見つからない理由をご存知ですか?
straceの出力:
execve("/usr/local/bin/noip2", ["/usr/local/bin/noip2"], [/* 15 vars */]) = 0
brk(0) = 0x1375000
uname({sys="Linux", node="raspberrypi", ...}) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f33000
access("/etc/ld.so.preload", R_OK) = 0
open("/etc/ld.so.preload", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=44, ...}) = 0
mmap2(NULL, 44, PROT_READ|PROT_WRITE, MAP_PRIVATE, 3, 0) = 0xb6f32000
close(3) = 0
open("/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\270\4\0\0004\0\0\0"..., 512) = 512
lseek(3, 7276, SEEK_SET) = 7276
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1080) = 1080
lseek(3, 7001, SEEK_SET) = 7001
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 47) = 47
fstat64(3, {st_mode=S_IFREG|0755, st_size=10170, ...}) = 0
mmap2(NULL, 39740, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6f07000
mprotect(0xb6f09000, 28672, PROT_NONE) = 0
mmap2(0xb6f10000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb6f10000
close(3) = 0
munmap(0xb6f32000, 44) = 0
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=44950, ...}) = 0
mmap2(NULL, 44950, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb6efc000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/arm-linux-gnueabihf/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\214y\1\0004\0\0\0"..., 512) = 512
lseek(3, 1198880, SEEK_SET) = 1198880
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 1360) = 1360
lseek(3, 1198444, SEEK_SET) = 1198444
read(3, "A.\0\0\0aeabi\0\1$\0\0\0\0056\0\6\6\10\1\t\1\n\2\22\4\24\1\25"..., 47) = 47
fstat64(3, {st_mode=S_IFREG|0755, st_size=1200240, ...}) = 0
mmap2(NULL, 1242408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb6dcc000
mprotect(0xb6eef000, 28672, PROT_NONE) = 0
mmap2(0xb6ef6000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x122) = 0xb6ef6000
mmap2(0xb6ef9000, 9512, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6ef9000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f32000
set_tls(0xb6f324c0, 0xb6f32b98, 0xb6f37048, 0xb6f324c0, 0xb6f37048) = 0
mprotect(0xb6ef6000, 8192, PROT_READ) = 0
mprotect(0xb6f36000, 4096, PROT_READ) = 0
munmap(0xb6efc000, 44950) = 0
rt_sigaction(SIGHUP, {SIG_IGN, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0
rt_sigaction(SIGPIPE, {SIG_IGN, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0
rt_sigaction(SIGUSR1, {SIG_IGN, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0
rt_sigaction(SIGUSR2, {SIG_IGN, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0
rt_sigaction(SIGALRM, {0xa568, [], 0x4000000 /* SA_??? */}, NULL, 8) = 0
getcwd("/home/pi", 4096) = 9
lstat64("/home/pi/noip2", 0xbef6f670) = -1 ENOENT (No such file or directory)
open("/usr/local/etc/no-ip2.conf", O_RDWR) = -1 EACCES (Permission denied)
open("/usr/local/etc/no-ip2.conf", O_RDONLY) = -1 EACCES (Permission denied)
write(2, "Can't locate configuration file "..., 79Can't locate configuration file /usr/local/etc/no-ip2.conf. (Try -c). Ending!
) = 79
exit_group(-1) = ?
ありがとう
答え1
open("/usr/local/etc/no-ip2.conf", O_RDWR) = -1 EACCES (Permission denied)
open("/usr/local/etc/no-ip2.conf", O_RDONLY) = -1 EACCES (Permission denied)
noip2
設定ファイルを読み取りと書き込み用に開こうとしますが、失敗すると読み取りのみを再度試みますが、これも失敗します。失敗の原因は権限不足です。エラー メッセージは役に立たないほど一般的なものです。
設定ファイルとそこに至るディレクトリの権限を確認します (権限は間違いなく問題ありません。そうでない/
と/usr
、システムがもっと目に見える形で壊れてしまいます)。
ls -ld /usr/local /usr/local/etc /usr/local/etc/no-ip2.conf
x
ディレクトリには、コマンドを実行するユーザー(おそらくすべてのユーザー)のパーミッションビットが少なくとも必要です。ファイル自体にも、少なくともr
パーミッションビットが必要です。ディレクトリにはパーミッションr
ビットが必要です(厳密に言えば、必須ではありませんが、通常のことです。サブディレクトリにアクセスするときに、親ディレクトリの権限は重要ですか?詳細については)。
chmod a+rX /usr/local/etc /usr/local/etc/no-ip2.conf
設定ファイルが機密である必要がある場合 (たとえば、パスワードが含まれている場合) を除いて、おそらく が必要になります。
エントリの 1 つに/ /権限ビット+
の後がある場合、SELinux などのセキュリティ フレームワークによって追加の制限が課されている可能性があります。r
w
x
答え2
私もこの問題に遭遇しました。権限の問題だったと思います。root として実行するとうまくいきました:
$ sudo noip2
最初に実行中のインスタンスを強制終了する必要があるかもしれません。
$ ps -A |grep noip
1577 ? 00:00:00 noip2
$ sudo kill 1577
答え3
これは権限の問題です。次のように修正しました:
chown noip.wheel /usr/local/etc/no-ip2.conf
答え4
私のはROファイルシステムで、strace show
, O_RDWR) = -1 EROFS (Read-only file system)
/dev/shm にコピーすると役立ちます :D