发布时间:2014-09-05 17:00:47作者:知识屋
接触linux一段时间了,有个权限问题让我一直郁闷。网上也没找到(估计是关键字不对),就是这个0777,最前面的0是什么意思。最近看到一本书(Linux与unix shell编程指南),终于找到答案了。
先说一下777什么意思吧,linux下文件权限分为所属用户权限、所属组权限和其他权限。
每一个又分为r(读)w(写)x(可执行)。如果你在linux中运行 ls -l就会显示权限如:
Java代码
-rwxr-xr-x 1 root root 12 09-02 15:21 my_test.sh
“-”表示文件类型不用管。第一个rwx是所属用户的权限,表示所属用户(root)对本文件可读(r)可写(w)可执行(x)。第二个”-rx“表示属于同一组的用户的权限可读(r)不可写(-)可执行(x)。第三个表示其他用户的权限可读不可写可执行。
这些数字就分别对应针对不用用户的权限。第一个7表示第一个rwx,当然第二个就表示第二个,第三个就表示第三个。
下面就说说7表示什么权限
7换成2进制就是 111,这样就对了,正好对应rwx。当然都知道1表示true,所以,7的权限就是rwx了,如果上面的my_test.sh改成777的话,ls -l 那就显示:
Java代码
-rwxrwxrwx 1 root root 12 09-02 15:21 my_test.sh
反过来,你知道上面的my_test.sh 的权限用数字应该是什么呢,
应该是 111101101 = 755
下面说一下最前面的那个0是什么意思:
0777前面的0原来是叫个suid和guid的东西。
suid意味着如果某个用户对属于自己的shell脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。
guid则表示执行相应脚本的用户将具有该文件所属用户组中用户的权限。
是不是不大明白呀,下面举个例子:
Java代码
-rwxr-xr-x 1 root root 12 09-02 15:21 my_test.sh
上面的mysql_test.sh文件权限是所属用户(root)是7,如果设置了suid,那么其他任何用户的权限都是7,如果设置了guid,那么任何用户的权限都是5。
如何设置suid和guid:
设置suid就是把0变为4,设置guid就把0变为2,如果都设置那就是6了
chmod 4777 mysql_test.sh
作者“chen498402552-163-com”
linux一键安装web环境全攻略 在linux系统中怎么一键安装web环境方法
Linux网络基本网络配置方法介绍 如何配置Linux系统的网络方法
Linux下DNS服务器搭建详解 Linux下搭建DNS服务器和配置文件
对Linux进行详细的性能监控的方法 Linux 系统性能监控命令详解
linux系统root密码忘了怎么办 linux忘记root密码后找回密码的方法
Linux基本命令有哪些 Linux系统常用操作命令有哪些
Linux必学的网络操作命令 linux网络操作相关命令汇总
linux系统从入侵到提权的详细过程 linux入侵提权服务器方法技巧
linux系统怎么用命令切换用户登录 Linux切换用户的命令是什么
在linux中添加普通新用户登录 如何在Linux中添加一个新的用户
2012-07-10
CentOS 6.3安装(详细图解教程)
Linux怎么查看网卡驱动?Linux下查看网卡的驱动程序
centos修改主机名命令
Ubuntu或UbuntuKyKin14.04Unity桌面风格与Gnome桌面风格的切换
FEDORA 17中设置TIGERVNC远程访问
StartOS 5.0相关介绍,新型的Linux系统!
解决vSphere Client登录linux版vCenter失败
LINUX最新提权 Exploits Linux Kernel <= 2.6.37
nginx在网站中的7层转发功能