LINUX学习之文件基本属性(二)

查看文件属性

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位并拥有不同的权限。在 Linux 系统中,通常使用 chown 命令来修改文件或目录的所有者,chmod 命令则用于设置用户的权限。

  • chown (change owner) :用于修改文件或目录的所有者和组。
  • chmod (change mode) :用于修改文件或目录的权限,如读、写、执行权限

在Linux 中可使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组

1

如上图所示, Mail文件的第一个属性用d表示, 则代表此文件是一个目录文件, 在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等

  • 当为 d 则是目录
  • 当为 - 则是文件;
  • 若是 l 则表示为链接文档(link file);
  • 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
  • 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

如下图所示, 每个文件的属性由左边第一部分的 10 个字符来确定, 从左至右用 0-9 这些数字来表示。

0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限, 第4-6位确定属组(所有者的同组用户)拥有该文件的权限, 第7-9位确定其他用户拥有该文件的权限。

1


文件的属主和属组

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。在 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)

1

  • 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
posted @ 2023-01-18 22:46  亨利其实很坏  阅读(86)  评论(0编辑  收藏  举报