일반 유저가 root님의 파일을 지울 수 있나요?

ELT!의 이미지

일반 유저가 root님의 파일을 지우려고 시도했습니다..
작업 디렉토리는 sticky bit가 세팅되어 있는 당나귀의 incoming 디렉토리 입니다..

strace rm -i ./z

결과는 성공..

access("./z", W_OK)                     = -1 EACCES (Permission denied)
lstat64("./z", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
write(2, "rm: remove write-protected regul"..., 53rm: remove write-protected regular empty file `./z'? ) = 53
fstat64(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 4), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40454000
read(0, y
"y\n", 1024)                    = 2
open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=21512, ...}) = 0
mmap2(NULL, 21512, PROT_READ, MAP_SHARED, 3, 0) = 0x40455000
close(3)                                = 0
unlink("./z")                           = 0
exit_group(0)                           = ?

이번엔 /bin/cp 파일을..

strace rm -i /bin/cp

결과는 실패..

access("/bin/cp", W_OK)                 = -1 EACCES (Permission denied)
lstat64("/bin/cp", {st_mode=S_IFREG|0755, st_size=54380, ...}) = 0
write(2, "rm: remove write-protected regul"..., 51rm: remove write-protected regular file `/bin/cp'? ) = 51
fstat64(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 1), ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40454000
read(0, y
"y\n", 1024)                    = 2
open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=21512, ...}) = 0
mmap2(NULL, 21512, PROT_READ, MAP_SHARED, 3, 0) = 0x40455000
close(3)                                = 0
unlink("/bin/cp")                       = -1 EACCES (Permission denied)
write(2, "rm: ", 4rm: )                     = 4
write(2, "cannot remove `/bin/cp\'", 23cannot remove `/bin/cp') = 23
write(2, ": Permission denied", 19: Permission denied)     = 19
write(2, "\n", 1
)                       = 1
exit_group(1)

제가 뭘 몰라서 그런가요??

** 디렉토리의 소유자가 일반 유저이고 그 안에 root가 파일을 만들면.. (권한은 600)
그 파일은 일반 유저도 지울 수 있네요.. 이거 정상인가요??
(읽기나 쓰기는 불가능)

최종호의 이미지

정상입니다.

파일을 생성하고 지우는 작업은 해당 디렉토리 파일을 변경하는 작업입니다.
(직접 file i/o로 디렉토리를 쓰지는 못합니다.)

단, 디렉토리에 sticky bit이 설정된 경우에는 owner가 다른 경우에는
해당 디렉토리에 write 권한이 있더라도 파일을 삭제할 수 없도록 하는 시스템들도 있습니다.
이 경우에는 해당 파일에 대해 write 권한을 가지고 있다면 파일을 지울 수 있습니다.

/tmp 나 /var/tmp 를 확인해 보세요.

emptysky의 이미지

root 권한의 파일이 일반유져 권한의 디렉토리 안에 있다면 강제 삭제가 가능합니다.

『 아픔은.. 아픔을 달래줄 약이 무엇인지 알면서도 쓰지 못할 때 비로소 그 아픔의 깊이를 알수가 있음이다. 』
『 for return...』

GoodWolf의 이미지

정말 가능하군요.. O.o
..
처음 알았습니다.
..
ㅎㅎ 감사합니다. ^^;
..

sticky bit와는 관계없이 가능하군요. ㅎㅎ

No pains! No gains!

thisrule의 이미지

emptysky wrote:
root 권한의 파일이 일반유져 권한의 디렉토리 안에 있다면 강제 삭제가 가능합니다.

정말 그렇다면 보안에 심각한 문제가 있는거 아닌가요?
예를들어 remote로 일반유저로 접속한 후 /etc 디렉토리의 파일을 몽땅 지운다던가 하면 큰일 아닌가요?
익명 사용자의 이미지

thisrule wrote:
emptysky wrote:
root 권한의 파일이 일반유져 권한의 디렉토리 안에 있다면 강제 삭제가 가능합니다.

정말 그렇다면 보안에 심각한 문제가 있는거 아닌가요?
예를들어 remote로 일반유저로 접속한 후 /etc 디렉토리의 파일을 몽땅 지운다던가 하면 큰일 아닌가요?

일반유저 권한 디렉터리 안에 있을 때의 얘기입니다. /etc 디렉터리는 root 권한으로 되어 있죠.

예를 들자면 이런 겁니다.
/home/war3 라는 디렉터리(war3 유저 계정이겠죠.)에 /home/war3/temp 라는 war3 유저가 만든 디렉터리가 있는데, 그 디렉터리 안에 temp.txt 라는 root 가 만든 파일이 있다고 하면 war3 유저는 temp.txt 파일을 지울 수 있다... 는 얘기입니다. 만일 저 temp.txt 가 /etc 나 /tmp 등의 war3 유저 권한 밖의 디렉터리에 위치하고 있다면 지우지 못합니다.

맹고이의 이미지

thisrule wrote:
emptysky wrote:
root 권한의 파일이 일반유져 권한의 디렉토리 안에 있다면 강제 삭제가 가능합니다.

정말 그렇다면 보안에 심각한 문제가 있는거 아닌가요?
예를들어 remote로 일반유저로 접속한 후 /etc 디렉토리의 파일을 몽땅 지운다던가 하면 큰일 아닌가요?

/etc가 root 소유의 디렉토리고 보통 755인데
일반유저가 들어가서 볼 수는 있어도 손댈 수는 없는 거 아닌가요? 8)

그나저나 root님이라니... 신선한 표현이네요. :wink:

Zeroidle의 이미지

이해가 안되는게 있는데요

제가 BobPlease 사용자라고 하고

/home/BobPlease/public_html/bbs/upload001.txt

라는 파일이 있다고 가정하구요.. upload001.txt는 apache권한이라면

지울수도 있다는 얘기인거 같은데

왜 못지우죠? 'ㅡ'

물론 /home/BobPlease/public_html/bbs 까지는 제 권한이구요..

p.s : OOPS.org의 BPL을 읽다보니 계정이름도 이거밖에 생각이 안나네요^^

지리즈의 이미지

맹고이 wrote:
그나저나 root님이라니... 신선한 표현이네요. :wink:

저도 한참 흐믓하게 웃었습니다. :wink:

There is no spoon. Neo from the Matrix 1999.

최종호의 이미지

Zeroidle wrote:
이해가 안되는게 있는데요

제가 BobPlease 사용자라고 하고

/home/BobPlease/public_html/bbs/upload001.txt

라는 파일이 있다고 가정하구요.. upload001.txt는 apache권한이라면

지울수도 있다는 얘기인거 같은데

왜 못지우죠? 'ㅡ'

물론 /home/BobPlease/public_html/bbs 까지는 제 권한이구요..

p.s : OOPS.org의 BPL을 읽다보니 계정이름도 이거밖에 생각이 안나네요^^

해당 디렉토리와 파일의 권한을 보여주세요~

ls -l upload001.txt
ls -ld .
id

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.