chmod 777 -R / 시스템을 사용할 수없는 상태로 두는 이유는 무엇입니까?


52

모두에게만 권한을 부여하고 있는데 왜 권한 만 부여하면 시스템이 다운됩니까? 파일을 변경하지 않고 권한 만 수정하고 있습니다.



2
나는 그것이 충돌하지 않고 오히려 어느 시점에서 부팅 프로세스를 중단한다고 생각합니다. 를 살펴보면 /var/log/syslog이유를 파악할 수도 있습니다.
— Hi-Angel

7
이것이 문제가 되지 않더라도 "모든 사람에게 아무것도 할 수있는 권한을 부여 하지는 않는다 " 는 것을 아는 것이 중요합니다 . 여전히 "루트"(보다 정확하게는 UID가 0 인 프로세스) 만 수행 할 수있는 많은 작업이 여전히 존재합니다.
— zwol

6
@Glen이 "관련"이라면, "우리가 사이트 전체에서 속임수로 플래그를 지정할 수있는 이유를 보여주는 정확한 복제본"을 의미합니다. 훌륭한 링크. ;)
— underscore_d

4
이 질문을하게 된 것에 관한 이야기를 듣고 싶습니다.
— Dewi Morgan

답변:


104

몇 가지 이유가 있습니다.

먼저 일반적인 읽기 / 쓰기 / 실행 권한 외에도 파일 권한에 포함 된 다른 비트가 있습니다. 특히 setuid와 setgid. 이러한 권한 비트 중 하나를 가진 프로그램이 실행되면 프로그램을 실행 한 사용자가 아니라 프로그램 소유자의 "유효한 UID"및 / 또는 "유효한 GID"를 얻습니다. 이를 통해 프로그램을 실행 한 사용자보다 더 많은 권한으로 프로그램을 실행할 수 있습니다. 그것은 등 많은 중요한 시스템 유틸리티로 사용 su하고 sudo. 귀하의 chmod명령은 사용할 수 없게 유틸리티를 떠나 이러한 비트를 지 웁니다.

둘째로, 일부 프로그램 (특히 ssh)은 파일 권한에 대한 상태 점검을 수행하고 안전하지 않은 것으로 보이는 권한이있는 파일의 사용을 거부합니다. 이로 인해 부주의 한 관리자가 실수로 보안 허점을 떠날 위험이 줄어들지 만 파일 삭제 권한을 처리하는 것이 더욱 어려워집니다.


41

짧은 대답.

Linux 시스템에는 sudo등의 특정 프로그램에 대한 특정 권한이 필요합니다 .

실행할 때 chmod 777 -R /모든 권한을 지우고로 바꿉니다 777. 모든 권한을 수동으로 복원하지 않으면 시스템을 사용할 수 없게됩니다.

실제로는 훨씬 빠르고 쉽게 다시 설치할 수 있습니다.

문제는 많은 시스템 프로그램이 권한을 "좋아하지 않으면"시작되지 않는 방식으로 설계되었다는 것입니다. 이것은 보안상의 이유로 이루어집니다.

각 프로그램이 왜 잘못된 허가로 작동하지 않는지를 설명하는 것보다 시스템 설계를 다루는 방법을 설명하는 것이 더 중요하다고 생각합니다.

Ubuntu에서 모든 사용자가 무제한 권한을 갖도록하려면 sudo파일 및 디렉토리 권한을 변경하는 대신 모든 사용자를 그룹에 추가 할 수 있습니다 . 동일한 효과가 있지만 시스템을 망치지는 않습니다.

또 다른 방법 (매우 나쁜 방법)은 루트 계정을 활성화하고 모든 사람이 루트로 로그인하도록 허용하는 것입니다.


11
어쩌면 누군가 시간이 걸리고 자세한 답변을 할 것입니다 ;-)
— Pilot6

1
모든 사람이이 시스템에서 모든 작업을 수행 할 수있는 더 좋은 방법을 지적 할 수는 있지만 각 바이너리에 특정 권한, 설정 및 플래그가 필요한 이유에 대한 심층적 인 기사를 작성하는 것은 매우 중요합니다. ;-)
— Phillip -Zyan K Lee-Stockmann

4
Linux 시스템은 모든 사람이 모든 것을 할 수 있도록 설계되지 않았습니다. 루트 계정을 활성화하면 누구나 루트 계정으로 로그인 할 수 있습니다. 어리석은 일이지만 이것이 방법입니다.
— Pilot6

9
따라서 Pilot6 은 시스템 프로그램이 권한이 잘못되면 제대로 작동하지 못하도록 설계되었다고 말하는 것입니다. 그리고 제발 Pilot6는 가능하면 특정 응용 프로그램이 제한된 권한이 필요한 이유 예와 설명과 깊은 대답을 제공하시기 바랍니다. 감사.
— Brij Raj Kishore

13
@Goldname 충돌 은 오류입니다. "이 상태에서는 시스템에서 중요한 기능을 수행 할 수 없으므로 중단됩니다"라고 말하는 수많은 프로그램입니다.
— Shadur

32

chmod 미묘한 뉘앙스가 있습니다.

chmod 0777setuid 및 setgid 가 첫 번째로 0으로 설정되고 후자가 유지 chmod u+rwx,g+rwx,o+rwx된다는 점 에서 다르게 작동 합니다.

그렇기 때문에 시스템을 사용할 수 없게되었습니다. 몇 가지 프로그램에서 필요한 setuid 를 제거 했습니다.

