나는 오래 전에 Unix에서 다음과 같은 사실을 배웠습니다 chmod
. Unix에서 권한을 설정하는 전통적인 방법(그리고 프로그램이 권한을 얻도록 허용하는 방법은 setuid 및 setgid를 사용하는 것입니다).
나는 최근에 GNU/Linux에서 몇 가지 새로운 명령을 발견했습니다:
setfacl
기존 비트ugo:rwx
합계를 확장합니다.t
chmod
setcap
ug:s
보다 세분화된 권한 제어를 제공하는 것보다 낫습니다chmod
.chattr
파일에 대한 추가 제어를 허용합니다(약간의 하이브리드).
다른 사람이 있나요?
답변1
chmod
:파일 모드 비트 변경
사용법(8진수 모드):
chmod옥탈 모드 문서...
사용법(기호 모드):
chmod [인용하다][[운영자][모델]]문서...
references
ugoa
어떤 사용자가 접근할 수 있는지 지정하는 문자의 조합입니다.files
수정됩니다:
u
그것을 소유한 사용자g
파일 그룹의 다른 사용자o
파일 그룹에 없는 다른 사용자a
모든 사용자들
생략하면 기본값은 모든 사용자로 설정되지만 허용된 권한만 수정합니다 umask
.
operator
다음 캐릭터 중 하나입니다 +-=
.
+
지정된 파일 모드 비트를 각 파일의 기존 파일 모드 비트에 추가합니다.file
-
각 파일의 기존 파일 모드 비트에서 지정된 파일 모드 비트를 제거합니다.file
=
명시적으로 지정하지 않는 한 디렉터리에 설정된setuid
합계 비트를 제외하고 지정된 비트를 추가하고 지정되지 않은 비트를 제거합니다 .setgid
mode
rwxXst
수정될 권한 비트를 지정하는 문자 조합으로 구성됩니다 .
r
읽다w
쓰다x
(소문자X
) 실행(또는 디렉터리 검색)X
(대문자) 파일이 디렉터리이거나 특정 사용자 클래스에 대해 실행 비트가 설정된 경우에만 실행/트래버스합니다.s
setuid 또는 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
.
attribute
acdeijmstuxACDFPST
속성에 해당하는 문자의 조합입니다 .
a
추가만c
압축d
덤프 없음e
범위 형식i
불변j
데이터 로그m
압축하지 마세요s
안전 삭제t
꼬리 병합 없음u
삭제할 수 없습니다.x
파일에 직접 액세스A
atime
업데이트 없음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
다른 사람의 권한
perms
rwxX
권한에 해당하는 문자 조합입니다 .
r
읽다w
쓰다x
구현하다X
파일이 디렉터리이거나 이미 일부 사용자에 대한 실행 권한이 있는 경우에만 실행
또는,perms
권한 집합을 나타내는 8진수(-)일 수 있습니다 0
.7
setcap
: 변화파일 기능
용법:
세트 캡용량 조항 문서
ㅏcapability-clause
쉼표로 구분된 목록으로 구성됩니다.능력이름 뒤에는 연산자 플래그 쌍 목록이 옵니다.
사용 가능한 연산자는 =
, +
및 입니다 -
. 사용 가능한 플래그는 및 이며 e
, 이는 다음에 해당합니다.i
p
효과적인,상속 가능한그리고허용하다능력치 설정.
운영자는 =
지정된 기능 세트를 발전시키고 다른 기능 세트를 재설정합니다. 연산자에 플래그가 지정되지 않으면 =
모든 기능 세트가 재설정됩니다. +
및 연산자는 -
각각 하나 이상의 지정된 기능 집합을 늘리거나 줄입니다.
chcon
: 파일 변경SELinux 보안 컨텍스트
용법:
chcon [-u사용자] [-r역할] [-t유형]문서...
user
또는 등의 SELinux 사용자여야 합니다 user_u
.system_u
root
role
SELinux 역할입니다(항상 object_r
파일용).
type
SELinux 주제 유형입니까?
chsmack
: 변화스머커확장된 속성
SMACK은 단순화된 필수 액세스 제어 커널입니다.
용법:
chsmack -a값 문서
value
SMACK64
확장된 파일 속성에 대해 SMACK 태그가 설정되어 있습니까?
세트리찰:다양한 액세스 제어 목록 변경
리차드이는 더 많은 고급 ACL을 추가하는 기능입니다.
현재 진행 중인 작업이므로 이에 대해 자세히 말씀드릴 수 없습니다. 나는 그것들을 사용하지 않았습니다.
이 질문도 참조하십시오기존의 "rwx" 및 POSIX ACL 외에 고급 파일 시스템 ACL이 있습니까? 그리고매뉴얼 페이지
답변2
높은 수준에서:
- 지원되는 기본 파일 시스템 권한올리눅스
그리고 모두유닉스 친화적파일 시스템
-rwxrwxrwx
에 의해 처리되고 에 의해chmod
처리된 파일 시스템의 각 파일 또는 폴더와 연관된 소유자 및 그룹 식별자는 기본적으로 모두가 알고 있는 것입니다.chown
chgrp
- 확장된 파일 속성, 약칭 또는 로 알려져 있음속성. 이는 사용자가 파일을 파일 시스템에서 해석되지 않는 메타데이터와 연결할 수 있게 해주는 파일 시스템 기능입니다. 반면 일반 속성은 파일 시스템에 의해 엄격하게 정의된 목적을 갖습니다. 속성은 파일 및 디렉터리와 관련된 이름:값 쌍입니다. 프로세스와 관련된 환경 문자열입니다. 단순히 이 메타데이터를 다양한 파일/폴더로 설정하는 것과 관련된 몇 가지 특정 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 및
xattr
s는 모든 것을 가능하게 합니다. SELinux는xattr
s를 사용하여 파일/폴더 보안 레이블을 저장합니다. SELinux를 사용하면 모든 하위 수준 작업이xattr
s에서 수행/정의됩니다. 당신의 사용. 따라서 고대 파일 시스템이 SELinux를 지원하지 않으면xattr
SELinux를 사용하지 않을 것입니다 .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 모델에는 루트와 사용자라는 두 가지 권한 수준이 있으며 최소 권한 모델을 적용하는 쉬운 방법은 없습니다. 루트로 시작된 많은 프로세스는 제한된 사용자로 실행되는 권한을 포기합니다.
xattr
Linux [커널]은 모든 것을 파일(블록 장치 또는 네트워크 포트)로 처리하므로xattr
SELinux를 사용하면 거의 모든 것에 태그를 지정하고 일종의 액세스 제어를 시행할 수 있으므로 s 및 ACL의 사용을 관점에서 살펴보는 것이 좋습니다 . 파일/폴더입니다. https://wiki.centos.org/HowTos/SELinuxxattr
시스템과 파일 시스템은 물론 NFS 간에 데이터를 이동할 때 문제가 발생할 수 있습니다. 여기서 [최신] 시스템은 이전 시스템보다 더 포괄적인 지원을 제공하므로xattr
[그렇다면] 이러한 확장된 속성을 모두 인식하지 못할 수 있습니다.tar
on stuff를 사용xattr
하면 문제가 없지만 중요한 경우 다른 곳으로 이동하면 문제가 발생할 수 있습니다xattr
(예: Samba, Windows 10 NTFS 및 Linux ext3/4, btrfs, XFS 복사 사이). NAS(Network Attached Storage) 장치 간에 복사).xattr
s에 정의된 것을 통해 ACL을 시행하는 SELinux 또는 기타 메커니즘이 없는 경우xattr
이론적으로 s는 의미가 없으며 현 시점에서는 추가 수하물일 뿐이므로 제거하거나 제거할 수 있습니다.조심하세요장애를 입히다
xattr
파일 시스템 레이블이 누락된 경우 SELinux를 다시 변경하는 데 문제가 있었기 때문에 SELinux는 이제 RHEL/CentOS 7에 있습니다.구현하다또는용인;이 역시 Linux 버전과xattr
SELinux를 통해 사용되는 방식에 따라 다릅니다.
SELinux는 기본적으로 필수로 설정되어 있으므로 기본 Samba 공유는 RHEL/CentOS 7에서 작동하지 않습니다. SELinux는 허용할 때까지 모든 것을 거부하므로 SELinux를 비활성화하거나(불량) 허용으로 설정하십시오. SELinux를 적용한 상태로 두면 SELinux가 공유를 인식하고 허용할 수 있도록 Samba가 공유할 폴더를 확장 속성으로 표시해야 합니다. 따라서 SELinux가 모든 SELinux 명령을 시행하도록 하면 필요한 xattr
s가 설정됩니다.
# 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 외에 를 기억해야 하는 잠재적인 노력도 고려해야 합니다.xattr
xattr
xattr
답변3
chmod를 적극 추천합니다
$ chmod [옵션] [파일명]
$ chmod [옵션 1] [연산자] [옵션 2] [파일 이름]
수치 표현에는 다음과 같은 옵션이 있습니다.
"0"은 "권한 없음"을 의미합니다.
"1"은 "실행 권한"을 나타냅니다.
"2"는 "쓰기 권한"을 의미합니다.
"4"는 "읽기 권한"을 의미합니다.
기호 옵션:
"u"는 파일 소유자를 나타냅니다.
"g"는 그룹을 의미합니다.
"o"는 기타를 의미합니다
"a"는 모든 사용자를 소유자, 그룹 및 기타(ugo)로 의미합니다.
chmod 명령은 다음 연산자를 허용합니다.
"+": 이 연산자는 지정된 권한을 추가하는 데 사용됩니다.
"-": 이 연산자는 지정된 권한을 삭제하는 데 사용됩니다.
"=": 이 연산자는 모든 사용자에 대한 정확한 파일 권한을 정의하는 데 사용됩니다.