一、文件权限
读、写、执行权限的意义
对于普通文件
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 ] && [ “ ” = “ ” ]; then 71 umask 002 ##普通用户的更改 72 else 73 umask 022 ##超级用户的更改 74 fi |
59 if [ $UID -gt 199 ] && [ “ ” = “ ” ]; 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