在很久以前的Unix上,我了解了chmod:在Unix上设置权限的传统方法(以及使用setuid,setgid允许程序获得特权)。
我最近在GNU / Linux上发现了一些更新的命令:
setfacl扩展了传统的ugo:rwx位和的t位chmod。setcap比的ug:s位提供更多的细粒度控制chmod。chattr允许文件的某些其他控件(混合使用)。
还有其他吗?
在很久以前的Unix上,我了解了chmod:在Unix上设置权限的传统方法(以及使用setuid,setgid允许程序获得特权)。
我最近在GNU / Linux上发现了一些更新的命令:
setfacl扩展了传统的ugo:rwx位和的t位chmod。setcap比的ug:s位提供更多的细粒度控制chmod。chattr 允许文件的某些其他控件(混合使用)。还有其他吗?
Answers:
chmod:更改文件模式位用法(八进制模式):
chmod <octal-mode> files...
用法(符号模式):
chmod <references><operator><modes> files..
references是字母的组合ugoa,用于指定files将修改哪个用户的访问权限:
u 拥有它的用户 gfile的组中的其他用户o 不在文件组中的其他用户a 所有用户
如果省略,则默认为所有用户使用,但仅umask修改允许的权限。
operator是以下字符之一+-=:
+ 将指定的文件模式位添加到每个文件的现有文件模式位 file- 将指定的文件模式位删除为每个文件的现有文件模式位 file=除非明确指定,否则将添加指定的位并删除未指定的位(为目录设置的setuid和setgid位除外)。mode由字母的组合组成,这些字母rwxXst指定要修改的权限位:
r 读 w 写 x 执行(或搜索目录)X 仅当文件是目录或已经为某些用户设置了执行位时才执行/搜索ssetuid或setgid(取决于指定的references)t 限制删除标志或粘性位或者,mode可以由字母之一组成ugo,在这种情况下,模式对应于当前授予所有者的权限(u),file组的成员(g)或上述两个类别中的用户的权限(o)。
chmod解释:setfacl)
rwx —读取(r),写入(w)和执行/交叉(x)权限。
#!)以及其他可执行文件。s和t—目录上的粘滞位(t)和setgid(s)
s —可执行文件上的setuid,setgid。
setcap一个更现代的方式来做到这一点。chown chgrp:chattr:更改文件属性用法:
chattr <operator><attribute> files...
operator是字符之一+-=:* +将所选的属性是对现有attributes的的files
* -中删除所选attributes
* =覆盖当前组属性中的文件具有与指定的attributes。
attribute是字母的组合acdeijstuADST,对应于以下属性:
a 仅追加 c 压缩的d 没有转储e 范围格式i 一成不变的j 数据日记s 安全删除t 没有尾巴合并u 无法删除A没有atime更新D 同步目录更新S 同步更新T 目录层次结构的顶部setfattr:更改扩展文件属性用法(设置属性):
setfattr -n <name> -v <value> files...
用法(删除):
setfattr -x <name> files...
name 是要设置或删除的扩展属性的名称
value 是扩展属性的新值
setfacl:更改文件访问控制列表用法:
setfacl <option> [default:][<target>:][<param>][:<perms>] files...
option 必须包含以下内容之一:
--set 设置文件或目录的ACL,替换之前的ACL-m| --modify修改文件或目录的ACL-x| --remove 删除文件或目录的ACL条目
target是字母之一ugmo(或下面显示的较长形式):
u,users由标识的命名用户的权限,如果省略param,则默认为文件所有者uid
g,group由标识的命名组的权限,如果省略则param默认为拥有组uidm,mask有效权利面具o,other其他人的权限
perms是字母的组合rwxX,对应于权限:
r 读
w 写x 执行X 仅当文件是目录或已经对某些用户具有执行权限时才执行
或者,perms可以是指示权限集的八进制数字(0- 7)。
setcap:更改文件功能用法:
setcap <capability-clause> file
A capability-clause由以逗号分隔的功能名称列表和后面的操作员标记对列表组成。
可用的运营商=,+和-。可用标志是e,i并且p与有效,可继承和允许的功能集相对应。
该=运营商将提高特定功能集和重置等。如果未与=操作员一起给出任何标志,则将重置所有功能集。在+和-运营商将分别升高或降低一个或多个指定的功能集。
chcon:更改文件SELinux安全上下文用法:
chcon [-u <user>] [-r <role>] [-t <type>] files...
用户是SELinux的用户,例如user_u,system_u或root。
角色是SELinux角色(始终object_r用于文件)
type是SELinux主题类型
chsmack:更改SMACK扩展属性用法:
chsmack -a <value> file
value是要为SMACK64扩展文件属性设置的SMACK标签
richacl的功能将添加更多高级ACL。
目前尚在进行中,因此无法向您详细介绍。我没有用过。
从高层次:
-rwxrwxrwx由处理chmod,与所有者和组标识符绑定到每一文件或文件夹上由处理文件系统沿chown和chgrp; 基本上每个人都知道这部分。其他要点:
user_xattr我可以选择在安装时在根文件系统上不提供xattr。我认为现在使用RHEL / CentOS 7,默认情况下存在xattr,而您不能拥有它。lsif 时-rwxrwxrwx+,+表明该对象上存在扩展文件属性。tar在xattr 上使用东西,如果它停留在该系统上没问题,但是如果xattr很重要(例如samba并在win10 ntfs和linux ext3 / 4,btrfs,xfs之间复制),则返回到其他地方可能会出现问题。在网络连接的存储设备之间来回移动)xattrs中定义的selinux或其他机制来强制ACL ,则xattrs从理论上讲就没有任何意义,可以被丢弃或剥离,因为在那一点上,这只是多余的负担。基本的Samba共享在RHEL / CentOS 7中不起作用...因为默认情况下selinux设置为强制执行;在您允许之前,selinux拒绝了所有内容,因此请禁用selinux(错误)或将其设置为宽松。如果将selinux保留为强制执行,则必须使用扩展属性将要samba共享的文件夹标记为扩展名,以便selinux识别并允许共享。因此,如果保留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:
# this is an selinux command, not
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共享下的文件/文件夹实施限制(使用任何扩展属性)。由于这些文件/文件夹被共享,因此用户可以合法地将某些文件/文件夹复制到他们的win10 pc,然后再复制回去,从而失去扩展属性。现在,在该来回复制之后,在该linux系统上,selinux将限制对所述文件的访问,因为不再存在必需的xattr,并且用户/管理员大为惊讶,为什么现在事情不能正常工作了……设置selinux允许并认识到xattr在审计日志中显示丢失s 的问题,但这不会直接表明这是由于来回副本丢失了xattr的结果。还应考虑数据备份和还原以及需要记住的潜在工作xattr如果要基于正确的xattrs 强制执行安全性,则除了uid / gid之外还包括s。
chmod