chmod:파일 모드 비트 변경

chmod:파일 모드 비트 변경

나는 오래 전에 Unix에서 다음과 같은 사실을 배웠습니다 chmod. Unix에서 권한을 설정하는 전통적인 방법(그리고 프로그램이 권한을 얻도록 허용하는 방법은 setuid 및 setgid를 사용하는 것입니다).

나는 최근에 GNU/Linux에서 몇 가지 새로운 명령을 발견했습니다:

  • setfacl기존 비트 ugo:rwx합계를 확장합니다.tchmod
  • setcapug:s보다 세분화된 권한 제어를 제공하는 것보다 낫습니다  chmod.
  • chattr파일에 대한 추가 제어를 허용합니다(약간의 하이브리드).

다른 사람이 있나요?

답변1

chmod:파일 모드 비트 변경

사용법(8진수 모드):

    chmod옥탈 모드 문서...

사용법(기호 모드):

    chmod [인용하다][[운영자][모델]]문서...

referencesugoa어떤 사용자가 접근할 수 있는지 지정하는 문자의 조합입니다.files수정됩니다:

  • u그것을 소유한 사용자
  • g파일 그룹의 다른 사용자
  • o파일 그룹에 없는 다른 사용자
  • a모든 사용자들

생략하면 기본값은 모든 사용자로 설정되지만 허용된 권한만 수정합니다 umask.

operator다음 캐릭터 중 하나입니다 +-=.

  • +지정된 파일 모드 비트를 각 파일의 기존 파일 모드 비트에 추가합니다.file
  • -각 파일의 기존 파일 모드 비트에서 지정된 파일 모드 비트를 제거합니다.file
  • =명시적으로 지정하지 않는 한 디렉터리에 설정된 setuid합계 비트를 제외하고 지정된 비트를 추가하고 지정되지 않은 비트를 제거합니다 .setgid

moderwxXst수정될 권한 비트를 지정하는 문자 조합으로 구성됩니다 .

  • r읽다
  • w쓰다
  • x(소문자 X) 실행(또는 디렉터리 검색)
  • X(대문자) 파일이 디렉터리이거나 특정 사용자 클래스에 대해 실행 비트가 설정된 경우에만 실행/트래버스합니다.
  • ssetuid 또는 setgid(지정된 항목에 따라 다름)references)
  • t삭제 플래그 또는 고정 비트 제한

또는,mode문자 중 하나로 구성될 수 있으며 ugo, 이 경우 패턴은 현재 소유자( u), 파일 그룹의 구성원( g) 또는 위 범주( o)의 사용자에게 부여된 권한에 해당합니다.

각 부분에 대한 설명 chmod:

  • 액세스 제어( 참조 setfacl)
    • rwx— 읽기( r), 쓰기( w), 실행/트래버스( x) 권한
      • read(r)은 파일을 읽을 수 있는지 또는 디렉터리를 나열할 수 있는지 여부에 영향을 줍니다.
      • 쓰기(w)는 파일에 쓸 수 있는지 또는 디렉터리를 수정할 수 있는지(파일 추가, 삭제, 이름 바꾸기) 여부에 영향을 줍니다.
      • Execute(x)는 스크립트 및 기타 실행 파일에 대해 파일을 실행할 수 있는지 여부에 영향을 줍니다.
      • "검색"이라고도 하는 Traversal(x)은 디렉터리를 탐색할 수 있는지 여부, 즉 프로세스가 디렉터리의 항목을 통해 파일 시스템 개체에 액세스할 수 있는지(또는 액세스를 시도할지) 여부에 영향을 줍니다.
    • s및 — 디렉터리의 t고정 비트( t) 및 setgid()s
      • 고정 비트는 디렉토리에만 영향을 미칩니다. 파일 소유자와 루트를 제외한 모든 사람은 디렉터리의 파일을 삭제할 수 없습니다.
      • 디렉토리의 setgid 비트는 새 파일과 디렉토리를 동일한 그룹으로 그룹화하고 새 디렉토리에 setgid 비트가 설정되도록 합니다( 의 기본값 참조 setfacl).
    • s— 실행 파일의 setuid, setgid
      • 현재 수행 중인 작업을 모르는 경우 보안에 심각한 영향을 미칠 수 있습니다.
      • 실행 파일이 실행될 때 이러한 비트 중 하나가 설정되면 실행 파일의 사용자/그룹이 프로세스의 유효한 사용자/그룹이 됩니다. 이렇게 하면 프로그램이 실행됩니다.~처럼그 사용자. setcap이를 수행하는 더 현대적인 방법을 확인하십시오 .

chown chgrp:


chattr: 파일 속성 변경

용법:

    샤텔운영자[속성]문서...

