재부팅 시 Linux /srv 디렉터리 권한이 복원됨

재부팅 시 Linux /srv 디렉터리 권한이 복원됨

내가 겪고 있는 문제는 재부팅 시 디렉터리에 대한 그룹 액세스와 전역 액세스가 /srv복원된다는 것입니다.

world에 대한 쓰기 액세스 권한을 부여할 때마다 sudo chmod a+rwx /srv재부팅 후 권한이 이전 권한으로 되돌아가는 것을 제외하고는 모든 것이 정상입니다.

VirtualBox에서 새로운 Linux Mint 18 설치를 사용하여 이를 재현할 수 있었습니다.

추가 테스트 결과 재부팅 후 /dev, /home, /proc/run/sys대한 권한 도 재설정되는 것으로 나타났습니다./var

/bin, , /boot, /cdrom, /etc, /lib, /lib64, /lost+found, /media, , 및 디렉토리 /mnt는 영향을 받지 않습니다 ./opt/root/sbin/tmp/usr

/etc/init.d또한 "스마트" 초기화 스크립트를 찾기 위해 모든 스크립트를 삭제하려고 시도했지만 재부팅 후에도 권한이 여전히 재설정되었습니다. Mint 18은 기본적으로 systemd를 사용하는 것으로 보입니다. 시스템이 손상될 수 있으므로 systemd 스크립트를 제거하려고 시도하지 않았습니다.

이상한 것이 설치되어 있는지 확인하기 위해 설치 출력을 확인했는데, 제가 알 수 있는 한에는 그렇지 않습니다(아래 설치 출력).

저는 한동안 아무런 문제 없이 사용해왔던 Linux Mint 17.3의 약간 오래된 버전을 사용하여 이 동작을 재현해 보았습니다. Mint 17.3도 권한을 재설정하지만 /srv디렉터리에서는 재설정하지 않는 것 같습니다. 완전성을 위해 재설정 /dev및 을 수행합니다 /proc./run/sys

검색할 위치에 대한 단서를 얻기 위해 /bin/chmod"실제" chmod를 호출하는 쉘 스크립트로 대체했습니다. 이 스크립트는 추가적으로 chmod 호출과 해당 인수를 디스크의 파일에 기록합니다. 불행히도 chmod a+rwx *내 테스트 통화 외에는 어떤 통화도 기록되지 않았습니다.

따라서 일부 응용 프로그램 바이너리가 스마트하게 권한을 "수정"하려고 시도하는 것처럼 느껴지지만 어떤 바이너리입니까?

누구든지 어떤 아이디어가 있습니까?

ls -l설치 후 출력:

user@system / $ ls -l /
total 96
drwxr-xr-x   2 root root  4096 Feb  6 20:50 bin
drwxr-xr-x   3 root root  4096 Feb  6 20:50 boot
drwxr-xr-x   2 root root  4096 Feb  6 20:46 cdrom
drwxr-xr-x  19 root root  4240 Feb  6 20:51 dev
drwxr-xr-x 150 root root 12288 Feb  6 20:50 etc
drwxr-xr-x   3 root root  4096 Feb  6 20:46 home
lrwxrwxrwx   1 root root    32 Feb  6 20:50 initrd.img -> boot/initrd.img-4.4.0-21-generic
drwxr-xr-x  25 root root  4096 Feb  6 20:50 lib
drwxr-xr-x   2 root root  4096 Jun 28  2016 lib64
drwx------   2 root root 16384 Feb  6 20:44 lost+found
drwxr-xr-x   2 root root  4096 Jun 28  2016 media
drwxr-xr-x   2 root root  4096 Jun 28  2016 mnt
drwxr-xr-x   2 root root  4096 Jun 28  2016 opt
dr-xr-xr-x 173 root root     0 Feb  6  2017 proc
drwx------   4 root root  4096 Feb  6 20:51 root
drwxr-xr-x  30 root root   940 Feb  6 20:51 run
drwxr-xr-x   2 root root 12288 Feb  6 20:50 sbin
drwxr-xr-x   2 root root  4096 Jun 28  2016 srv
dr-xr-xr-x  13 root root     0 Feb  6 20:51 sys
drwxrwxrwt  10 root root  4096 Feb  6 20:51 tmp
drwxr-xr-x  10 root root  4096 Jun 28  2016 usr
drwxr-xr-x  11 root root  4096 Jun 28  2016 var
lrwxrwxrwx   1 root root    29 Feb  6 20:50 vmlinuz -> boot/vmlinuz-4.4.0-21-generic
user@system / $

ls -l그런 다음 출력sudo chmod a+rwx *

