在LINUX中我们创建文件或文件夹的时候系统总会为我们创建的对象分配一个默认的权限,那么今天我们就了解一下这个默认权限是怎么得来的?以及我们如何来改变系统的默认权限设置?

在LINUX系统中我们打开每一个终端都会拥有一个umask属性,这个umask属性使用数字方式来表示,如:002或022,这个属性也是用来确定新建文件夹、新建文件的默认权限的。需要注意的是普通用户和root用户的umask值有可能是不同的,所以普通用户和root用户下创建对象的默认权限也有可能是不同的。

[oracle@std ~]$ umask

[oracle@std ~]$ su -
Password:
[root@std ~]# umask

备注:可以看到umask值为4为,其中最前面一位表示特殊权限为

文件夹和文件是用不同的计算方式来确定默认权限:

目录的默认权限是:777-umask

文件的默认权限是:666-umask

通常情况下在LINUX中,普通用户的umask值为002,root用户的默认umask值为022

新建目录的默认权限是:777-umask

新建文件的默认权限是:666-umask

利用上面的公式,我们也就知道了----

对于普通用户来说:----------------------------

新建目录的默认权限是:777-002=775

新建文件的默认权限是:666-002=664

对于root用户来说:-----------------------------

新建目录的默认权限是:777-022=755

新建文件的默认权限是:666-022=644

[root@std ~]# umask

[root@std ~]# mkdir test
[root@std ~]# ls -ld test
drwxr-xr-x root root Jan : test
[root@std ~]# touch aa
[root@std ~]# ls -l aa
-rw-r--r-- root root Jan : aa

可以通过umask命令查看/更改umask的值,这样的更改只是对当前终端有效,对其他终端是没有效果的,我们可以把这个命令写到当前用户的.bash_profile中

[oracle@std ~]$ umask

[oracle@std ~]$ umask
[oracle@std ~]$ umask

LINUX的特殊权限 setuid/setgid/sticky

我们知道在LINUX中文件都有所有者及所有组,文件的所有者表示了该文件是谁创建的,文件的所有组表示这个文件所有者所属的组。结合文件或目录的权限位-rwxrwxrwx就能够知道这个用户及属于该组里的用户对这个文件或目录能够拥有什么样的具体权限。了解这个我们就来说说LINUX中的特殊权限。

setuid:具有setuid权限的文件能够以文件的所属用户身份执行,而非执行文件的用户

[root@std ~]# which passwd
/usr/bin/passwd
[root@std ~]# ll /usr/bin/passwd
-rwsr-xr-x root root Jul /usr/bin/passwd
[root@std ~]# ll /etc/shadow
-r-------- root root Dec /etc/shadow

例如上面我们看到passwd命令是用来更改用户密码的,普通用户也可以使用这个命令更改自己的密码,
该命令需要把密码保存在/etc/shadow文件中,可以看到/etc/shadow的权限是除了root用户其他任何用户
都无权限写的。那么一个普通用户如何怎么还可能使用passwd命令更改密码那,。。。原因就在于/usr/bin/passwd
文件具有一个setuid权限,如上,-rwsr-xr-x 1 root root 22960 Jul 17  2006 /usr/bin/passwd
注意setuid权限只对文件有效,对目录没效

setgid:具有setgid权限的文件以文件所属组运行,该目录中创建的任何新文件的所属组与该目录的所属组相同

sticky: 对目录拥有写入权限的用户仅可以删除其拥有的文件,无法删除其他用户所拥有的文件。

例如在tmp文件里,所有用户都有读写权限,但用户只能删除属于自己的文件,删除不了别的用户的文件

