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


52

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



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

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

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

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

답변:


104

몇 가지 이유가 있습니다.

먼저 일반적인 읽기 / 쓰기 / 실행 권한 외에도 파일 권한에 포함 된 다른 비트가 있습니다. 특히 setuidsetgid. 이러한 권한 비트 중 하나를 가진 프로그램이 실행되면 프로그램을 실행 한 사용자가 아니라 프로그램 소유자의 "유효한 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 0777setuidsetgid 가 첫 번째로 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.