디렉터리 권한을 이전 상태로 변경할 수 있습니까?

디렉터리 권한을 이전 상태로 변경할 수 있습니까?

실수로 다음 명령을 통해 "/usr/bin" 디렉터리와 해당 파일의 권한을 변경했습니다.

$chmod 775 /usr/bin -R

먼저 sudo에 문제가 있었는데 수정했습니다. 이제 권한 변경으로 인해 일부 프로그램이 실행되지 않을 수 있다고 의심됩니다.

이전 허가를 취소할 수 있는지 알고 싶습니다.

저는 데비안/테스트를 사용하고 있습니다.

답변1

다행히 이러한 권한은 완전히 파괴적이지는 않지만 "실행 취소"는 불가능합니다.

백업에서 복원할 수 없고 소스에서 아무것도 설치하지 않은 경우 /usr/bin패키지 관리자를 사용하여 올바른 권한을 복원할 수 있습니다.

RPM 기반 배포판(Red Hat Enterprise Linux, Fedora, CentOS 등)의 경우 이는 매우 간단합니다.

rpm -a --setperms

dpkg 기반 배포판(예: Debian 및 Ubuntu)의 경우약간 덜 사소한...

답변2

대부분의 프로그램에는 /usr/bin모든 사람이 읽고 실행할 수 있으며 소유자(예: 루트)만 쓸 수 있는 권한 755가 있어야 합니다. 여러 프로그램은setuid 또는 setgid: 권한의 setuid 또는 setgid 비트에 의해 부여된 추가 권한이 있습니다. /usr/bin/sudo그 중 하나입니다. chmod 4755 /usr/bin/sudo이를 복원하려면 setuid 루트가 필요합니다.

Debian의 공식 패키지만 있는 경우(Debian이나 다른 소스에서 파생된 배포판의 패키지와 반대) setuid/setgid 바이너리가 포함된 패키지를 확인하여 확인할 수 있습니다.린 티안보고서:사용자 ID 설정,설정,둘 다. 원칙적으로 이러한 모든 패키지는 /usr/share/lintian/overridessetxid 바이너리를 선언하는 파일과 함께 제공되어야 하지만(이 페이지의 "overridden" 태그는 해당 선언이 있음을 나타냄) 일부 패키지는 이를 준수하지 않습니다( at및 와 같은 유비쿼터스 패키지 포함 xserver-xorg).

다음 스크립트는 chmod파일을 /usr/bin기본 권한으로 복원하는 명령을 실행하는 쉘 스크립트를 인쇄합니다(파일의 기본 권한에 setuid 또는 setgid 비트가 포함된 경우).

wget -q -O - https://lintian.debian.org/tags/set{uid,gid,uid-gid}-binary.html |
sed -n 's~^.*> *\(usr/bin/[^ ]*\) \([0-7][0-7][0-7][0-7]\).*~[ -e /\1 ] \&\& chmod \2 /\1~p'

또한 일부 권한은 로컬로 구성할 수 있습니다. 이 권한이 등록되었습니다`dpkg-stat 재정의. 당신은 그들을 나열할 수 있습니다

dpkg-statoverride --list '/usr/bin/*'

다음 명령을 사용하여 이러한 권한을 다시 적용할 수 있습니다.

dpkg-statoverride --list '/usr/bin/*' |
awk 'system("chmod " $3 " " $4)'

패키지가 Debian의 패키지가 아닌 경우 올바른 권한이 있는지 확인하는 유일한 방법은 .apt-get --reinstall install PACKAGE-NAME

관련 정보