operator다음 캐릭터 중 하나입니다 +-=.

  • +선택한 속성을 기존 속성에 추가attributes~의files
  • -선택된 것을 지워 라attributes
  • =파일의 현재 속성 집합을 지정된 값으로 덮어씁니다.attributes.

attributeacdeijmstuxACDFPST속성에 해당하는 문자의 조합입니다 .

  • a추가만
  • c압축
  • d덤프 없음
  • e범위 형식
  • i불변
  • j데이터 로그
  • m압축하지 마세요
  • s안전 삭제
  • t꼬리 병합 없음
  • u삭제할 수 없습니다.
  • x파일에 직접 액세스
  • Aatime업데이트 없음
  • C글을 쓸 때 사본이 없습니다.
  • D디렉터리 업데이트 동기화
  • F대소문자를 구분하지 않는 디렉토리 조회
  • P프로젝트 계층
  • S동기화 업데이트
  • T디렉토리 계층의 최상위

이러한 속성 중 다수는 사용이 제한되어 있습니다. 예를 들어, 그 중 다수는 슈퍼유저(예: 루트) 또는 기타 권한이 있는 프로세스에 의해서만 설정되거나 지워질 수 있습니다.


setfattr: 변화확장된 파일 속성

사용법(속성 설정):

    setfattr-n이름-V 문서...

사용법(삭제):

    setfatr-x이름 문서...

name설정하거나 제거할 확장된 속성의 이름입니다.

value확장된 속성의 새 값입니다.


setfacl:파일 접근 제어 목록 변경

용법:

    설정값옵션[기본:][표적:][매개변수][:파마]문서...

option다음 중 하나를 포함해야 합니다.

  • --set파일 또는 디렉터리의 ACL을 설정하고 이전 ACL을 교체합니다.
  • -m| --modify파일 또는 디렉토리의 ACL 수정
  • -x| --remove 파일 또는 디렉토리에 대한 ACL 항목 삭제

target문자 중 하나입니다 ugmo(또는 아래와 같이 더 긴 형식).

  • u, users지정된 사용자의 권한은 다음에 의해 결정됩니다.param, 생략된 경우 기본값은 파일 소유자 UID입니다.
  • g, group지정된 그룹의 권한은 다음에 의해 결정됩니다.param, 생략할 경우 기본값은 자신이 속한 그룹의 GID입니다.
  • m, mask유효 권한 마스크
  • o, other다른 사람의 권한

permsrwxX권한에 해당하는 문자 조합입니다 .

  • r읽다
  • w쓰다
  • x구현하다
  • X파일이 디렉터리이거나 이미 일부 사용자에 대한 실행 권한이 있는 경우에만 실행

또는,perms권한 집합을 나타내는 8진수(-)일 수 있습니다 0.7


setcap: 변화파일 기능

용법:

    세트 캡용량 조항 문서

capability-clause쉼표로 구분된 목록으로 구성됩니다.능력이름 뒤에는 연산자 플래그 쌍 목록이 옵니다.

사용 가능한 연산자는 =, +및 입니다 -. 사용 가능한 플래그는 및 이며 e, 이는 다음에 해당합니다.ip효과적인,상속 가능한그리고허용하다능력치 설정.

운영자는 =지정된 기능 세트를 발전시키고 다른 기능 세트를 재설정합니다. 연산자에 플래그가 지정되지 않으면 =모든 기능 세트가 재설정됩니다. +및 연산자는 -각각 하나 이상의 지정된 기능 집합을 늘리거나 줄입니다.


chcon: 파일 변경SELinux 보안 컨텍스트

용법:

    chcon [-u사용자] [-r역할] [-t유형]문서...

user또는 등의 SELinux 사용자여야 합니다 user_u.system_uroot

roleSELinux 역할입니다(항상 object_r파일용).

typeSELinux 주제 유형입니까?


chsmack: 변화스머커확장된 속성

SMACK은 단순화된 필수 액세스 제어 커널입니다.

용법:

    chsmack -a 문서

valueSMACK64확장된 파일 속성에 대해 SMACK 태그가 설정되어 있습니까?


세트리찰:다양한 액세스 제어 목록 변경

리차드이는 더 많은 고급 ACL을 추가하는 기능입니다.

현재 진행 중인 작업이므로 이에 대해 자세히 말씀드릴 수 없습니다. 나는 그것들을 사용하지 않았습니다.

이 질문도 참조하십시오기존의 "rwx" 및 POSIX ACL 외에 고급 파일 시스템 ACL이 있습니까? 그리고매뉴얼 페이지

답변2