user@system / $ ls -lah
total 96
drwxrwxrwx   2 root root  4096 Feb  6 20:50 bin
drwxrwxrwx   3 root root  4096 Feb  6 20:50 boot
drwxrwxrwx   2 root root  4096 Feb  6 20:46 cdrom
drwxrwxrwx  19 root root  4240 Feb  6 20:51 dev
drwxrwxrwx 150 root root 12288 Feb  6 20:50 etc
drwxrwxrwx   3 root root  4096 Feb  6 20:46 home
lrwxrwxrwx   1 root root    32 Feb  6 20:50 initrd.img -> boot/initrd.img-4.4.0-21-generic
drwxrwxrwx  25 root root  4096 Feb  6 20:50 lib
drwxrwxrwx   2 root root  4096 Jun 28  2016 lib64
drwxrwxrwx   2 root root 16384 Feb  6 20:44 lost+found
drwxrwxrwx   2 root root  4096 Jun 28  2016 media
drwxrwxrwx   2 root root  4096 Jun 28  2016 mnt
drwxrwxrwx   2 root root  4096 Jun 28  2016 opt
drwxrwxrwx 167 root root     0 Feb  6  2017 proc
drwxrwxrwx   4 root root  4096 Feb  6 20:51 root
drwxrwxrwx  30 root root   960 Feb  6 20:56 run
drwxrwxrwx   2 root root 12288 Feb  6 20:50 sbin
drwxrwxrwx   2 root root  4096 Jun 28  2016 srv
drwxrwxrwx  13 root root     0 Feb  6 20:51 sys
drwxrwxrwt  10 root root  4096 Feb  6 20:56 tmp
drwxrwxrwx  10 root root  4096 Jun 28  2016 usr
drwxrwxrwx  11 root root  4096 Jun 28  2016 var
lrwxrwxrwx   1 root root    29 Feb  6 20:50 vmlinuz -> boot/vmlinuz-4.4.0-21-generic
user@system / $ 

재부팅 후: (확실히 sync재부팅하기 전에 매뉴얼을 작성했습니다)

user@system / $ ls -l
total 96
drwxrwxrwx   2 root root  4096 Feb  6 20:50 bin
drwxrwxrwx   3 root root  4096 Feb  6 20:50 boot
drwxrwxrwx   2 root root  4096 Feb  6 20:46 cdrom
drwxr-xr-x  19 root root  4240 Feb  6 20:57 dev
drwxrwxrwx 150 root root 12288 Feb  6 20:50 etc
drwxr-xr-x   3 root root  4096 Feb  6 20:46 home
lrwxrwxrwx   1 root root    32 Feb  6 20:50 initrd.img -> boot/initrd.img-4.4.0-21-generic
drwxrwxrwx  25 root root  4096 Feb  6 20:50 lib
drwxrwxrwx   2 root root  4096 Jun 28  2016 lib64
drwxrwxrwx   2 root root 16384 Feb  6 20:44 lost+found
drwxrwxrwx   2 root root  4096 Jun 28  2016 media
drwxrwxrwx   2 root root  4096 Jun 28  2016 mnt
drwxrwxrwx   2 root root  4096 Jun 28  2016 opt
dr-xr-xr-x 177 root root     0 Feb  6  2017 proc
drwxrwxrwx   4 root root  4096 Feb  6 20:51 root
drwxr-xr-x  29 root root   920 Feb  6 20:57 run
drwxrwxrwx   2 root root 12288 Feb  6 20:50 sbin
drwxr-xr-x   2 root root  4096 Jun 28  2016 srv
dr-xr-xr-x  13 root root     0 Feb  6 20:57 sys
drwxrwxrwt  10 root root  4096 Feb  6 20:57 tmp
drwxrwxrwx  10 root root  4096 Jun 28  2016 usr
drwxr-xr-x  11 root root  4096 Jun 28  2016 var
lrwxrwxrwx   1 root root    29 Feb  6 20:50 vmlinuz -> boot/vmlinuz-4.4.0-21-generic
user@system / $

설치 출력:

user@system / $ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1132716k,nr_inodes=283179,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=230660k,mode=755)
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (rw,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd,nsroot=/)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb,release_agent=/run/cgmanager/agents/cgm-release-agent.hugetlb,nsroot=/)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer,nsroot=/)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct,nsroot=/)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory,nsroot=/)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset,clone_children,nsroot=/)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio,nsroot=/)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event,release_agent=/run/cgmanager/agents/cgm-release-agent.perf_event,nsroot=/)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids,release_agent=/run/cgmanager/agents/cgm-release-agent.pids,nsroot=/)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio,nsroot=/)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices,nsroot=/)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=32,pgrp=1,timeout=0,minproto=5,maxproto=5,direct)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
cgmfs on /run/cgmanager/fs type tmpfs (rw,relatime,size=100k,mode=755)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=230660k,mode=700,uid=1000,gid=1000)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
user@system / $

PS 일반적으로 /srv디렉토리 전체를 쓰기 가능하게 만드는 것은 아마도 나쁜 생각일 것입니다. 제 경우에는 임베디드 개발 목적으로 방화벽 환경에 별도의 시스템이 있었습니다.

답변1

권한은 문서화되어 있는 것으로 보이는 systemd-tmpfiles에 의해 설정됩니다.여기.

편집으로 해결했는데 /usr/lib/tmpfiles.d/home.conf, 줄 앞에 댓글을 추가했습니다q /srv 0755 - - -

알아내는 데 도움을 준 DopeGhoti에게 감사드립니다.

관련 정보