87

八、文件权限和目录权限chmod;更改所有者和所属组chown;umask;隐藏权限-seventeen_...

 6 years ago
source link: http://blog.51cto.com/13576245/2067086
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

八、文件权限和目录权限chmod;更改所有者和所属组chown;umask;隐藏权限

八、文件权限和目录权限chmod;更改所有者和所属组chown;umask;隐藏权限lsattr/chattr

(一)文件权限和目录权限chmod

为了方便更改文件的权限,Linux使用数字代替rwx,具体规则:r=4,w=2,x=1,-=0。例如rwxrwx---用数字表示就是770,其具体算法为:rwx=4+2+1=7,rwx=4+2+1=7,---+0+0+0=0。

x:可执行

-:不可操作

-rw-r--r--. 1 root root 0 1月  30 19:10 1.txt

除第一列的-显示文件类型外,后面的九位,

分成三段:rw-,r--,r--,和文件的所有者和所属组有关系,

一个文件有三个权限位,

第一段代表文件所有者的权限,

第二段代表文件所属组的权限,

第三段代表文件其他用户的权限。

最后一个“.”,有这个点意味着这个文件受制于SELinux,若SELinux开启了,创建的文件的最后一位就会有这个点。

第一个root代表所有者,第二个root代表所属组。

例如:rw-r--r--=644

chmod命令(change mode):用于改变用户对文件/目录的读写执行文件权限。

格式为:chmod  [-R]  xyz文件名(此处xyz表示数字)

举例:chmod 700 1.txt

举例:chmod u=rwx,g=r,o=r dir3    //完整写法。u(user)g(group)o(other),不可以加减号。

举例:chmod a+(-)x dir3      //给该目录全部权限增加(减少)x的权限;或者u+x,g+x,o+x都可以。

其中,-R选项的作用等同于chown命令的-R选项,这个-R选项只适用于目录,作用是级联更改,即不仅更改当前目录,连目录里的目录或者文件也全部更改。

(二)更改所有者和所属组chown

chown命令(change owner):可以更改文件的所有者。

格式为:chown  [-R]  账户名  文件名或者chown  [-R]  账户名:组名 文件名。

示例命令:

#  mkdir  dir3

# useradd user1         //创建用户user1

# touch dir3/test3       //dir3目录下创建test3文件

# chown user1 dir3    

# ls -ld dir3                 //dir3目录所有者已经由root改为user1

drwxr-xr-x. 2 user1 root 19 1月  30 18:46 dir3

增加一个组叫testgroup。

groupadd testgroup

chown -R user 1:testgroup dir3

上例中,chown -R user1:testgroup会把dir3目录及该目录下的文件都修改成所有者为user1,所属组为testgroup。

chgrp命令(change group):更改文件的所属组。

groupadd命令:增加一个用户组。

chgrp命令用法:# chgrp user1 dir3

将后面的文件或者目录改到前面的组。

chown命令用法:chown username:group  filename。可以加上-R选项。

# chown user1:dir3                      先用户,再组,中间用冒号分开。

# chown  :user1  /tmp/test3  省略用户,直接组,将后面的文件加入到设定user1组。

(三)umask

默认情况下,目录权限值为755,普通文件的权限值为644。

umask命令:用于改变文件的默认权限。

格式:umask  xxx(xxx代表3个数字)。若要查看umask的值,输入命令umask,再回车即可。如下:

# umask

此处umask的预设值是0022,。

umask规则:

a)若用户建立普通文件,则预设没有可执行权限,只有r、w两个权限,最大值为666(-rw-rw-rw-)。

b)若用户建立目录,则预设所有权限均开放,即777(drwxrwxrwx)。

umask值代表的含义为两条规则中的默认值(文件为666,目录为777)需要减掉的权限,所以:

目录权限为rwxrwxrwx - ----w--w- =rwxr-xr-x(777-022=755)

普通文件的权限为rw-rw-rw- - ----w--w- =rw-r--r--(666-022=644)

umask数值可以自定义设置,比如设定umask为002,你在创建目录或文件时,默认权限分别为:

目录权限:rwxrwxrwx  -  -------w-  =  rwxrwxr-x

文件权限:rw-rw-rw-    -  -------w-  = rw-rw-r--

示例命令:

# umask 002

# mkdir dir4

# ls -ld dir4

drwxrwxr-x. 2 root root 6 1月  30 22:08 dir4

# touch test4

# ls -l test4

-rw-rw-r--. 1 root root 0 1月  30 22:09 test4

可以看到创建的目录的默认权限变为775,文件的默认权限变为664。

若要把umask改回来,具体操作方法如下:

# umask 022

# touch test5

# ls -l test5

-rw-r--r--. 1 root root 0 1月  30 22:12 test5

不要将计算方法换算成数字去做减法。看起来没问题,但有时会出错。比如当umask值为033时,文件的默认权限则为666-033=633,

但实际权限应为rw-rw-rw-  -  ----wx-wx=rw-r--r--=644

umask可以在/etc/bashrc里面更改,默认情况下,root的umask值为022,而一般使用则为002。可写权限非常重要,因此预设会去掉可写权限。

(四)隐藏权限lsattr/chattr

1.lsattr命令(list attribute):用于读取文件或目录的特殊权限。

格式:lsattr  [-aR]  [文件/目录名]。

-a:类似于ls -a的选项,即连同隐藏文件一同列出。

-R:连同子目录的数据一同列出。

2.chattr命令(change attribute)

格式:chattr [+-=]  [文件或目录名],其中,+-和=分别表示增加、减少和设定。

A:增加该属性后,表示文件或目录的atime将不可修改。

s:增加该属性后,会将数据同步写入磁盘中。

a:增加该属性后,表示只能追加不能删除,非root用户不能设定该属性。

c:增加该属性后,表示自动压缩该文件,读取时会自动解压。

i:增加该属性后,表示文件不能删除,重命名,设定链接,写入以及新增数据。

常用选项为a和i两个选项。

隐藏权限ls看不到。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK