且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Linux权限管理总结(1)--基础权限

更新时间:2022-09-12 20:44:44

   玩Linux的人都知道,Linux的安全性要比Windows高很多,而这主要是因为Linux中的安全权限机制,Linux中的用户和文件是组成系统的重点,而Linux的主要哲学思想是一切皆文件。Linux中的用户有用户的权限,分为普通用户和超级用户。文件有文件的权限,分别为读写执行权限。因为Linux中一切皆文件,对文件的操作就可以直接的操作系统,很多Linux高级服务器是没有图形界面的,都是对文件来直接操作来控制服务器,对文件的操作要通过用户来执行,而普通用户和超级用户的执行权限是不同的。

1.普通用户和超级用户权限的不同

    超级用户是系统的所有者,可以对系统做任何的操作,甚至是删除系统的根目录。而 普通用户则有很大的限制,例如不能修改系统关键配置文件,想查看其他用户的文件则需要相应的权限 不能安装软件,甚至关机关机指令(shutdown或poweroff)都需要以root身份执行(sudo)。

2.理解“ls -l”

    我们来看一看我们的 ls -l 输出,检查一下这个清单的第一栏:

    $ ls -l /bin/bash
       -rwxr-xr-x    1 root     wheel      430540 Dec 23 18:27 /bin/bash
    第一个字段 -rwxr-xr-x 包含该特殊文件的权限的符号表示。

    该字段中的首字符(-)指定该文件的类型,本例中它是一个常规文件。其它可能的首字符还有: 
    “d”目录
    “l”符号链接
    “c”字符专门设备文件
    “b”块专门设备文件
    “p”先进先出
    “s”套接字

3.文件权限rwx

       r 表示允许读(查看文件中的数据),w 表示允许写(修改文件以及删除),x 表示允许“执行”(运行程序)。

    通过rwx的不同组合实现文件的不同权限, 

     第一组rwx:文件所有者的权限是读、写和执行

     第二组rw-:与文件所有者同一组的用户的权限是读、写但不能执行

     第三组r--:不与文件所有者同组的其他用户的权限是读不能写和执行

     也可用数字表示为:r=4w=2x=1  因此rwx=4+2+1=7

4.umask值

       当我们登录系统之后创建一个文件总是有一个默认权限的,那么这个权限是怎么来的呢?这就是umask干的事情。umask设置了用户创建文件的默认 权限,它与chmod的效果刚好相反,umask设置的是权限“补码”, 而chmod设置的是文件权限码。一般可在/etc/profile、/etc/bashrc、$ [HOME]/.bash_profile、 $[HOME]/.profile或$[HOME]/.bashrc中设置umask值。具体取决于 Linux发行版,比如Fedora19下要更改自己的umask值,在$[HOME]/.profile或$[HOME]/.bash_profile 下的增加umask的值覆盖不了/etc/profile中的配置值的,必须在$[HOME]/.bashrc下增加umask值才可以永久定义自己的umask值。

   

  •     如何计算umask值

       umask 命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最 大值分别是6。系统不允许你在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来 说,umask中各个数字最大可以到7。


    例如,对于umask值0 0 2,相应的文件和目录缺省创建权限是什么呢?

第一步,我们首先写下目录具有全部权限的模式,即777 (所有用户都具有读、写和执行权限)。

第二步,在下面一行按照umask值写下相应的位,在本例中是0 0 2。

第三步,在接下来的一行中记下上面两行中没有匹配的位。这就是目录的缺省创建权限。

稍加练习就能够记住这种方法。

第四步,对于文件来说,在创建时不能具有执行权限,只要拿掉相应的执行权限比特即可。

这就是上面的例子, 其中umask值为0 0 2:

1) 文件的最大权限 rwx rwx rwx (777)

2) umask值为0 0 2 --- --- -w-

3) 目录权限 rwx rwx r-x (775) 这就是目录创建缺省权限

4) 文件权限 rw- rw- r-- (664) 这就是文件创建缺省权限

下面是另外一个例子,假设这次u m a s k值为0 2 2:

1) 文件的最大权限 rwx rwx rwx (777)

2 ) u m a s k值为0 2 2 --- -w- -w-

3) 目录权限 rwx r-x r-x (755) 这就是目录创建缺省权限

4) 文件权限 rw- r-- r-- (644) 这就是文件创建缺省权限

5.改文件权限命令chmod

chmod [who] [+ | - | =] [mode] 文件名?

命令中各选项的含义为:

操作对象who可是下述字母中的任一个或他们的组合:

u 表示“用户(user)”,即文件或目录的所有者。

g 表示“同组(group)用户”,即和文件属主有相同组ID的所有用户。

o 表示“其他(others)用户”。

a 表示“所有(all)用户”。他是系统默认值。

操作符号是:

+ 添加某个权限。

- 取消某个权限。

= 赋予给定权限并取消其他所有权限(如果有的话)。

设置mode所表示的权限可用下述字母的任意组合:

r 可读。

w 可写。

x 可执行。

X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。

s 在文件执行时把进程的属主或组ID置为该文件的文件属主。方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。

t 保存程式的文本到交换设备上。

u 和文件属主拥有相同的权限。

g 和和文件属主同组的用户拥有相同的权限。

o 和其他用户拥有相同的权限。


例子:

chmod 755 abc:赋予abc权限rwxr-xr-x

chmod u=rwxg=rxo=rx abc:同上u=用户权限,g=组权限,o=不同组其他用户权限

chmod u-xg+w abc:给abc去除用户执行的权限,增加组写的权限

chmod a+r abc:给所有用户添加读的权限


本文转自willis_sun 51CTO博客,原文链接:http://blog.51cto.com/willis/1845983,如需转载请自行联系原作者