Linux文件或目录的读,写,执行权限
?
execute permission
= 1
?
write permission
= 2
?
write and execute (1+2)
= 3
?
read permission
= 4
?
read and execute (4+1)
= 5
?
read and write (4+2)
= 6
?
read, write and execute (4+2+1)
= 7
Add the number value of the permissions you want to grant each group to make a three digit number, one digit each for the owner, the group, and the world. Here are some useful combinations. Try to figure them out!
修改方式1:以绝对方式改变权限
?
u = user (yourself)
g = group
a = everyone
?
r = read
w = write
x = execute
图4 文件权限表示
????◆文件的存取权限
????读权限(r)表示只允许指定用户读取相应文件的内容,而禁止对它做任何的更改操作。将所访问的文件的内容作为输入的命令都需要有读的权限。例如cat、more等。
????写权限(w)表示允许指定用户打开并修改文件。例如命令vi、cp等。
????执行权限(x)表示允许指定用户将该文件作为一个程序执行。
????◆目录的存取权限
????在ls命令后加上-d选项,可以了解目录文件的使用权限。
????读权限(r)表示可以列出存储在该目录下的文件,即读目录内容列表。这一权限允许Shell使用文件扩展名列出相匹配的文件名。
????写权限(w)表示允许用户从目录中删除或添加新的文件,通常只有文件主才有写权限。
????执行权限(x)表示允许用户在目录中查找,并能用cd命令将工作目录改到该目录。
????(4)chmod命令
????chmod命令用于改变或设置文件或目录的存取权限。只有文件主或超级用户root才有权用chmod改变文件或目录的存取权限。
????根据表示权限的方式不同,该命令有以符号模式改变权限和以绝对方式改变权限两种用法。
????◆以符号模式改变权限
????chmod命令的一般格式是:chmod key 文件名
????其中,key由以下各项组成:
-----------------------------------------------------------
?? ?[who]?? [操作符号]? [mode]?
??? 操作对象? who可以是下述字母中的任一个或它们的组合: u?表示用户(user),即文件或目录的所有者。g? 表示同组(group)用户,即与文件属主有相同组ID的所有用户。? o? 表示其它(others)用户。 a? 表示所有(all)用户,它是系统默认值。?
??? 操作符号可以是下述符号:? +? 添加某个权限。? -? 取消某个权限。? =?赋予给定权限并取消其他所有权限(如果有的话)。?
??? mode所表示的权限可用下述字母的任意组合:r?表示可读。w?表示可写。x?表示可执行。X?表示只有目标文件对某些用户是可执行的,或者该目标文件是目录时才追加x (可执行)属性。s 在文件执行时把进程的属主或组ID置为该文件的文件属主。
?? 方式“u+s”设置文件的用户ID位, “g+s”设置组ID位。t?保存程序的文本到交换设备上。? u? 与文件属主拥有一样的权限。 g?拥有与文件属主同组用户一样的权限。? o? 与其它用户拥有一样的权限。
-----------------------------------------------------------
?
????上面这三部分必须按顺序输入,可以用多个key,但必须以逗号隔开。例如:
????$ chmod a+x ex1
????上面代码表示将文件ex1的权限改为所有用户(a)都有执行权限(+x)。
????$ chmod u=r,ug=x ex1
????上面这行代码表示将文件ex1的权限重新设置为文件主可以读和执行,组用户可以执行,其它用户无权访问。
????◆以绝对方式改变权限
????以绝对方式改变权限一般格式是:chmod mode 文件名
????用绝对方式设置或改变文件的存取权限就是用数字“1”和“0”表示图4中所 示的9个权限位, 置为“1”表示有相应权限, 置为“0”表示没有相应权限。例如,某个文件的存取权限是文件主有读、写和执行的权限,组用户有读和执行的权限,其它用户仅有读的权限。用符号模式表示就 是rwxr-xr--,用二进制数字表示就是111101100。
????为了方便记忆和表示,通常将这9位二进制数用等价的3个从0到7的八进制数表示,即从右到左3个二进制数换成一个八进制数。这样,上述二进制数就等价于八进制数“754”。
????也就是说,mode是以3位八进制数字出现的,最左位表示文件主权限,中间位表示组用户权限,最右位表示其它用户权限。
????例如,chmod 664 ex1使文件ex1的文件主和同组用户具有读写权限,但其它用户只可读。
????◆umask命令
????umask命令用来设置限制新建文件权限的掩码。其一般格式是:umask mode
????当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行,并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask来改变默认值,新的权限将会把旧的覆盖掉。
????利用umask命令可以指定哪些权限将在新文件的默认权限中被删除。例如,可以使用下面的命令创建掩码,取消组用户的写权限以及其他用户的读、写和执行权限: umask u=,g=w,o=rwx
????执行该命令以后,下面所建新文件的文件主权限未作任何改变,而组用户没有写权限,其它用户的所有权限都被取消。
????应注意,在umask命令和chmod命令中,操作符“=”的作用恰恰相反。在chmod中,利用它来设置指定的权限,而其余权限都被取消;但是在umask命令中,它将在原有权限的基础上把指定的权限删除。
????不能直接利用umask创建一个可执行的文件,用户只能在其后利用chmod命令使它具有执行权限。假设执行了下面命令:
????umask u=,g=w,o=rwx
????虽然在命令行中,文件主和组用户的执行权限没有被删去,但默认的文件权限还 是640(即rw-r-----),而不是750(rwxr-x---)。但是,如果创建的是目录,或者通过编译程序创建一个可执行文件,将不受此限制。 在这种情况下,文件的执行权限会被设置。
????此外,也可以使用八进制数值来设置mode。在umask中所指定的权限 表示要删除的权限,所以,如果一个文件原来的初始权限是777,那么执行命令umask 022以后, 那么该文件的权限将变为 755;如果该文件原来的初始权限是666, 那么该文件的权限将变为644。
????使用下面的命令可以检查新创建文件的默认权限:
????umask -s
????上面命令中,选项-s表示以字符形式显示当前的掩码。
????如果直接输入umask命令,不带任何参数,那么将以八进制形式显示当前的掩码。系统默认的掩码是0022。