chmod u+s(转)

参看了 http://hi.baidu.com/hehongrong/item/b64a6d6b094cf634ac3e8382 里面说

 -s :在文件执行时把进程的属主或组ID置为该文件的文件属主。

这句话当时我看就有点误解

到底是谁设置成谁呢?

现在明白了,是进程的主变了,不是文件的主变

总之就是 进程的主临时改变了,变成了进程文件的主。

所以这样要求这个文件是exe的进程文件,不能是脚本。

其次,是临时变,就是在动态运行的过程变。

<权限范围>+<权限设置> 开启权限范围的文件或目录的该项权限设置。

<权限范围>-<权限设置> 关闭权限范围的文件或目录的该项权限设置。

<权限范围>=<权限设置> 指定权限范围的文件或目录的该项权限设置。

权限范围的表示法如下:

  u:User,即文件或目录的拥有者。

  g:Group,即文件或目录的所属群组。

  o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。

  a:All,即全部的用户,包含拥有者,所属群组以及其他用户。

权限设置的表示法如下:

-s :在文件执行时把进程的属主或组ID置为该文件的文件属主。

  -c : 若该档案权限确实已经更改,才显示其更改动作

  -f : 若该档案权限无法被更改也不要显示错误讯息

  -v : 显示权限变更的详细资料

  -R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)

如果是一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的用户具有的权限. 而setuid, setgid 可以来改变这种设置.

setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权

限, 从而可以更改用户的密码.

当其他用户执行oracle的sqlplus这个程序时,他的身份因这个程序暂时变成oracle(这句话也是指代不清,他的身份是谁的身份呢?)

  chmod u+s sqlplus

首先 sqlplus本来就属于oracle的,所以要说清 执行chmod u+s sqlplus实在非oracle用户环境地下执行。

这样才可以使得执行chmod命令的这个非oracle用户 对 sqlplus 拥有临时的oracle的权限。

上一篇:跟我从零基础学习Unity3D开发--资源打包篇(AssetBundle)


下一篇:[学习笔记]设计模式之Flyweight