linux,扩展权限的使用,以及如何使用扩展权限建立共享工作目录
2011-07-31 21:44
731 查看
文件权限管理 扩展:
文件一般有属主,属组的属性
权限一般有可读,可写,可执行
但是你看到这个文件的那个“s”位了吧,这是一个文件的扩展权限
即使一个文件的SUID
SUID:set UID 如果一个文件有SUID的权限时,不是以用户本身的权限来运行,
而是以该命令本身属主的权限来运行的,例如普通用户在修改自己的密码的时候,修改密码
不需要修改/etc/shdow文件,但是普通用户是没有权限的,但是用户使用passwd这个命令
修改自身密码的时候还是可以修改,这就是因为“s”位的作用,这就给了普通用户
root的权限来修改/etc/shdow
【不能把脚本的权限设置“s”位,以免发生错误造成损失】
要给文件添加这个权限使用命令
去除这个权限
有的时候加完权限你会发现会有一个“s”或者是“S”,
原来有执行权限“x”的是“s”,原来没有执行权限的是“S”
有了SUID,当然你也会想到有没有SGID呢?
答案是有的,我们先假设一种情景,
有一个工作组developer group:
有三个用户:dev1,dev2,dev3
他们都没有root权限,但是此时想实现在这个工作目录下实现共享,那该怎么做呢?
此时SGID就派上用处了
下面我们来探讨一下如何实先在一个工作目录下实现三个或者三个以上的用户之间能
够共享彼此的文件
我们知道当用户创建文件以后,这个文件都会有一个属组和属主,通常情况下刚建立
的文件属主是这个用户本身,属组是这个用户的组,如果修改属主来实现以上功能
很显然,不态可能,那么就通过修改属组来实现,但是修改属组后这个文件还是单一
的属于某个用户,还是不能实现以上功能,
现在我们来模拟一下这个环境
先建立一个工公共的工作目录就叫/peoject
创建三个用户redhat,gentoo,ubantu
修改工作目录的基本组是不能实现以上功能的,但是我们在已开学习的时候,就知道
还可以我这个工作目录指定一个相同的其他组,假设这个其他组叫devgrp
我们将这个文件添加到属组属性修改一下
修改完成你会看到如下结果
此时各个用户对此目录下的文件只能有读得权限,要想有写的权限就应该为此目录
修改权限
此时你进入此目录以后就是不可以创建自己的文件的,因为你还不属于这个组
此时将这个三个用户都添加到这个附加组命令如下:
此时你就可以在这个目录下创建文件了,还可以查看其他用户的文件
但是此时你对其他用户的文件只有读得权限,因为其他用户的文件属主还是属于其用户
本身的,若想有修改其他普通用户的文件,就要加“SGID”了,命令:
此时你在这个公共的工作目录下创建文件 修改文件都是可以的
当然你会发现,你也能删除其他用户的文件,这样当然很不好了
此时又一个扩展权限隆重登场了
那就是最后的粘滞位,就是sticky:冒险位,粘滞位,
只能删除自己的,不能修改别人的
这个权限的出现有效缓解了以上的问题,使用命令
chmod o+t /project
就实现了此控制功能,不但实现了共享,还实现了 控制
由以上可知,又有三个权限为出现了
SUID , SGID ,STICKY
由此类推可以用二进制数字表示其权限就是
000 --- 换算成十进制数就是:0
001 --t 1
010 -s- 2
011 -st 3
100 s-- 4
101 s-t 5
110 ss- 6
111 sst 7
那么于此就可以这样给文件修改权限了
chmod 2755 file 表示增加SGID位
文件一般有属主,属组的属性
权限一般有可读,可写,可执行
[root@server56 ~]# ls -l `which passwd` -rwsr-xr-x 1 root root 22960 2006-07-17 /usr/bin/passwd
但是你看到这个文件的那个“s”位了吧,这是一个文件的扩展权限
即使一个文件的SUID
SUID:set UID 如果一个文件有SUID的权限时,不是以用户本身的权限来运行,
而是以该命令本身属主的权限来运行的,例如普通用户在修改自己的密码的时候,修改密码
不需要修改/etc/shdow文件,但是普通用户是没有权限的,但是用户使用passwd这个命令
修改自身密码的时候还是可以修改,这就是因为“s”位的作用,这就给了普通用户
root的权限来修改/etc/shdow
【不能把脚本的权限设置“s”位,以免发生错误造成损失】
要给文件添加这个权限使用命令
chmod u+s FILE[例如a.sh]
去除这个权限
chmod u-s FILE[例如a.sh]
有的时候加完权限你会发现会有一个“s”或者是“S”,
原来有执行权限“x”的是“s”,原来没有执行权限的是“S”
有了SUID,当然你也会想到有没有SGID呢?
答案是有的,我们先假设一种情景,
有一个工作组developer group:
有三个用户:dev1,dev2,dev3
他们都没有root权限,但是此时想实现在这个工作目录下实现共享,那该怎么做呢?
此时SGID就派上用处了
下面我们来探讨一下如何实先在一个工作目录下实现三个或者三个以上的用户之间能
够共享彼此的文件
我们知道当用户创建文件以后,这个文件都会有一个属组和属主,通常情况下刚建立
的文件属主是这个用户本身,属组是这个用户的组,如果修改属主来实现以上功能
很显然,不态可能,那么就通过修改属组来实现,但是修改属组后这个文件还是单一
的属于某个用户,还是不能实现以上功能,
现在我们来模拟一下这个环境
先建立一个工公共的工作目录就叫/peoject
创建三个用户redhat,gentoo,ubantu
修改工作目录的基本组是不能实现以上功能的,但是我们在已开学习的时候,就知道
还可以我这个工作目录指定一个相同的其他组,假设这个其他组叫devgrp
我们将这个文件添加到属组属性修改一下
chown :devgrp ./project
修改完成你会看到如下结果
drwxrw-r-t 2 root devgrp 4096 07-31 19:07 project
此时各个用户对此目录下的文件只能有读得权限,要想有写的权限就应该为此目录
修改权限
chmod -R g+w ./project drwxrw-r-t 2 root devgrp 4096 07-31 19:07 project
此时你进入此目录以后就是不可以创建自己的文件的,因为你还不属于这个组
此时将这个三个用户都添加到这个附加组命令如下:
usermod -a -G devgrp redhat usermod -a -G devgrp ubantu usermod -a -G devgrp centos
此时你就可以在这个目录下创建文件了,还可以查看其他用户的文件
但是此时你对其他用户的文件只有读得权限,因为其他用户的文件属主还是属于其用户
本身的,若想有修改其他普通用户的文件,就要加“SGID”了,命令:
chmod g+s /project drwxrwsr-t 2 root devgrp 4096 07-31 19:07 project
此时你在这个公共的工作目录下创建文件 修改文件都是可以的
当然你会发现,你也能删除其他用户的文件,这样当然很不好了
此时又一个扩展权限隆重登场了
那就是最后的粘滞位,就是sticky:冒险位,粘滞位,
只能删除自己的,不能修改别人的
这个权限的出现有效缓解了以上的问题,使用命令
chmod o+t /project
就实现了此控制功能,不但实现了共享,还实现了 控制
由以上可知,又有三个权限为出现了
SUID , SGID ,STICKY
由此类推可以用二进制数字表示其权限就是
000 --- 换算成十进制数就是:0
001 --t 1
010 -s- 2
011 -st 3
100 s-- 4
101 s-t 5
110 ss- 6
111 sst 7
那么于此就可以这样给文件修改权限了
chmod 2755 file 表示增加SGID位
相关文章推荐
- 关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(1)
- linux安装分区以及挂载目录的使用来实现ssh公钥的共享
- 5、linux安装分区以及挂载目录的使用来实现ssh公钥的共享
- 如何设置linux的文件和目录的权限及stat命令的使用
- 关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(2)
- Linux中,如何实现文档共享以及权限设定
- 如何使用VMWare共享Win7中的文件夹,对应Linux中的哪个目录下面?
- 如何在linux系统下挂接(mount)光盘镜像文件、移动硬盘、U盘以及Windows网络共享和UNIX
- linux 下一级目录结构以及使用规则
- Linux统计查找文件以及建立目录
- linux如何挂载windows共享目录
- Linux编译多个不同目录下的文件以及静态库、动态库的使用
- 在Windows中如何用SSH_Client_Shell与Linux实现通讯以及共享
- C++文件如何在linux下生成动态库So,以及如何使用这个动态库
- Linux中进入一个目录需要的权限,以及创建文件
- Linux系统下如何使用autofs挂载NFS共享
- linux基础之使用异步 I/O 大大提高应用程序的性能 学习何时以及如何使用 POSIX AIO API
- 使用Linux strace命令来跟踪 bdump目录的x权限丢失时sqlplus / as sysdba 的输出
- VMware Workstation 无法连接到虚拟机。请确保您有权限运行该程序、访问改程序使用的所有目录以及访问所有临时文件目录。
- linux下如何统计一个目录下的文件个数以及代码总行数的命令