Linux命令——umask、setuid、setgid、sticky bit、chmod、chown
umask
权限遮罩码,用于控制文件,文件夹的默认权限
文件默认权限: 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. root root Feb /usr/bin/passwd
怎样标识setuid位呢? 正如上面命令输出所示,setuid使用s表示,他取缔了原本x的位置。这表明x(可执行标记为)实际上已经被设置了。如果setuid或setgid被设置了,但是x(可执行标记位)没有被设置,会显示成大写字母S。对于没有设置x(可执行标记位)的情况,setuid和setgid是不会生效的。此外setuid对目录没有效果,只针对文件。
setgid位
不像setuid只对文件起作用。setgid对文件、目录都有效果。在上面那个/usr/bin/passwd例子中,当执行passwd这个命令的时候,其权限不再是发起执行动作这个用户属组的权限,而是passwd这个文件本身属组的权限。换句话说,当前进程的GID变成了passwd的GID,而不再是发起这个进程的GID。
在目录上使用时,setgid位会改变标准行为,目录内文件/目录的GID不再是创建者的GID,而是父目录本身的GID。 这通常用于简化文件共享(文件将由父目录GID内所有组成员修改)。 就像setuid一样,setgid位很容易被发现,例如:
ls -ld test
drwxrwsr-x. egdoc egdoc Nov : test
标准行为指什么?
谁创建的文件/目录,那么他的GID就是这个用户的GID
s标记位替换了属组那一坨的x标记为。注意这里是小写s
sticky位
sticky标记位(也可以理解成防删除位)以一种不同的方式工作,他对于文件没有效果。但用于一个目录时,这个目录下所有文件只可以被他的所有者修改。举个例子
[root@51cto ~]# ls -ld /tmp
drwxrwxrwt. root root Jun : /tmp
/tmp这个目录可以被系统上所有用户修改,但是加了sticky标价位,一个用户就不能去删除另一个用户的文件。
怎样判断一个目录下文件能不能被删除呢?
该文件的属主一帮都是rwx,如果属主都没有w,那就尴尬了。。。。自己不能删除自己创建的文件
该文件的属组如果有w,那么组内其他人也可以删除、修改这个文件。如果没有w,组内其他人便不能删除、修改这个文件,更甚至不能添加文件。在/tmp这个例子中,GID内用户,Others都有w权限,加上s标记为,就做到了防删除。你可以添加文件,但是不能删除文件。只有这个文件本身的owner才可以删除文件。
如何设置特殊标记位
chmod + 数字 或者 ugo/rwx
设置setgid位
$ chmod 2775 test
或者
$ chmod g+s test
两者等价
设置setuid位
$ chmod u+s file
设置sticky位
$ chmod o+t test
Linux命令——umask、setuid、setgid、sticky bit、chmod、chown的更多相关文章
- 五大权限:UGO权限、SetUID SetGID Sticky、ACL权限、chattr(文件系统级别的权限)、SELINUX
五大权限:UGO权限.SetUID SetGID Sticky.ACL权限.chattr(文件系统级别的权限).SELINUX ======================文件属性以及ugo权限= ...
- umask setuid setgid
cat /etc/bashrc if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ];#用户UI ...
- 关于文件目录等的特殊权限setuid, setgid , sticky chattr, lsattr
有三种特殊权限 总之, 设置这些特殊权限有两种方法, 一是使用 chmod ugo的方式, 另一个是 使用 数字的方式, 通常的读写执行 权限 是 3位 数字, 那么 特殊权限 就用 4位数字, 而且 ...
- Linux 命令 - umask: 显示或设置文件模式掩码值
umask 命令控制着创建文件时指定给文件的默认权限.它使用八进制表示法从文件模式属性中删除一个位掩码. 参见下面的例子: [huey@huey-K42JE cmdline]$ rm -f foo.t ...
- Linux命令 umask
umask: 文件预设权限 指定当前用户在创建文件或目录时的权限默认值. $ umask0002$ umask -Su=rwx,g=rwx,o=rx 创建文件时,预设没有x 权限,即只有rw 权限,最 ...
- Linux第四节 组管理、用户管理、权限管理 / chmod /chown / umask / vim
三期第三讲1.组管理/用户管理(重要文件系统会实时备份 file-) vim/etc/group: 组管理文件://组名:密码控位键:组id:成员 vim/etc/gshadow:组密码管理文件:// ...
- linux中权限管理命令(chmod/chown/chgrp/unmask)
目录 chmod chown chgrp umask chmod 解释 命令名称:chmod 命令英文原意:change the permissions mode of a file 命令所在路径:/ ...
- Linux命令:修改文件权限命令chmod、chgrp、chown详解
Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作. 文件或目录的访问权 限分为只读,只写和可执行三种.以文件为例,只读权限表示只允许读其内容,而 ...
- 每天一个linux命令(29)--Linux chmod命令
chmod 命令用于改变Linux 系统文件或目录的访问权限.用它控制文件或目录的访问权限.该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. Linux系统中 ...
随机推荐
- (二)第一个Servlet
一.预备知识 一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个 ...
- iOS的多线程技术
iOS的三种多线程技术 1.NSThread 每个NSThread对象对应一个线程,量级较轻(真正的多线程) 2.以下两点是苹果专门开发的“并发”技术,使得程序员可以不再去关心线程的具体使用问题 ØN ...
- node更改默认npm阿里地址
npm config set registry https://registry.npm.taobao.orgsudo npm install cnpm -g --registry=https://r ...
- Egret入门学习日记 --- 第十三篇(书中 5.2~5.3节 内容)
第十三篇(书中 5.2~5.3节 内容) 写日记已经十天多了,我发现越到后面,我书写的方式越来越程序化. 感觉渐渐失去了人类所谓的感情似的. 不过,没想到的是,书中的内容,很少出现了错误,我一路过来到 ...
- linux centos7 开启 mysql 3306 端口 外网访问 的实践
第〇步:思路 3306 端口能否被外网访问,主要要考虑: (1)mysql的3306 端口是否开启?是否没有更改端口号? (2)mysql 是否允许3306 被外网访问? (3)linux 是否已经开 ...
- Hive 数据类型及操作数据库
3. Hive 数据类型 3.1 基本数据类型 Hive 数据类型 Java 数据类型 长度 TINYINT byte 1 byte 有符号整数 SMALINT short 2 byte 有符号整数 ...
- [转帖]Intel要提供2.5G的消费级以太网 价格2.4刀
千兆网已成过去!Intel将全面普及2.5Gbps以太网 https://news.cnblogs.com/n/641736/ 硬件发展突飞猛进 投递人 itwriter 发布于 2019-10-02 ...
- Python 解LeetCode:606 Construct String from Binary Tree
题目描述:用先序遍历的方式把二叉树转换成字符串,其中结点用括号分割,具体示例见题目链接 思路: 先序遍历,先把根结点的值转化成字符串,然后递归的把左右子树的值转化成字符串 把1中的根结点和左右子结点的 ...
- Win10 自定义鼠标右键菜单
1. 点击文件鼠标右键显示软件 1.1 步骤 win+R输入regedit进入注册表 定位到HKEY_CLASSES_ROOT\*\shell下 在shell创建一个你想要的右键文件 例如:Kinok ...
- Laravel-admin图片本地上传配置问题
先打开config/filesystems.php 修改添加其中的 'admin' => [ 'driver' => 'local', 'root' => public_path(' ...