높은 수준에서:

  • 지원되는 기본 파일 시스템 권한올리눅스 그리고 모두유닉스 친화적파일 시스템-rwxrwxrwx에 의해 처리되고 에 의해  chmod처리된 파일 시스템의 각 파일 또는 폴더와 연관된 소유자 및 그룹 식별자는 기본적으로 모두가 알고 있는 것입니다.chownchgrp
  • 확장된 파일 속성, 약칭 또는 로 알려져 있음속성. 이는 사용자가 파일을 파일 시스템에서 해석되지 않는 메타데이터와 연결할 수 있게 해주는 파일 시스템 기능입니다. 반면 일반 속성은 파일 시스템에 의해 엄격하게 정의된 목적을 갖습니다. 속성은 파일 및 디렉터리와 관련된 이름:값 쌍입니다. 프로세스와 관련된 환경 문자열입니다. 단순히 이 메타데이터를 다양한 파일/폴더로 설정하는 것과 관련된 몇 가지 특정 Linux 명령이 있습니다.
  • 보안이 강화된 Linux(일반적으로 다음과 같이 알려져 있습니다.SELinux). 바라보다 selinuxproject.org그리고위키피디아. 또한 AppArmor 등 SELinux에 대한 대안이 있다는 점도 알아두세요. 이 시점에서 MAC(Mandatory Access Control)을 수행하는 기능과 메커니즘을 제공하는 커널 모듈은 다음과 같습니다. SELinux는 xattr을 사용하여 파일 보안 레이블을 xattrs에 저장합니다.. 그리고 특정 SELinux 관련 명령이 있습니다.

기타 사항:

  • GNU/Linux의 시대와 버전은 xattr 사용 가능하고 기능적인 SELinux에 중요합니다.

  • 모든 파일 시스템이 지원되는 것은 아닙니다 xattr. 사용되는 Linux 배포판 및 버전(RHEL/SUSE/Debian, IRIX, Solaris, AIX, 1960s Unix)에 따라 개별적으로 조사하는 것이 가장 좋습니다.

  • 실제로 고유한 기본 파일/폴더 권한과 UID/GID 및 xattrs는 모든 것을 가능하게 합니다. SELinux는 xattrs를 사용하여 파일/폴더 보안 레이블을 저장합니다. SELinux를 사용하면 모든 하위 수준 작업이 xattrs에서 수행/정의됩니다. 당신의 사용. 따라서 고대 파일 시스템이 SELinux를 지원하지 않으면 xattrSELinux를 사용하지 않을 것입니다 .

  • SELinux(또는 AppArmor 또는 기타 커널 모듈)를 활성화하거나 비활성화할 수 있습니다.

  • Linux 버전에 따라 xattr특정 마운트된 파일 시스템에 대해 를 활성화하거나 비활성화할 수 있습니다. SLES 11에는 설치 시 루트 파일 시스템에서 사용할 수 없는 fstab마운트 user_xattr 옵션이 있었던 것으로 기억됩니다 xattr. 현재 RHEL/CentOS 7은 다음과 같습니다. xattr기본적으로 존재하며 삭제할 수 없습니다.

  • 를 실행할 때 ls -l이 이 표시되면 확장 파일 속성이 객체에 존재함을 나타냅니다 -rwxrwxrwx+.+

  • 액세스 제어 목록(ACL)은 객체에 연결된 권한 목록입니다. ACL은 객체에 대한 액세스 권한이 부여된 사용자 또는 시스템 프로세스와 해당 객체에 대해 허용되는 작업을 지정합니다.

  • CentOS 위키에서에 관한 기사SELinux:

    SELinux는 커널에 구현된 MAC 보안 메커니즘입니다. ...SELinux를 사용하지 않으면 파일 권한이나 ACL(액세스 제어 목록)과 같은 기존 임의 액세스 제어(DAC) 방법만 사용하여 사용자의 파일 액세스를 제어할 수 있습니다. 사용자와 프로그램 모두 다른 사람에게 안전하지 않은 파일 권한을 부여하거나 반대로 정상적인 작동에 필요하지 않은 시스템 부분에 대한 액세스 권한을 얻을 수 있습니다. ...기본적으로 기존 DAC 모델에는 루트와 사용자라는 두 가지 권한 수준이 있으며 최소 권한 모델을 적용하는 쉬운 방법은 없습니다. 루트로 시작된 많은 프로세스는 제한된 사용자로 실행되는 권한을 포기합니다.

    xattrLinux [커널]은 모든 것을 파일(블록 장치 또는 네트워크 포트)로 처리하므로  xattrSELinux를 사용하면 거의 모든 것에 태그를 지정하고 일종의 액세스 제어를 시행할 수 있으므로 s 및 ACL의 사용을 관점에서 살펴보는 것이 좋습니다 . 파일/폴더입니다. https://wiki.centos.org/HowTos/SELinux

  • xattr시스템과 파일 시스템은 물론 NFS 간에 데이터를 이동할 때 문제가 발생할 수 있습니다. 여기서 [최신] 시스템은 이전 시스템보다 더 포괄적인 지원을 제공하므로 xattr[그렇다면] 이러한 확장된 속성을 모두 인식하지 못할 수 있습니다. taron stuff를 사용 xattr하면 문제가 없지만 중요한 경우 다른 곳으로 이동하면 문제가 발생할 수 있습니다 xattr(예: Samba, Windows 10 NTFS 및 Linux ext3/4, btrfs, XFS 복사 사이). NAS(Network Attached Storage) 장치 간에 복사).

  • xattrs에 정의된 것을 통해 ACL을 시행하는 SELinux 또는 기타 메커니즘이 없는 경우 xattr이론적으로 s는 의미가 없으며 현 시점에서는 추가 수하물일 뿐이므로 제거하거나 제거할 수 있습니다.

  • 조심하세요장애를 입히다xattr파일 시스템 레이블이 누락된 경우 SELinux를 다시 변경하는 데 문제가 있었기 때문에 SELinux는 이제 RHEL/CentOS 7에 있습니다.구현하다또는용인;이 역시 Linux 버전과 xattrSELinux를 통해 사용되는 방식에 따라 다릅니다.

