Linux权限管理基本权限Linux文件(包括目录)是通过相对权限来管理的,其中相对指的是相对文件所有者,权限分为文件所有者权限(用户),所有者在同一group为用户权限(group)和其他用户权限(other),通过ll命令,可以查看用户对文件的操作权限。权限分为r:读权限,w:写权限,x:执行权限。例如:ll命令显示的文件的权限为:-rwxr-xr,为了方便说明,如图所示。第9位:文件类型,-表示普通文件,d表示目录,其他类型如软链接。第6-8位:文件所有者权限第3-5位:同组用户的文件所有者权限第0-2位:其他用户权限。每种类型的用户权限都可以描述为一个3位二进制数。为了更直观的描述,借用了一张网上的图。r为第2位,十进制值为4w为第1位,十进制值为2x为第0位,十进制值为1,对应的十进制值为:rwx=bin(111)=4+2+1=7r-x=bin(101)=4+0+1=5r--=bin(100)=4+0+0=4rwx文件和目录的权限含义:PermissionabbreviationPermissionsforordinaryfilesPermissionsfordirectoriesReadReadr查看文件内容列出目录内容(ls)WriteWritew编辑文件内容添加、删除、移动(重命名)目录中的文件作为程序执行eXecutex将文件运行到目录中(cd)umaskumask(用户文件创建模式掩码)为用户创建文件时的掩码是创建文件和目录时控制默认权限的基础。如果不设置umask,文件默认权限为0666,目录默认权限为0777。umask的作用是在创建文件和目录时,使用“默认权限-umask值”为创建的对象设置权限.大多数Linux中默认的umask是022,创建文件的默认权限是0666-022=0644。创建目录的默认权限是0777-022=0755SUID,SGID和StickyLinux还有其他三个与权限SUDI相关的属性:设置用户ID,控制位:4SGID:设置组ID,控制位:2Sticky:控制位:1SUID该属性只对可执行文件有效(Shell除外),当执行具有SUID权限的程序时,程序将以文件所有者的权限,而不是启动程序的用户的权限。例如,如果一个程序的所有者是root,那么当一个普通用户执行该文件时,该程序将以root权限运行,该程序可以访问只有root用户才能访问的文件,这为程序运行带来了方便在一些特殊场景下,但也存在一定的安全隐患。程序运行时,Linux中有两组用户权限,一组是启动程序的用户权限,另一组是执行程序的用户权限。说明如下:effectiveuserid:进程访问文件权限相关的UID,简称euideffectivegroupid:进程访问文件权限相关的GID,简称egidrealuserid:登录时创建进程的用户的UIDtothesystem,缩写为ruidrealgroupid:登录系统时创建进程的用户的GID,缩写为rgidsavedsetuserid:copiedfromeuidsavedsetgroupid:copiedfromegid该属性的典型场景是/usr/bin/passwd用户用来修改密码的程序。用户修改密码时,需要写入/etc/passwd和/etc/shadow数据,而这两个文件只有root才能写入。通过为/usr/bin/passwd文件设置SUID,当普通用户执行该文件修改密码时,进程的euid为root,将获得root用户权限。将新密码写入上述配置文件。SUDI用s表示当程序设置SUID时,文件所有者权限的x位会变为s,例如通过ll查看/usr/bin/passwd文件的权限为-rwsr-xr-x。SGID对于可执行文件,该属性的作用类似于SUID。使程序运行的权限是组用户权限。设置SGID后,组用户权限的x会变为s。对于目录,设置该属性后,在该目录下创建的文件组将与该目录相同。Sticky该属性只对目录有效。具有Sticky属性的目录中的文件只能由目录的所有者删除和重命名。其他用户没有此权限,可以防止文件被误删除。系统中的/tmp目录使用了这个Attributes。设置Sticky后,该目录其他用户权限的x位会变为t。通过ll命令查看/tmp目录的权限是drwxrwxrwt。由于SUID、SGID、Sticky都是在x位上设置的,当对应的x位没有设置时,就会显示大写的S、S、T。chown&chmodchownchown是changeowner的缩写,用来设置文件的所有者和所属组。只有root用户和文件的所有者才能执行此命令。命令格式如下:chown[-cfhvR][--help][--version]user[:group]file...参数说明如下:user:newfileownernameoruserIDgroup:newfileall组名或组ID-c:显示变化部分的信息-f:忽略错误信息-h:修复符号链接-v:显示详细处理信息-R:处理指定目录及其子目录下的所有文件--help:显示辅助说明--version:显示版本修改文件的拥有者和归属组命令示例如下:chownuser1:group1file1.txtchmodchmod是changemode的缩写,用于设置权限的文件。只有root用户和文件所有者才能执行此命令。命令格式如下:chmod[-cfvR][--help][--version]modefile...参数说明如下:-c:如果确实改变了文件权限,则改变动作为displayed-f:如果文件权限不能改变,不显示错误信息-v:显示权限改变的详细信息-R:对当前目录下的所有文件和子目录做同样的权限改变(即改变一个一种递归的方式)--help:显示辅助指令--version:显示版本模式是权限设置参数,linux提供了两种设置方式:用户对象+操作方式+操作权限组合方式八进制直接设置方式用户对象+操作mode+操作权限位模式该模式下权限设置参数格式如下[ugoa][[+-=][rwxXst]...][,...][ugoa]表示要操作的用户对象u表示文件所有者g表示同组用户的所有者o表示其他用户a表示所有用户[+-=]表示操作方式+表示增加权限-表示取消权限=表示唯一设置的权限[rwxXst]表示要操作的权限r表示读权限w表示写权限x表示执行权限X只有当文件是目录文件,或者只有其他类型的用户有可执行权限时,设置文件权限为可执行文件s设置SUID或SGIDt设置粘滞位命令示例:为所有用户添加对file1.txt的读取权限chmodugo+rfile1.txtchmoda+rfile1.txt设置当前目录下的所有文件和子目录对任何人都可读0-7的八进制数表示一组用户的权限,如rwx=bin(111)=4+2+1=7rwxr-x--x=*754,意思是:文件属主同rwx=7组用户r-x=5其他用户x--=1这种模式不能用+-为用户增量设置权限,但需要一次全部设置。命令示例:设置file1.txt的权限为rwxr-x--xchmod751file1.txt另外SUID(4)、SGID(2)、Sticky(1)可以用第4个八进制表示(4thIf该位没有设置,可以省略),如果你给一个文件加上SUDI权限,有rwxr-xr--权限,那么把第4位设置为4,命令是:chmod4754file1.txt