다음은 Linux Fedora 23 랩탑의 setuid 또는 setgid 파일 목록입니다.

[root@fedora23lnvr61]# find / -perm /g+s,u+s
/var/log/journal
/var/log/journal/75e870eb13c74fbf97556a32ecf80ea2
/opt/google/chrome/chrome-sandbox
/usr/bin/rogue
/usr/bin/gnuchess
/usr/bin/locate
/usr/bin/umount
/usr/bin/lbrickbuster2
/usr/bin/gpasswd
/usr/bin/crontab
/usr/bin/fusermount
/usr/bin/su
/usr/bin/at
/usr/bin/newuidmap
/usr/bin/sudo
/usr/bin/pkexec
/usr/bin/mount
/usr/bin/chsh
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/chage
/usr/bin/chfn
/usr/bin/write
/usr/bin/newgidmap
/usr/sbin/mount.nfs
/usr/sbin/lockdev
/usr/sbin/netreport
/usr/sbin/userhelper
/usr/sbin/usernetctl
/usr/sbin/unix_chkpwd
/usr/sbin/pam_timestamp_check
/usr/libexec/kde4/kdesud
/usr/libexec/kde4/kpac_dhcp_helper
/usr/libexec/dbus-1/dbus-daemon-launch-helper
/usr/libexec/qemu-bridge-helper
/usr/libexec/openssh/ssh-keysign
/usr/libexec/spice-gtk-x86_64/spice-client-glib-usb-acl-helper
/usr/libexec/utempter/utempter
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
/usr/libexec/Xorg.wrap
/usr/lib/polkit-1/polkit-agent-helper-1
/usr/lib64/vte-2.90/gnome-pty-helper
/usr/lib64/virtualbox/VBoxSDL
/usr/lib64/virtualbox/VirtualBox
/usr/lib64/virtualbox/VBoxNetNAT
/usr/lib64/virtualbox/VBoxHeadless
/usr/lib64/virtualbox/VBoxNetDHCP
/usr/lib64/virtualbox/VBoxNetAdpCtl
/usr/lib64/virtualbox/VBoxVolInfo
/usr/lib64/vte/gnome-pty-helper
[root@fedora23lnvr61]# 

캐시와 로그에서 수십 개의 노이즈 항목을 제거했습니다.


3
왜 너구리와 도적이 그 목록에 있는지 궁금해?
— WiseOldDuck

2
@WiseOldDuck : 게임에는 비트가 있으므로 "높은 점수"파일을 업데이트 할 수 있지만 권한이없는 사용자는 그렇게 할 수 없습니다.
— wallyk

3
@WiseOldDuck wallyk가 말했듯이 setuid는 근본적으로 루트를 사용할 필요가 없다는 것을 기억하십시오 (그리고 afaik setgid는 루트에 실제로 유용하지 않습니다)
— StarWeaver

5
무엇 chmod을하고 있는지 설명 하고 다른 곳에서는 볼 수없는 증거를 제공 하기 위해 귀찮게 노력했습니다 .
— underscore_d

1
이것이 chmod u+rwx,g+rwx,o+rwx -R /시스템을 손상시키지 않을 것입니까?
— 데니스 Jaheruddin

15

다른 답글에 추가 : /tmp(일반적으로 권한 1777이있는) 에서 "sticky bit"를 제거하면 프로그램에서 서로의 임시 파일을 쓰거나 삭제할 수 있으므로 예기치 않은 다른 문제가 발생할 수 있습니다.

스티키 비트는 누군가가 파일을 만들 수있게하는 특별한 권한이며, 파일 /tmp을 만든 사람 만 파일 을 이동하거나 제거 할 수 있습니다.


4
"그리고 이것은 루트를 제외한 모든 사람이 시스템 / tmp 디렉토리를 사용하지 못하게 막았을 것입니다." -맞지 않는 것 같습니다. 여전히 누구나 시스템 / tmp 디렉토리를 사용할 수 있습니다. 사용자, 그룹 및 기타 모든 사람에게 모든 권한이있는 경우 고정 비트가 필요하지 않습니다. 그러나 누구나 다른 사람의 파일을 제거 할 수 있습니다.
— hvd

1
그래서 벤 chmod 1777 -R을 실행하면 고정 비트를 지우지 않아서 문제가 발생하지 않습니까? –
— Brij Raj Kishore

감사합니다 @ hvd-당신이 맞고 게시물을 약간 반영하여 반영했습니다.
— 벤 XO

@BrijRajKishore, 왜 당신이 처음에 이것을하고 있는지에 대한 질문이 남아 있습니다. 우분투와이를 구성하는 프로그램은 여러 가지 이유로 "권한 없음"으로 실행되도록 설계되지 않았습니다. 대신 "su"를 사용하는 것이 더 합리적입니다.
— Ben XO

1
충돌이 발생하는지 알 수 없습니다. 갑자기 응용 프로그램이 서로에게 임시 파일을 만들 수 있기 때문에 가능할 수도 있습니다. 우연히도 충돌이 발생할 수 있습니다. 우분투는 이런 식으로 테스트되지 않았으므로 아마도 가장 먼저 알게 될 것입니다. :-) 반면에 시스템의 모든 단일 폴더에 고정 비트를 설정하면 폴더에 대한 그룹 권한 (예 : 권한이 2777 인 폴더)으로 인해 프로그램을 조작 할 수있는 응용 프로그램에서 많은 다른 문제가 발생할 수 있습니다.
— Ben XO
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.