SELinux는 기본적으로 필수로 설정되어 있으므로 기본 Samba 공유는 RHEL/CentOS 7에서 작동하지 않습니다. SELinux는 허용할 때까지 모든 것을 거부하므로 SELinux를 비활성화하거나(불량) 허용으로 설정하십시오. SELinux를 적용한 상태로 두면 SELinux가 공유를 인식하고 허용할 수 있도록 Samba가 공유할 폴더를 확장 속성으로 표시해야 합니다. 따라서 SELinux가 모든 SELinux 명령을 시행하도록 하면 필요한 xattrs가 설정됩니다.

# from CentOS 7.6 /etc/samba/smb.conf.example

# Turn the samba_domain_controller Boolean on to allow a Samba PDC to use
# the useradd and groupadd family of binaries.
# Run the following command as the root user to turn this Boolean on:

setsebool -P samba_domain_controller on

# If you create a new directory, such as a new top-level directory, label it
# with samba_share_t so that SELinux allows Samba to read and write to it.
# Do not label system directories, such as /etc/ and /home/, with samba_share_t,
# as such directories should already have an SELinux label.


# the xattr having the name "samba_share_t" is labelled onto "/mydatashare"
# this xattr of syntax "samba_share_t" is recognized by an existing rule in SELinux
# if the folder does not have the xattr "samba_share_t" then the rule in SELinux
# (when enforced) will prevent access via Samba to the folder.

chcon -t samba_share_t /mydatashare

이 Samba 공유가 있는 Linux 시스템에서 SELinux를 추가로 사용하여 Samba 공유 아래의 파일/폴더에 제한을 적용할 수 있습니다(확장 속성 사용). 이러한 파일/폴더는 공유되므로 사용자는 일부 파일/폴더를 Windows 10 PC에 합법적으로 복사한 다음 다시 다시 복사하여 확장된 속성을 잃을 수 있습니다. 이제 해당 Linux 시스템에서 앞뒤로 복사한 후 xattr필요한 파일이 더 이상 존재하지 않기 때문에 SELinux는 해당 파일에 대한 액세스를 제한하고 사용자/관리자는 왜 뭔가가 작동했는지 궁금해하지만 그렇지 않습니다. 지금 작업하세요... SELinux를 설정하면 감사 로그에 s가 누락된 문제가 허용되고 인식되지만 , 올바른 s를 기반으로 보안을 강화하려는 경우 xattr사본 손실로 인한 것인지 직접적으로 나타내지는 않습니다 . 데이터 백업 및 복구도 고려해야 하며 UID/GID 외에 를 기억해야 하는 잠재적인 노력도 고려해야 합니다.xattrxattrxattr

답변3

chmod를 적극 추천합니다

$ chmod [옵션] [파일명]

$ chmod [옵션 1] [연산자] [옵션 2] [파일 이름]


수치 표현에는 다음과 같은 옵션이 있습니다.

"0"은 "권한 없음"을 의미합니다.

"1"은 "실행 권한"을 나타냅니다.

"2"는 "쓰기 권한"을 의미합니다.

"4"는 "읽기 권한"을 의미합니다.

기호 옵션:

"u"는 파일 소유자를 나타냅니다.

"g"는 그룹을 의미합니다.

"o"는 기타를 의미합니다

"a"는 모든 사용자를 소유자, 그룹 및 기타(ugo)로 의미합니다.

chmod 명령은 다음 연산자를 허용합니다.

"+": 이 연산자는 지정된 권한을 추가하는 데 사용됩니다.

"-": 이 연산자는 지정된 권한을 삭제하는 데 사용됩니다.

"=": 이 연산자는 모든 사용자에 대한 정확한 파일 권한을 정의하는 데 사용됩니다.

관련 정보