100个linux命令(3)-权限管理

时间:2022-06-17
本文章向大家介绍100个linux命令(3)-权限管理,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

命令篇

40.chmod-修改权限

能够修改权限的只有文件所有者和超级管理员。

(1)使用数值方式修改

chmod 755 file

(2)使用字符方式修改

文件权限附属在文件所有者 u,文件所属组 g 和其他用户o 上。使用字符修改权限需要指明操作谁的权限,另外还要使用"+"或"-"指定增加权限还是删除权限,也可以使用"="。

chmod u+rx filechmod g-x filechmod [a]+rx filechmod o=g file

chmod -R g+w,o+w directory

选项

-R:递归修改

41.chgrp-更改文件(目录)所属组

更改文件所属组的前提:组需要已经存在。

对于链接文件,修改组的作用对象是链接源文件,而非链接文件本身。

chgrp group path/to/filechgrp -R group /path/to/folder

chgrp --reference=/path/to/refer_file /path/to/file

42.chown-修改文件所有者和所属组

对于链接文件而言,默认不会穿过链接修改源文件,而是修改链接文件本身。

修改文件属主:

chown user path/to/file

修改文件属主和属组:

chown user:group path/to/filechown user.group path/to/file

修改文件属组:

chown :group path/to/filechown .group path/to/file

引用某文件得所有者和属组得值作为新文件得所有者和属组

chown --reference=path/to/rfile path/to/file

修改目录和其中的文件所有者和属组

chown -R user path/to/folder

穿过链接文件修改源文件的所有者和属组

chown -H user.group paht/to/link

原理篇

文件的权限

对于文件(目录),其拥有所有者(u)、所属组(g)和其他人(o),具体分为读权限、写权限和执行权限。

对于文件:

  • r:读权限,可以使用 `cat` 等命令查看文件内容。读权限是一个文件的基本权限,如果没有读权限,则文件的一切操作都受限
  • w:写权限,可以编辑文件
  • x:执行权限,文件可由特定的解释器解释并执行

对于目录:

  • r:可以对目录执行`ls`命令列出目录中的内容。读权限是文件的基本权限,没有读权限,则目录的一切操作都会被限制
  • w:可以对目录进行创建或删除文件和子目录
  • x:可以进入目录,可以使用 `ls -l`查看文件的详细信息。没有执行权限仅能查看到目录中的文件类型和文件名。

普通文件的默认权限是644,没有执行权限。目录的默认权限755,必须有执行权限,不然无法进入目录。链接文件的默认权限是 777。默认文件的权限设置方法可以通过`umask`值修改。

权限的表示

权限可以使用数字或者字符表示。

权限

字符表示

数值表示(八进制)

读权限

r

4

写权限

w

2

执行权限

x

1

无权限

-

0

如:rwxrw-r--的数值表示是764;755的字符表示是 rwxr-xr-x

权限的本质(待更新)

umask

umask 值用于设置用户在创建文件时的默认权限,对于root(实际是 UID < 200 )用户,系统默认的 umask 值时022;对于普通用户和系统用户,系统默认的 umask 值时002。

用户

umask

root(uid < 200)

022

系统和普通用户

002

umask 默认写在`/etc/profile`和`/etc/bashrc`两个环境配置文件中

umask 配置文件

相关配置选项如下:

if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
       umask 002
    else
       umask 022
fi

使用`umask`命令可以查看当前用户的 umask 值:

umask命令

使用`umask num`可以临时修改 umask 值,一般情况下不会永久修改 umask 的默认值,如果需要修改,则根据需求情况修改/etc/profile或/etc/bashrc或~/bashrc或~/.bash_profile文件。

当用户创建一个目录时,目录的默认权限是`777-umask`,如果普通用户就是777-002=775,root 用户就是777-022=755。

当用户创建一个文件时,默认情况下都不允许计算出现可执行的权限。

  • 如果 umask 的三位数值都是偶数:666-umask,普通用户666-002=664,root 用户666-022=644
  • 如果 umask 的某一位是奇数:666-umask 后在奇数位上加一,666-021=645+001=646
umask是奇数的情况

文件的扩展 ACL 权限

文件的 owner/group/others 的权限是文件的基本 ACL。

扩展 ACL 是一种特殊权限,它是文件系统上的功能,用于解决单个用户权限的问题。扩展 ACL 可以针对单一使用者、单一文件或目录里的默认权限进行设定。

扩展 ACL 是文件系统的功能,且工作在内核,默认在 ext4/xfs 上都已经默认开启。

(待更新)

文件的隐藏属性

chatter 用于设置文件的隐藏属性,lsattr 用户查看文件隐藏属性。

一般用法:chattr [+|-|=] i 文件或目录

参数 i:文件将被锁定,不能向其中增删改内容,也不能删除修改文件等各种动作。只有 root 才能设置。

参数 a:文件只能追加内容,不能删除数据以及打开文件后的任何编辑命令。

(1)对/etc/shadow 文件设置 i 属性,任何用户包括 root 将不能修改密码,也不能创建用户

chattr +i /etc/shadow
lsattr /etc/shadow

(2)删除隐藏属性

chattr -i /etc/shadow

suid/sgid/sbit

suid 只针对可执行文件,即二进制文件。它的作用是对某个命令(可执行文件)授予所有者的权限,命令执行完成权限失效。一般提权为 root 权限。

例如/etc/shadow 文件所有人都没有权限(root 除外),其他用户连看都不允许。

/etc/shadow

但用户可以修改自己的登录密码,就是由 suid 控制的。

suid 的表示

其中"s"权限就是 suid,它出现在所有者位置上,其他用户执行 passwd 命令时,会暂时拥有所有者位的 rwx 权限,也就是 root 的权限,所以能向/etc/shadows 写入数据。

suid 必须与 x 配合,如果没有 x 的配合,则该 suid 是空 suid,仍然没有执行命令的权限,空 suid权限使用大写"S

"表示。数字4代表 suid,如4755。

sgid针对二进制文件和目录。

  • 针对二进制文件时,权限升级为命令的所属组权限。
  • 针对目录时,目录中所建立的文件或子目录的组将继承默认父目录组,其本质还是提升为目录所属组的权限。此时目录应该要有rx权限,普通用户才能进入目录,如果普通用户有w权限,新建的文件和目录则以父目录组为默认组。

以2代表sgid,如2755,和suid组合如6755。

sbit只对目录有效。对目录设置sbit,将使得目录里的文件只有所有者能删除,即使其他用户在此目录上有rwx权限,即使是root用户。

以1代表sbit。

suid/sgid/sbit的标志位都作用在x位,当原来的x位有x权限时,这些权限位则为s/s/t,如果没有x权限,则变为S/S/T。例如,/tmp目录的权限有个t位,使得该目录里的文件只有其所有者本身能删除。

参考链接

http://www.cnblogs.com/f-ck-need-u/p/7011971.html