在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. lr中switch的应用

    Action() { char *time; int i,j,length; time=lr_eval_string("{testtime}"); lr_error_message ...

  2. ps命令使用 进程查看

    ps命令是Process Status的缩写 用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命 ...

  3. html php 重定向 跳转 刷新

    1秒后跳转 法一: <!DOCTYPE HTML> <html> <head>     <meta http-equiv="refresh" ...

  4. css -- 高度相等的列 -- 3列高度相等

    <div class="wrapper"> <div class="box"> <h1>wo shi hao ren< ...

  5. DIjkstra(反向边) POJ 3268 Silver Cow Party || POJ 1511 Invitation Cards

    题目传送门 1 2 题意:有向图,所有点先走到x点,在从x点返回,问其中最大的某点最短路程 分析:对图正反都跑一次最短路,开两个数组记录x到其余点的距离,这样就能求出来的最短路以及回去的最短路. PO ...

  6. Java的集合类

    转自:Q.Mr的博客 http://www.cnblogs.com/zrtqsk/p/3472258.html (本人第一次写博客,部分内容有参照李刚老师的疯狂java系列图书,如有遗漏错误,请多指教 ...

  7. ACM 阶乘之和

    阶乘之和 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 给你一个非负数整数n,判断n是不是一些数(这些数不允许重复使用,且为正数)的阶乘之和,如9=1!+2!+3! ...

  8. 【转载】LoadRunner11下载以及详细破解说明

    前期准备:LoadRunner11 下载请猛戳这里 传送门LoadRunner破解文件 下载请猛戳这里 传送门LoadRunner注册表清理工具 下载请猛戳这里 传送门 LoadRunner11破解方 ...

  9. jQuery自定义滚动条样式插件mCustomScrollbar

    如果你构建一个很有特色和创意的网页,那么肯定希望定义网页中的滚动条样式,这方面的 jQuery 插件比较不错的,有两个:jScrollPane 和 mCustomScrollbar. 关于 jScro ...

  10. 【BZOJ】2879: [Noi2012]美食节

    题意 \(m\)个厨师,\(n\)种菜,每种菜需要做\(p_i\)份,每个厨师做第\(i\)种菜用时\(t_{i, j}\).一个厨师做完一道菜才能做下一道.每份菜的时间是这个厨师做完这道菜的用时加上 ...