[root@std ~]# ll -ld /tmp
drwxrwxrwt root root Jan : /tmp
[root@std ~]# ll /tmp
total
-rw-r----- oracle oinstall Jan : cpuinfo.txt
drwx------ oracle oinstall Jan : gconfd-oracle
-rw-r----- oracle oinstall Jan : glibc.txt
drwx------ oracle oinstall Sep : keyring-fNMrwn
drwx------ oracle oinstall Aug : keyring-g5tA5I
drwx------ oracle oinstall Sep : keyring-GbCSBP
drwx------ oracle oinstall Nov : keyring-IbMKsk
drwx------ oracle oinstall Sep : keyring-VXqxii
-rw-r----- oracle oinstall Jan : LinuxVendor_output.txt
srwxr-xr-x oracle oinstall Jan : mapping-oracle
srwxr-xr-x root root Oct : mapping-root
drwxrwx--- oracle oinstall Jan : OraInstall2015--15_04--22PM
drwxrwx--- oracle oinstall Jan : OraInstall2015--15_04--21PM
drwxrwx--- root root Jan : OraInstall2015--15_04--48PM
drwxr-xr-x root root Jan : OraInstall2015--15_04--59PM
drwxr-xr-x root root Jan : OraInstall2015--15_04--29PM
drwxr-xr-x root root Jan : OraInstall2015--15_04--27PM
drwxrwx--- oracle oinstall Jan : OraInstall2015--15_04--38PM
drwxrwx--- oracle oinstall Jan : OraInstall2015--16_10--44AM
-rw-r----- oracle oinstall Jan : pkginfo.txt
srw------- oracle oinstall Jan : scim-panel-socket:-oracle
srw------- root root Oct : scim-panel-socket:-root
-rw-r----- oracle oinstall Jan : swapinfo.txt
-rw-r----- oracle oinstall Jan : tmpFileKernelParms.txt
drwxrwxrwt root root Jan : VMwareDnD
drwx------ oracle oinstall Jan : vmware-oracle
drwxr-xr-x root root Jan : vmware-root
drwx------ root root Jan : vmware-root-

设置setuid/setgid/sticky权限可以通过chmod命令:

--用权限位表示
chmod u+s aa -- 为aa文件加上setuid标志. (setuid 只对文件有效)
chmod g+s test -- 为test目录加上setgid标志 (setgid 只对目录有效)
chmod o+t aa -- 为aa文件加上sticky标志 (sticky只对文件有效)

[root@std ~]# ll aa
-rw-r--r-- root root Jan : aa
[root@std ~]# chmod u+s aa
[root@std ~]# ll aa
-rwSr--r-- root root Jan : aa
[root@std ~]# ll -ld test
drwxr-xr-x root root Jan : test
[root@std ~]# chmod g+s test
[root@std ~]# ll -ld test
drwxr-sr-x root root Jan : test
[root@std ~]# chmod o+t aa
[root@std ~]# ll aa
-rwSr--r-T root root Jan : aa

--用数字位表示

使用八进制方式在原先的数字前加一个数字,三个权限所代表的进制数与一般权限的方式类似,如下:

suid   guid    stick bit

1        1          1

所以这一组八进制数字三位的意义如:

suid的二进制串为:100,换算十进制为:4

guid的二进制串为:010,换算:2

stick bit 二进制串:001,换算:1

chmod 4755 aa -- 为aa文件加上setuid标志. (setuid 只对文件有效)

chmod 2755 test -- 为test目录加上setgid标志 (setgid 只对目录有效)

chmod 1755 aa -- 为aa文件加上sticky标志 (sticky只对文件有效)

[root@std ~]# rm -rf aa test
[root@std ~]# touch aa
[root@std ~]# ll aa
-rw-r--r-- root root Jan : aa
[root@std ~]# chmod aa
[root@std ~]# ll aa
-rwsr-xr-x root root Jan : aa
[root@std ~]# mkdir test
[root@std ~]# ll -ld test
drwxr-xr-x root root Jan : test
[root@std ~]# chmod test
[root@std ~]# ll -ld test
drwxr-sr-x root root Jan : test
[root@std ~]# chmod aa
[root@std ~]# ll aa
-rwxr-xr-t root root Jan : aa

通过两次测试我们发现原来的执行标志x没有了且两次测试权限位有大小写区别。这是因为系统是这样规定的,
如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)

