linux的文件权限经过用户,组和其它组来实现。一个文件只能属于一个用户和组, 若是其它的用户想有这个文件的权限,则能够将该用户加入这个组,一个用户能够同时属于多个组。通常来讲一个应用下不要有太多的文件组和用户,最好不要用 ROOT执行角本,这样权限都放放大,比较不安全html
Linux下很重视权限,权限包括读,写,执行。因此即便Linux下染了病毒,也不必定中病毒,其实就是这个权限的问题。初学者在Linux执行 命令是会感受比较累,每次都是要用su来切换用户,其实这也是Linux保护数据的一种模式。固然建议,用户登入是不要直接用root用户登入。若是知道 root登陆命令的话。linux
Linux下有用户跟群组的观念。每每分为三个部分,持该文件的用户(user),跟持该文件同组的用户(group),剩下的其余用户(other)。一个用户能够属于不少个群组。Linux下表示权限有两种方式:shell
一种是八进制表示法(十位表示法,不是说八进制有十位,而是三个八进制位,再加一个最高位共十位),安全
另一种十二位二进制表示法(十二个二进制位)。socket
先介绍第一种:ui
是三种模式,三个属组,就构成了9位。-表明无权限,r表明只读,w表明写的权限,x则表明执行。因此就有下面的组合。将-视为0,x视为1,w视 为2,r视为4.这种组合根据该位是否有这个数来肯定,就肯定以下的9种组合方式。恰好,总的权值0-7对应于八进制的所有。因此也能够说权限是能够用八 进制来表示的。最高的权限就是7,表明可读,可写,可执行。3就是表明只有写跟执行的权限。其余数字类推。spa
模式 数字
rwx 7
rw- 6
r-x 5
r-- 4
-wx 3
-w- 2
--x 1
--- 0htm
每一个八进制数其实能够转化为三位的二进制数,进程
r=100,w=010,x=001,-=000ip
r=4, w=2, x=1, -=0
这个关系在第二种表示方法中是有用的。因为r是出如今三位中的最高位,就至关于最高位才有效,可忽略0位。在这种方法中,你能够相似的在出现的地方对它置1,不出现的地方置0,而后三个三个的转化就出来三位的八进制数了。
仍是举几个例子吧:
-rw-rw-r-- 1 samuel samuel 6479 07-08 08:46 Christians.pls
根据上面对应关系为664.
-rwxr-xr-x 1 samuel samuel 0 Jan 9 17:44 scriptfile.sh
这个对应关系算出来就是755.
因此根据数字也能够推出来777就是指-rwxrwxrwx的模式。
指定权限Linux的命令为chmod,比较自由能够用数字来表示也能够用英文形象的表示。
如chmod 777 samuel.sh全部用户取得最高的权限
chmod o+w samuel.sh其余用户被赋予了写的权限
chmod go-rw samuel.sh组跟其余用户被删去读跟写的权限
chmod的行为规范:
+ 表示添加权限
- 表示删除权限
= 表示使之成为惟一的权限
只有这样,本身写的shell脚本才能够被Linux执行。不然是不可能运行的,这个就是Linux有别于Windows的机制,也是采用这个方法能够防止病毒自我运行,由于运行的条件是必需要有运行的权限,而这个权限在Linux是用户所赋予的。
关于第一位最高位的解释:
第一位表明是文件的类型,类型能够是下面几个中的一个:
还有一个也是涉及到权限的,就是suid,sgid跟sticky。suid/sgid是为了适应“没有取得特权用户要完成一项必需要有特权才能够执行的任务”才产生的。
suid(set User ID,set UID)的意思是进程执行一个文件时一般保持进程拥有者的UID。然而,若是设置了可执行文件的suid位,进程就得到了该文件拥有者的UID。
sgid(set Group ID,set GID)意思也是同样,只要把上面的进程拥有者改为进程组就行了。
若是一个文件被设置了suid或sgid位,会分别表如今全部者或同组用户的权限的可执行位上。
若是还设置了x位,则相应的位表示为s(小写)。可是,若是没有设置x位,它将表示为S(大写)。以下例:
一、-rwsr-xr-x 表示suid和全部者权限中可执行位被设置
二、-rwSr--r-- 表示suid被设置,但全部者权限中可执行位没有被设置
三、-rwxr-sr-x 表示sgid和同组用户权限中可执行位被设置
四、-rw-r-Sr-- 表示sgid被设置,但同组用户权限中可执行位没有被社置。
再介绍第二种:
在UNIX的实现中,文件权限还能够用十二个二进制位表示,具体方法是在这十二位的每一位上都置值。若是该位置上的值是1,表示有相应的权限,而0表示没有此权限。
这十二位分别对应关系以下:
11 10 9 8 7 6 5 4 3 2 1 0
S G T r w x r w x r w x
第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上面的三组rwx位。
-rwsr-xr-x的值为: 1 0 0 1 1 1 1 0 1 1 0 1
-rw-r-Sr--的值为: 0 1 0 1 1 0 1 0 0 1 0 0
其实两种方法都是互通的。
给文件加suid和sgid的命令以下(相似于上面chmod赋予通常权限的命令):
chmod u+s filename 设置suid位
chmod u-s filename 去掉suid设置
chmod g+s filename 设置sgid位
chmod g-s filename 去掉sgid设置
可是在许多环境中,suid 和 suid 很管用,可是不恰当地使用这些位可能使系统的安全遭到破坏。最好尽量地少用“suid”程序。passwd 命令是为数很少的必须使用“suid”的命令之一。
如今介绍sticky:
通常来讲,只要对一个目录有写访问权,任何人均可以重命名或删除该目录中的文件。对于个别用户使用的目录,这种行为是很合理的。可是,对于不少用户 使用的目录来讲,尤为是 /tmp 和 /var/tmp,这种行为可能会产生麻烦。由于任何人均可以写这些目录,任何人均可以删除或重命名任何其余人的文件,即便是不属于他们的!显然,当任何 其余用户在任什么时候候均可以输入“rm -rf /tmp/*”并损坏每一个人的文件时,很难把 /tmp 用于任何有意义的文件。所幸,Linux 有叫作“粘滞位”(sticky bit)的东西。当给 /tmp 设置了粘滞位(用 chmod +t),惟一可以删除或重命名 /tmp 中文件的是该目录的全部者(一般是 root 用户)、文件的全部者或 root 用户。事实上,全部 Linux 分发包都缺省地启用了 /tmp 的粘滞位,而您还能够发现粘滞位在其它状况下也很管用。
总结:
正如上面所说的,其实两种方法能够互通。对于第二种,咱们也能够三位三位的转化为4个八进制数。最高的一位八进制数就是suid,sgdi,sticky的值一个反应。777就是他们都设为了1.
语法为:chmod abc file
其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
范例:
chmod a=rwx file
和
chmod 777 file
效果相同
chmod ug=rwx,o=x file
和
chmod 771 file
效果相同
若用chmod 4755 filename可以使此程式具备root的权限
指令名称 : chown
使用权限 : root
使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...
说明 : Linux/Unix 是多人多工做业系统,全部的档案皆有拥有者。利用 chown 能够将档案的拥有者加以改变。通常来讲,这个指令只有是由系统管理者(root)所使用,通常使用者没有权限能够改变别人的档案拥有者,也没有权限能够自 己的档案拥有者改设为别人。只有系统管理者(root)才有这样的权限。
把计 :
user : 新的档案拥有者的使用者 IDgroup : 新的档案拥有者的使用者群体(group)-c : 若该档案拥有者确实已经更改,才显示其更改动做-f : 若该档案拥有者没法被更改也不要显示错误讯息-h : 只对于连结(link)进行变动,而非该 link 真正指向的档案-v : 显示拥有者变动的详细资料-R : 对目前目录下的全部档案与子目录进行相同的拥有者变动(即以递回的方式逐个变动)--help : 显示辅助说明--version : 显示版本
范例 :
将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie :
chown jessie:users file1.txt
将目前目录下的全部档案与子目录的拥有者皆设为 users 群体的使用者 lamport :
chmod -R lamport:users *
-rw------- (600) -- 只有属主有读写权限。
-rw-r--r-- (644) -- 只有属主有读写权限;而属组用户和其余用户只有读权限。
-rwx------ (700) -- 只有属主有读、写、执行权限。
-rwxr-xr-x (755) -- 属主有读、写、执行权限;而属组用户和其余用户只有读、执行权限。
-rwx--x--x (711) -- 属主有读、写、执行权限;而属组用户和其余用户只有执行权限。
-rw-rw-rw- (666) -- 全部用户都有文件读、写权限。这种作法不可取。
-rwxrwxrwx (777) -- 全部用户都有读、写、执行权限。更不可取的作法。
如下是对目录的两个普通设定:
drwx------ (700) - 只有属主可在目录中读、写。
drwxr-xr-x (755) - 全部用户可读该目录,但只有属主才能改变目录中的内容
suid的表明数字是4,好比4755的结果是-rwsr-xr-x sgid的表明数字是2,好比6755的结果是-rwsr-sr-x sticky位表明数字是1,好比7755的结果是-rwsr-sr-thttp://www.linuxso.com/command/chmod.html