天天看点

Linux下的文件权限管理

一、文件权限

读、写、执行权限的意义

对于普通文件
    r:表示读取文件的内容的权限。
        例如读取一个文本文件的文字;
        对某文件执行复制操作时,需用户对该文件有“r”权限4。
    w:表示编辑修改文件内容的权限(但不含删除该文件)。
    x:表示文件是否可以被执行。
        windows可通过文件扩展名判断文件是否可以被执行,而linux的文件名并无特别意义,文件是否可执行完全看是否有此权限。

对于目录文件
    r:表示读取目录结构列表的权限,即可使用命令“ls”查看目录中的文件名列表。
        目录的主要内容就是记录文件名列表。

    w:表示更改目录结构列表的权限,即:
        可在该目录创建新的目录或文件;
        可在该目录删除已存在的目录或文件,不论被删除的文件权限为何;
        这里写图片描述
        可在该目录重命名已存在的目录和文件;
        可在该目录剪切已存在的目录和文件等。

    综上,“w”权限对目录来讲可理解为,变动该目录下的文件名列表的权限。

    x:表示能否切换到该目录作为当前工作目录,即:
        可使用命令“cd”至该目录;
        可读取、执行该目录下的文件(如果文件本身开放读、执行权限的话),若目录无“x”权限,则无法读取、执行该目录下的文件;
           

1.mask –能够赋予用户权限的最大值

umask相当于chmod 的补码。

临时修改

umask ##显示系统预留权限值

umask 077 ##临时修改umask值

永久修改

70 if [ $UID -gt 199 ] && [ “

id -gn

” = “

id -un

” ]; then

71 umask 002 ##普通用户的更改

72 else

73 umask 022 ##超级用户的更改

74 fi

59 if [ $UID -gt 199 ] && [ “

id -gn

” = “

id -un

” ]; then

60 umask 002

61 else

62 umask 022

63 fi

2.chmod更改文件权限

使用方式 : chmod [-cfvR] [–help] [–version] mode file…

说明 : Linux/Unix 的档案调用权限分为三级 : 档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所调用。

参数 :

u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。

+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

-c : 若该档案权限确实已经更改,才显示其更改动作

-f : 若该档案权限无法被更改也不要显示错误讯息

-v : 显示权限变更的详细资料

-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)

范例 :将档案 file1.txt 设为所有人皆可读取 :

chmod ugo+r file1.txt

将档案 file1.txt 设为所有人皆可读取 :

chmod a+r file1.txt

将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入 :

chmod ug+w,o-w file1.txt file2.txt

将 ex1.py 设定为只有该档案拥有者可以执行 :

chmod u+x ex1.py

将目前目录下的所有档案与子目录皆设为任何人可读取 :

chmod -R a+r *

语法为: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 效果相同。

[root@localhost mnt]# chmod 600 /mnt/happig.sql 
[root@localhost mnt]# ls -l happig.sql 
-rw-------  user group  May  : happig.sql
           

二、文件权限管理

1.setfacl –设置文件执行列表

setfacl

-m, –modify=acl modify the current ACL(s) of file(s)

-M, –modify-file=file read ACL entries to modify from file

-x, –remove=acl remove entries from the ACL(s) of file(s)

-X, –remove-file=file read ACL entries to remove from file

-b, –remove-all remove all extended ACL entries

eg:

setfacl -m u:lisa:rwx file 更改用户lisa对file文件权限

setfacl -x g:staff file 移除file文件中staff组权限信息

setfacl -b file 移除file文件中其他组/用户权限信息

2.getfacl –获取文件执行权限

[kiosk@foundation55 Desktop]$ getfacl file
# file: file
# owner: kiosk
# group: kiosk
user::rwx
group::rw-
other::r-x            --ACL(Acess Control Lists )
           

3.chmod – change file mode bits

用法:chmod [OPTION]… MODE[,MODE]… FILE…

