2

Недавно я разработал проблему на некоторых встроенных устройствах Linux, где я больше не могу создавать файлы непосредственно в каталоге /etc /. Сначала я увидел проблему, когда dpkg не смог создать временный файл, а затем у «sed -i» возникла та же проблема. С тех пор я пробовал touch, cp и перенаправленные эхо, но все они терпят неудачу с неверным аргументом.

При запуске strace на "cp /etc /hostname /etc/hostname.bak" выдается следующий вывод:

stat64("/etc/hostname.bak", 0xbede4560) = -1 ENOENT (No such file or directory)
stat64("/etc/hostname", {st_mode=S_IFREG|0644, st_size=12, ...}) = 0
stat64("/etc/hostname.bak", 0xbede4398) = -1 ENOENT (No such file or directory)
open("/etc/hostname", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=12, ...}) = 0
open("/etc/hostname.bak", O_WRONLY|O_CREAT|O_EXCL|O_LARGEFILE, 0644) = -1 EINVAL (Invalid argument)
write(2, "cp: ", 4cp: )                     = 4
write(2, "cannot create regular file `/etc"..., 46cannot create regular file `/etc/hostname.bak') = 46
write(2, ": Invalid argument", 18: Invalid argument)      = 18

во время работы strace на "cp /etc /hostname /hostname.bak" выдает

stat64("/hostname.bak", 0xbec75570)     = -1 ENOENT (No such file or directory)
stat64("/etc/hostname", {st_mode=S_IFREG|0644, st_size=12, ...}) = 0
stat64("/hostname.bak", 0xbec753a8)     = -1 ENOENT (No such file or directory)
open("/etc/hostname", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=12, ...}) = 0
open("/hostname.bak", O_WRONLY|O_CREAT|O_EXCL|O_LARGEFILE, 0644) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0

Как только файл /hostname.bak существует, я могу переместить его в /etc / без происшествий.

Разрешения на /etc / мне тоже кажутся правильными

drwxr-xr-x 75 root root   36864 Mar 29 00:08 etc

Есть ли какая-либо настройка или конфигурация может вызвать такое поведение? Если нет, то как я могу пойти на отладку

0