실수로 다음 명령을 통해 "/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/overrides
setxid 바이너리를 선언하는 파일과 함께 제공되어야 하지만(이 페이지의 "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