-R, –recursive 更改目录和目录下所有文件的执行权限

eg:

[kiosk@foundation55 Desktop]$ chmod  file
# file: file
# owner: kiosk
# group: kiosk
user::rwx
group::rw-
other::r-x
           

4.文件属性查看

命令ls,用于列出(list)各文件。

默认仅显示非隐藏文件文件名。

选项:

选项“-a”:显示包括隐藏文件在内的所有文件名。

文件名第一个字符为“.”的即为隐藏文件。

[root@foundation41 fileproprity]# ls -a 
.  ..    .    
           
选项“-d”:若参数为目录1,该选项表示仅列出目录本身,而非目录内的文件。
           
[root@foundation41 fileproprity]# ls -d
.
           
选项“-R”:若参数为目录,该选项表示连同子目录及其下文件都列出。
           
[[email protected] fileproprity]# ls -l
total 0
-rw-r--r-- 1 root root 0 May 27 11:12 1
-rw-r--r-- 1 root root 0 May 27 11:12 2
-rw-r--r-- 1 root root 0 May 27 11:12 3
           
选项“-l”:列出详细的文件和属性。
           
[[email protected] fileproprity]# ls -l
total 0
-rw-r--r-- 1 root root 0 May 27 11:12 1
-rw-r--r-- 1 root root 0 May 27 11:12 2
-rw-r--r-- 1 root root 0 May 27 11:12 3
           
各字段以空格分隔,各字段意义:
    共10个字符。第一个字符表示文件类型2;后9个字符,每3个一组分别表示文件属主(u)、属组(g)、其他用户(o)对于此文件是否有读(r)、写(w)、执行(x)权限。
    该文件被硬链接的次数。
    文件属主。
    文件属组。
    文件大小,默认单位为B。
    文件内容最近一次被修改的时间,即mtime。
    文件名。
           
[[email protected] upload]# ls -l config_global_default.php 
-rwxrwxrwx  root   root    Dec     config_global_default.php
           

[1] ##文件类型

- #普通文件

d #目录

s #socket套接字

l #软链接

p #管道

c #字符设备

b #块设备

[3] #文件内容被系统记录的次数

[4] #文件拥有者

[5] #文件所在组

[6] #文件大小

[7] #文件最后一次被更改的时进

[8] #文件名称

5.查看目录属性

ls -ld directoy

[root@localhost html]# ls -ld upload/
drwxrwxrwx  root root  May  : upload/
           

[1] ##类型(同文件)

[2] ##权限

[3] ##子目录个数

[4] ##目录拥有者

[5] ##目录所在组

[6] ##目录中内容的属性的大小

[7] ##目录中文件增加或减少或被更名的时间

[8] ##目录名称

三、文件用户组的更改

1.更改文件/目录所属用户

chown 用户名称 文件 ##更改文件所有人

[root@localhost mnt]# chown user happig.sql 
[root@localhost mnt]# ls -l happig.sql 
-rw-r--r--  user group  May  : happig.sql
           

chown -R 用户 目录 ##更改目录本身以及目录中的子文件的所有人

[[email protected] mnt]# chown -R user Directory/
[[email protected] mnt]# ls -lR Directory
Directory:
total 0
-rw-r--r-- 1 user root 0 May 27 04:37 file1
-rw-r--r-- 1 user root 0 May 27 04:37 file2
           

2.更改文件/目录组

chgrp 组名称 文件 ##更改文件所有组

[root@localhost mnt]# chgrp group happig.sql 
[root@localhost mnt]# ls -l happig.sql 
-rw-r--r--  root group  May  : happig.sql
           

chgrp -R 组名 目录 ##更改目录本身以及目录中的子文件的所有组

[root@localhost mnt]# chgrp -R group Directory/
[root@localhost mnt]# ls -l Directory
total 
-rw-r--r--  user group  May  : file1
-rw-r--r--  user group  May  : file2
           

继续阅读