LINUX学习之文件基本属性(二)
查看文件属性
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位并拥有不同的权限。在 Linux 系统中,通常使用 chown
命令来修改文件或目录的所有者,chmod
命令则用于设置用户的权限。
chown
(change owner) :用于修改文件或目录的所有者和组。chmod
(change mode) :用于修改文件或目录的权限,如读、写、执行权限
在Linux 中可使用 ll
或者 ls –l
命令来显示一个文件的属性以及文件所属的用户和组
如上图所示, Mail文件的第一个属性用d表示, 则代表此文件是一个目录文件, 在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等
- 当为 d 则是目录
- 当为 - 则是文件;
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
如下图所示, 每个文件的属性由左边第一部分的 10 个字符来确定, 从左至右用 0-9 这些数字来表示。
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限, 第4-6位确定属组(所有者的同组用户)拥有该文件的权限, 第7-9位确定其他用户拥有该文件的权限。
文件的属主和属组
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。在 Linux 系统中,用户是按组分类的,一个用户可以属于一个或多个组。
文件所有者以外的用户可以分为文件所属组的同组用户和其他用户。这些用户对文件的访问权限可能不同,因此在 Linux 系统中,需要对文件的访问权限进行管理。
在如下实例中, mysql 文件是一个目录文件, 属主和属组都为 mysql, 属主有可读、可写、可执行的权限; 与属主同组的其他用户有可读和可执行的权限; 其他用户也有可读和可执行的权限。而对于root用户来说, 文件的权限对其不起作用
[root@www /]# ls -l
total 64
drwxr-xr-x 2 root root 4096 Feb 15 14:46 cron
drwxr-xr-x 3 mysql mysql 4096 Apr 21 2014 mysql
……
更改文件属性的命令
1.chgrp
: 更改文件属组
命令语法如下所示:
chgrp [-R] 属组名 文件名
-R: 如果加上-R的参数,那么该目录下的所有文件的属组都会更改
2.chown
: 更改文件属主, 也可同时修改文件属组
命令语法如下所示:
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
进入/root
目录(~)将install.log
的拥有者改为bin
这个账号:
[root@www ~] cd ~
[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r-- 1 bin users 68495 Jun 25 08:53 install.log
将install.log
的拥有者与群组改回为root
[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r-- 1 root root 68495 Jun 25 08:53 install.log
3.chmod
: 更改文件权限
首先了解下文件的权限等级, Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)
u
表示文件所有者,g
表示与文件拥有者属于同一个群体,o
表示其他人,a
表示这三者皆是+
表示添加权限、-
表示取消权限、=
表示设定唯一权限r
表示可读取,w
表示可写入,x
表示可执行
使用符号模式可以设置多个项目: who(用户类型)、operator(操作符)、permission(权限)
以下是各个项目的符号模式表:
who | 用户类型 | 说明 |
---|---|---|
u |
user | 文件所有者 |
g |
group | 文件所有者所在组 |
o |
others | 所有其他用户 |
a |
all | 所有用户, 相当于 ugo |
Operator | 说明 |
---|---|
+ |
为指定的用户类型增加权限 |
- |
去除指定用户类型的权限 |
= |
设置指定用户权限的设置,即将用户类型的所有权限重新设置 |
permission | 名字 | 说明 |
---|---|---|
r |
读 | 设置为可读权限 |
w |
写 | 设置为可写权限 |
x |
执行权限 | 设置为可执行权限 |
X |
特殊执行权限 | 只有当文件为目录文件,或者其他类型的用户有可执行权限时,才将文件权限设置可执行 |
s |
setuid/gid | 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限 |
t |
粘贴位 | 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位 |
chmod
命令可以使用八进制来指定权限
# | 权限 | rwx |
---|---|---|
7 | 读(4) + 写(2) + 执行(1) | rwx |
6 | 读(4) + 写(2) | rw- |
5 | 读(4) + 执行(1) | r-x |
4 | 只读(4) | r-- |
3 | 写(2) + 执行(1) | -wx |
2 | 只写(2) | -w- |
1 | 只执行(1) | --x |
0 | 无 | -- |
chmod
命令使用实例如下表格所示:
描述 | 命令 |
---|---|
将file1.txt设为所有人都可读 | chmod ugo+r file1.txt chmod a+r file1.txt |
将file1.txt和file2.txt权限设为文件拥有者和用户组可写,其他用户不可写 | chmod ug+w,o-w file1.txt file2.txt |
将当前目录下的所有文件与子目录皆设为任何人可读取 | chmod -R a+r * |
将file文件设为任何人可读可写可执行 | chmod 777 file chmod a=rwx file |
使文件具有超级用户权限, | chmod 4755 filename |
4.umask
:更改文件默认权限
创建文件的默认权限为rw-rw-rw-
, 创建目录的默认权限为rwxrwxrwx
使用umask
命令即可查询umask值, umask值表示从默认权限了去掉一些权限,然后成为最终的默认权限
[root@localhost 桌面]# umask
0022
可以看到umask的值为0022,第一个0为特殊权限暂且不用理他,后面三个数字分别代表u(文件拥有者)、g(用户组用户)、o(其他用户)的权限变化。u为0,权限没发生改变;g为2,权限-2,失去w(写)权限;o为2,同理
新创建一个文件, 其默认权限为rw-rw-rw-
, 由于umask值为0022, 即group和Other Users失去w权限, 最终文件的权限为rw-r--r--
[root@localhost 桌面]# touch test.txt
[root@localhost 桌面]# ls -l test.txt
-rw-r--r--. 1 root root 0 10月 20 17:36 test.txt
新创建一个目录, 其默认权限为rwx-rwx-rwx
, 由于umask值为0022, 即group和Other Users失去w权限, 最终文件的权限为rwxr-xr-x
[root@localhost 桌面]# mkdir test
[root@localhost 桌面]# ls -al test
总用量 0
drwxr-xr-x. 2 root root 6 10月 20 17:42 .
drwxr-xr-x. 3 herry herry 34 10月 20 17:42 ..
还可使用umask
命令修改文件默认权限
[root@localhost 桌面]# umask 027
[root@localhost 桌面]# touch test1.txt
[root@localhost 桌面]# ls -l test1.txt
-rw-r-----. 1 root root 0 10月 20 23:11 test1.txt