linux文件权限chmod、chown、umask、setfacl、chattr

    技术2024-06-04  87

    文件权限和用户权限

    权限问题chmodSUIDSBITchgrpchownumaskACLchattrlsattr用户权限

    权限问题

    rwx-rw-r 764 r--r--r 444 rw------- 600 rwxrwxrwx 777 r read 读取 4 w write 写入2 x execute 执行 1 权限 9位 分为3组 rwx rwx rwx 1 第一组 代表文件所有者具有的权限 owner 第二组 代表文件所有者 所在组的权限 group 第三组 代表其他用户的权限 others

    chmod

    chmod 变更文件或目录权限 chmod 777 file.c #对所有权限组添加权限 等价:chmod a=rwx file.c chmod ug=rwx,o=x file.c #拥有者和群组读写执行权限,其他为执行 chmod 771 file.c u 文件或目录的拥有者 g 文件或目录的所属群组 o 文件或目录的其它拥有者 a 全部,含拥有者,群组,其它拥有者 将文件设为所有人都可读取 chmod ugo+r file.txt #与下面表达式等价 chmod a+r file.txt 将file1.txt和file2.txt文件拥有者和所属群组可写入,其他人不可写 chmod ug+w,0-w file1.txt file2.txt 参数: -R recursive递归处理,指定目录下所有文件及子目录

    SUID

    SUID:继承二进制程序所有者权限(权限前加4) -rwsr-xr-x #chmod 4755 filename s权限添加到二进制程序文件,添加到目录无意义 chmod 0755 file 删除文件s权限,无法删除目录的SUID ----------. 1 root root /etc/shadow -rwsr-xr-x. 1 root root /usr/bin/passwd 具有S权限的passwd命令可以被普通用户执行继承passwd权限修改shadow SGID:继承二进制程序所有组的权限,作用于组时新建文件继承目录所属组 -rwxr-sr-x #chmod 2755 filename s权限出现在所属组x位置上

    SBIT

    SBIT:(sticky bit)作用于目录,此目录文件只能被所有者删除 rwxr-xr-t #chmod 1755 filename t权限出现在其他者的x权限上 4 SUID =u+s 2 GUID=g+s 1 SBIT=o+t

    chgrp

    chgrp 更改所属组 chgrp -R weng /home/text #递归

    chown

    chown更改文档的所有者和所属组,使用权限为root,一般使用者没有权限 格式:chown [选项] 文档 -c 作用与-v相似,只传回修改的部分 -f 不显示错误信息 -h 只对符号链接的文件做修改,不更改其他任何文件 -R 递归处理,对子目录一并处理 -v 显示指令执行过程 chown -R 用户名称 文件或目录 chown test:root test.txt #将文件test.txt属主改为test,属组为root,之间用”:”或者”.”连接 chown test.root test.txt chown .root test.txt #只更改属组 chown root. test.txt #只更改属主

    umask

    创建目录或文件的默认权限,系统默认值可在/etc/profile文件中设置 #umask #查看权限掩码 umask值 目录权限 文件权限 022 755 644 027 750 640 002 775 664 006 771 660 007 770 660 umask值为权限反码,7为权限数字,目录权限为755,对应umask值为022(7-7=0,7-5=2,7-5=2) umask值对应的文件权限为目录权限去掉执行权限

    ACL

    ACL权限,独立于u,g,o的rwx的权限之外的具体权限设置,可以针对单一用户,单一文件或目录来进行rwx权限控制,对于需要特殊权限的使用设置,如,某一个文件不让单一某个用户访问 -rwxrwx---+ #+表示ACL权限 setfacl :设置acl权限命令 -m 配置acl参数给文件或目录,不能与-x合用 -x 删除acl参数,不能与-m合用 -b --remove-all 删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留 -k --remove-default 删除缺省的acl规则。如果没有缺省规则,将不提示 -n --no-mask 不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定 --mask 重新计算有效权限,即使ACL mask被明确指定 -d --default 设定默认的acl规则 --restore=file 从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行 --test 测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出 -R --recursive 递归的对所有文件及目录进行操作 -L --logical 跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录 -P --physical 跳过所有符号链接,包括符号链接文件 --version 输出setfacl的版本号并退出 --help 输出帮助信息 -- 标识命令行参数结束,其后的所有参数都将被认为是文件名 - 如果文件名是-,则setfacl将从标准输入读取文件名 设置acl权限 #setfacl -m u:test:rw- file 给test用户向file文件增加读写acl规则 指定用户和组删除ACL权限 setfacl -x u: 用户名 文件名 setfacl -x g: 组名 文件名 setfacl -b 文件名 删除文件所有ACL权限 getfacl 查看指定文件目录的ACL权限 # file: note.txt # owner: root # group: root user::rw- group::r-- other::r--

    rwxrwxr–. 权限后面的点权限,关于selinux安全上下文,具体请查看selinux相关设置

    chattr

    chattr命令用来修改文件系统的权限属性,只有root用户可以使用,凌驾于rwx之上授权 chattr [选项] 文件或目录名 + 增加权限 - 删除权限 = 等于权限 i 对文件设置i属性,不允许对文件删除、改名、添加和修改数据,对目录设置i属性,只能修改目录下文件的数据,不允许建立和删除文件 a 对文件设置a属性,只能在文件中增加数据,但是不能删除和修改数据,对目录设置a属性,只允许在目录中建立和修改文件,不允许删除文件 e linux中大部分文件默认拥有e属性,表示文件使用ext文件系统进行存储,而且不 能使用chattr -e取消e属性 chattr +i test.txt #增加i属性,root不能强制删除

    lsattr

    lsattr显示文件系统属性 lsattr [选项] -a 显示所有文件和目录 -d 目标为目录,仅列出目录本身属性,不列出文件属性

    用户权限

    sudo 以其它用户身份执行root指令 配置文件/etc/sudoers中指定用户就能执行sudo指令 usersname ALL=(ALL) ALL 用户 机器 用户 命令 test ALL=(ALL) /usr/bin/systemctl start mysqld,/usr/bin/systemctl restart mysqld, 多个命令使用","逗号分割 username用户可以在所有机器上运行所有的命令 test ALL=(root) /usr/sbin/mysql test可在所有机器上以root用户运行mysql命令,只能用wq!强制保存退出 使用:#sudo command -u 后面接切换的用户,无此选项则代表身份为root -b 将后续指令放入背景中,自行运行 sudo -u name mkdir /home/source #以name用户身份建立一个文档
    Processed: 0.011, SQL: 9