权限遮罩码,用于控制文件,文件夹的默认权限
文件默认权限: 666-umask
文件夹默认权限: 777-umask
管理员root: umask=022 文件默认权限644,文件夹755
普通用户: umask=002 文件默认权限664,文件夹775
通常,在类Unix操作系统上,文件和目录的所有权基于创建它们的用户的uid(user-id)和gid(group-id)。
启动进程时也会发生同样的情况:以启动这个进程的 用户标识和组标识运行,并具有相应的权限。 此行为可以通过使用特殊权限进行修改。
每个文件都有一个所有者, 表示该文件是谁创建的. 同时, 该文件还有一个组编号, 表示该文件所属的组, 一般就是文件所有者所在的组。
对于可执行文件, 在执行时, 通常情况下其权限是调用这个文件的用户的权限。Linux下/usr/bin/passwd命令可以修改密码,如果按照这个套路,那么普通用户是没办法修改自己密码的,但实际情况普通用户也可以修改自己的密码。这是怎么做到的呢?
解决上面问题引出setuid、setgid、sticky bit 这些只是标记位,不是指令
setuid位
但设置了setuid位时,前面表述的典型权限做法就会改变。对于可执行文件,在执行时,其权限不再是发起执行动作这个用户的权限,而是文件本身用户所具有的权限。例如,一个可执行文件属主是root,并且设置了setuid,那么普通用户也可以执行这个文件。某种程度上,使用不当会对系统安全有潜在风险。
Linux下的一个例子就是passwd命令
[root@51cto ~]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 30768 Feb 17 2012 /usr/bin/passwd