在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. Hadoop Mapreduce分区、分组、二次排序过程详解[转]

    原文地址:Hadoop Mapreduce分区.分组.二次排序过程详解[转]作者: 徐海蛟 教学用途 1.MapReduce中数据流动   (1)最简单的过程:  map - reduce   (2) ...

  2. KMP算法代码

    以下是本人根据上一篇博客随笔http://www.cnblogs.com/jiayouwyhit/p/3251832.html,所写的KMP算法代码(暂未优化),个人认为在基于上一篇博客的基础上,代码 ...

  3. [转载]const_cast

     1. 一个经典实例 /* 用法:const_cast<type_id> (expression) 该运算符用来修改类型的const或volatile属性.除了const 或volatil ...

  4. hdu 5446 Unknown Treasure Lucas定理+中国剩余定理

    Unknown Treasure Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Other ...

  5. text()、html() 以及 val()的区别

    text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - 设置或返回表单字段的值 下面的例子演示如何通过 text().htm ...

  6. 分享Kali Linux 2016.2第42周镜像文件

    分享Kali Linux 2016.2第42周镜像文件Kali Linux官方在10月16日发布Kali Linux 2016.2的第42周镜像文件.这一次不再像上几次,推迟提供32位镜像文件,而是同 ...

  7. CSS3实现动画

    CSS3实现一个简单的动画 可以改变任意多的样式任意多的次数,用百分比来规定变化发生的时间,或用关键词 "from" 和 "to",等同于 0% 和 100%. ...

  8. HDU4971 A simple brute force problem.(强连通分量缩点 + 最大权闭合子图)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4971 Description There's a company with several ...

  9. 【POJ3237】Tree 树链剖分+线段树

    [POJ3237]Tree Description You are given a tree with N nodes. The tree's nodes are numbered 1 through ...

  10. 【BZOJ3531】[Sdoi2014]旅行 树链剖分+动态开点线段树

    [BZOJ3531][Sdoi2014]旅行 Description S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天 ...