리눅스가 setuid 디렉토리를 존중하게하는 방법은 무엇입니까?


8

얼마 전에 IRC에서 대화하는 동안 채널의 한 사용자가 다른 사용자가 겪고있는 문제를 해결하기 위해 파일에서 사용자 ID를 상속하기 위해 누군가가 디렉토리를 설정하도록 제안했습니다. 당시 나는 리눅스가 setuid 디렉토리를 지원하지 않는다고 말했다. 그 후 조언을 한 사람 은 디렉토리에 설정된 setuid 권한을 존중하는 시스템 의 pastebin ( http://codepad.org/4In62f13 )을 보여주었습니다 .

"linux가 setuid 디렉토리를 지원하지 않는다"고 말하면 "chmod u + s directory"로 갈 수 있고 디렉토리에 비트가 설정된다는 것입니다. 그러나 리눅스 (내가 이해 한 것처럼)는 디렉토리 에서이 비트를 무시합니다.

내가 시도한 것처럼, 나는 그 pastebin을 복제 할 수 없습니다. 누군가 selinux를 사용하여 동작을 에뮬레이트 할 수 있고 규칙을 사용하여 파일에 uid를 강제로 적용 할 수는 있지만 setuid 디렉토리 권한이 아니라는 것을 제안했습니다. 인터넷에서 읽은 내용은 상당히 유익하지 않습니다. 대부분의 경우 "아니오, 디렉토리의 setuid는 리눅스에서 작동하지 않습니다"라고 가끔 "특정 상황에서 수행 할 수 있습니다"(예 : http://arstechnica.com/) etc / linux / 2003 / linux.ars-12032003.html )

나는 원래 사람이 누구인지 기억하지 못하지만 원래 시스템은 데비안 6 시스템이었고, 실행중인 파일 시스템은 "default, acl"으로 마운트 된 xfs였습니다. 나는 그것을 복제하려고 시도했지만 지금까지 운이 없다 (지금까지 다양한 버전의 데비안, 우분투, 페도라 및 센토로 시도)

누구든지 디렉토리에서 setuid를 존중하기 위해 시스템을 얻는 방법이나 방법을 알려 줄 수 있습니까?


XFS에는 확실히 마운트 옵션 ( grpid|bsdgroups또는 nogrpid|sysvgroups)이 있는데, 이는 디렉토리의 파일이 소유자 그룹이 아닌 디렉토리 그룹으로 작성됨을 의미합니다. 아마 그걸 가지고 놀아?
Zanchey

답변:


7

디렉토리 용 Setuid는 setgid처럼 동작하지 않습니다. 쉘 출력이 FreeBSD에서 나오지 않는 한, 일부는 지루하고 약간의 비용으로 재미를 보았습니다.

디렉토리에 설정된 setuid 권한은 UNIX 및 Linux 시스템에서 무시됩니다. [4] FreeBSD는 setgid와 유사하게 해석하도록, 즉 최상위 디렉토리 소유자가 모든 파일과 하위 디렉토리를 소유하도록 구성 할 수 있습니다. [5]

FreeBSD에서 디렉토리는 실제 값에 관계없이 setgid 비트가 항상 설정된 것처럼 동작합니다. open (2)에 설명 된대로 "새 파일이 작성되면 파일이 들어있는 디렉토리 그룹이 제공됩니다."

http://en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories


나는 사건이 될 것이라고 생각하지만 ... 그 사람은 자신의 목표를 달성했다고 확신했습니다 ... 그는 데비안을 사용하고 있기 때문에 데비안 포럼으로 돌아가서 응답을 위해 이것을 얻었습니다 : forums.debian.net /… 아이디어가 적은 상태로 게시하고 냉담한 태도를 취했습니다. 한 달 정도 조금 연구 한 후에는 확실히 할 수 없다고 확신하지 못하지만 데비안 사람들이 무언가를 수정하지 않고 그 가능성을 믿는 이유를 이해할 수 없습니다.
Takigama

그가 그것을 달성했다면, 그것이 어떻게되었는지에 대한 최고의 출처가 될 것입니다. 나는 그 주제를 스스로 연구했고 아무것도 설정하지 않았다.
Aaron Copley

@AaronCopley : 디렉토리에 설정된 setuid 권한이 Linux 시스템에서 도입되었다는 사실에 대해 Wikipedia 이외의 다른 소스가 있습니까?
Martin Thoma

아니요.하지만 시도해보고 직접 확인하실 수 있습니다. :)
Aaron Copley

2

부분 답변 / 해결 방법 :

나는 똑같은 일을하려고했지만, 싸우지 않고 다른 방법을 시도하기로 결정했습니다. 내가 시도한 것은 기본 권한을 설정하기 위해 액세스 제어 목록이었습니다. (참고 : 먼저 활성화해야 할 수도 있습니다).

setfacl -R --set-file=- . <<EOF
# file: testdir/
# owner: testuser
# group: testgroup
user::rwx
group::rwx
group:normaluser:rwx
mask::rwx
other::r-x
default:group::rwx
default:group:normaluser:rwx
default:mask::rwx
default:other::r-x
EOF

여기서 testuser는 테스트를 실행하는 데 사용되며 일반 사용자는 root (각 시간)를 사용하지 않고도 결과를 삭제할 수 있습니다.


새 그룹이 추가되지만 그룹 ID 설정이 제대로 작동합니다.
ctrl-alt-delor

-2

RHEL에서 man chmod

chmod는 달리 지정하지 않으면 디렉토리의 set-user-ID 및 set-group-ID 비트를 유지합니다. u + s 및 gs와 같은 기호 모드를 사용하여 비트를 설정하거나 지울 수 있으며 숫자 모드를 사용하여 비트를 설정 (클리어하지는 않음) 할 수 있습니다.

숫자로 올바르게 호출 chmod 4711 ./dir하면 set UID 비트를 chmod 2711 ./dir추가하고 6711pastebin의 데모에 따라 uid + gid 상속을 설정 하기 위해 set gid 비트를 추가합니다 .

매뉴얼 페이지 당 chmod u+s== chmod 4XXXand chmod g+s==chmod 2XXX


1
아니오, 나는 그것들을 적용하는 방법을 이해합니다. 그것은 문제가 아닙니다.
Takigama

(실수로 입력하십시오) 문제는 디렉토리에서 그들이하는 일입니다. 내 생각에 디렉토리의 setuid는 리눅스가하지 않은 것입니다 (예 : 우분투 10.10 시스템) : testuser @ boson : ~ $ ls -ald ~ drwsrwsrwx 3 testuser testuser 4096 2012-07-05 01:55 / home / testuser 해당 디렉터리에는 setuid와 setgid가 있습니다. 이제 사용자 tt @ boson : ~ $ touch ~ testuser / file t @ boson : ~ $ ls -la! $ ls -la ~ testuser / file -rw-r--r-- 1 t testuser 0 2012-03 -21 01:57 / home / testuser / file 디렉토리의 setuid 비트가 어떻게 영향을 미치지 않는지주의하십시오 (예상 한 것). 리눅스 시스템이 디렉토리에서 setuid를 어떻게 사용하게합니까?
Takigama

당신은 같은 뭔가를 지울 수 있습니다 =755또는 00755수치를 활용
스티브 Buzonas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.