以前一直好奇,在Linux权限中为什么有的时候会出现四位?比如0777,后来查阅资料才明白,原来前面的0代表suid和guid的权限。
suid和guid简介:
suid意味着如果某个用户对属于自己的shell脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。
guid则表示执行相应脚本的用户将具有该文件所属用户组中用户的权限。
简单的举一个例子,当一个程序设置了suid的时候,如果一个本身没有权限访问/etc/passwd的用户执行了这个程序,则会获得此程序的所有者的权限,而如果此程序的所有者对/etc/passwd文件有访问权限,则执行此程序的所有用户都可以访问此文件。
是不是不大明白呀,下面再举个例子:
-rwxr-xr-x 1 root root 12 09-02 15:21 my_test.sh
上面的my_test.sh文件权限是所属用户(root)是7,如果设置了suid,那么其他任何用户的权限都是7,如果设置了guid,那么任何用户的权限都是5。
设置suid和guid:
设置suid就是把0变为4,设置guid就把0变为2,如果都设置那就是6了
chmod 4777 my_test.sh #只设置suid
chmod 2777 my_test.sh #只设置guid
chmod 6777 my_test.sh #同时设置suid和guid