Linux权限扩展的更多相关文章

  1. Linux权限操作 [转]

    Linux权限操作 本文内容来自<鸟哥linux私房菜>读后个人做的笔记,该书实为学习linux的很好入门教材 一.文件属性 ls ls -al列出所有的档案属性 ls是List的意思 档 ...

  2. Linux权限管理(week1_day5)--技术流ken

    权限概述 Linux系统一般将文件可存/取访问的身份分为3个类别:owner(拥有者).group(和所有者同组的用户).others(其他人,除了所有者,除了同组的用户以及除了超级管理员),且3种身 ...

  3. 末学者笔记--Linux权限管理

    一.权限概述 Linux系统一般将文件可存/取访问的身份分为3个类别:owner(拥有者).group(和所有者同组的用户).others(其他人,除了所有者,除了同组的用户以及除了超级管理员),且3 ...

  4. Linux快捷键 Linux权限

    第1章 回顾昨天内容 1.1 取出网卡ip地址 取出文件权限 1.2 awk '找谁{干啥}'  awk 'NR==2{print $4}' 1.3 系统时间 [root@oldboyedu-40-n ...

  5. linux权限详解

    一个用户.一个组 我们来看一看 Linux 权限和所有权模型.我们已经看到每个文件属于一个用户和一个组.这正是 Linux 中权限模型的核心.您可以在 ls -l 清单中查看用户和组: $ ls -l ...

  6. 如何去掉drwxr-xr-x@中的@符号Linux文件扩展信息

    如何去掉drwxr-xr-x@中的@符号Linux文件扩展信息ls -lart drwxrwxrwx@ 10 rlanffy staff 340B 3 6 2015 files-rwxrwxrwx@ ...

  7. Linux权限管理(用户、组、文件管理)

    一. Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示. 1. 文件查看类命令cat,tac, head, tail, more, less, ls ,file: -ls : l ...

  8. 看完这篇 Linux 权限后,通透了!

    我们在使用 Linux 的过程中,或多或少都会遇到一些关于使用者和群组的问题,比如最常见的你想要在某个路径下执行某个指令,会经常出现这个错误提示 . permission denied 反正我大概率见 ...

  9. Linux—权限管理

    Linux 权限管理 1.权限简介 Linux权限是操作系统用来限制对资源访问的机制,权限一般分为读.写.执行.系统中每个文件都拥有特定的权限:属主.属组以及其他人,通过这样的机制来限制哪些用户或用户 ...

随机推荐

  1. Linux学习笔记(1)Linux虚拟机安装过程中的知识点及常用管理工具

    1. VMware的相关知识 (1)建议的VMware的配置: CPU 主频1GHz以上 内存 1GB以上 硬盘 分区空闲空间8GB以上 (2)VMware创建快照 快照的作用是保存虚拟机的现有状态, ...

  2. 【J2EE入门】13个规范

    看过了j2ee教学视频,真的让我痛彻心扉,那叫痛并快乐着,痛是因为看了这么长时间,自己只知道了13个规范的概念:同样,快乐也正是因为我知道了13个规范的概念,接下来就是逐项实践的学习. 看了教学视频, ...

  3. static之用法

    本文转载于http://www.cnblogs.com/stoneJin/archive/2011/09/21/2183313.html 在C语言中,static的字面意思很容易把我们导入歧途,其实它 ...

  4. RxJava

    Grokking RxJava, Part 1: The Basics Grokking RxJava, Part 2: Operator, Operator Grokking RxJava, Par ...

  5. express-7 请求和响应对象(2)

    获取更多信息 如果正在寻找某些功能,首先要查看Express的API文档 如果需要的信息没在文档中,有时就不得不深入研究Express源码; 下面是Express源码的路径说明 lib/applica ...

  6. 转载:Robotium之Android控件定位实践和建议(Appium/UIAutomator姊妹篇)

    来源于:http://blog.csdn.net/zhubaitian/article/details/39803857 1. 背景 为保持这个系列的一致性,我们继续用SDK自带的NotePad实例应 ...

  7. Python基础9- 字典

    #coding=utf8#字典由键和对应的值组成(键值对)--哈希表,字典元素也可以为空 dict1 = {'name':'kaly','age':20,'sex':'male'}dict2 = {} ...

  8. Shell 编程基础之括号的作用

    一.小括号() 单小括号 命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必 ...

  9. 数据仓库原理<2>:数据仓库系统的体系结构

    1. 引言 本篇主要讲述数据仓库系统的体系结构与组成要素.数据集市与数据仓库之间的关系.元数据的定义与作用. 在上一篇,笔者介绍了数据仓库的定义: "数据仓库是一个面向主题的.集成的.不可更 ...

  10. List<子类>转List<父类>遇到的问题

    public class A{ } public class B extends A { } 一个方法中如下定义: public List<A> funName(List<A> ...