*管理目录和文件的属性*
在 Linux 文件系统的安全模型中,系统中的文件(或目录)具有两个属性:访问权限和文件所有者,简称权限和归属。其中,访问权限包括读取、写入、可执行三种基本类型,归 属包括属主(拥有该文件的用户账号)、属组(拥有该文件的组账号)。Linux 操作系统根据文件或目录的访问权限、归属来对用户访问数据的过程进行控制。
* *查看目录和文件的属性*
使用带“-l”选项的 ls 命令时,将以长格式显示文件或目录的详细信息,其中包括该文件的权限和归属等参数。例如,执行以下操作可以列出/etc 目录和/etc/passwd 文件的详细属性。
[root@localhost ~]# ls -ld /etc /etc/passwd
drwxr-xr-x. 140 root root 8192 Apr 18 09:13 /etc
-rw-r--r--. 1 root root 2363 Apr 18 07:12 /etc/passwd
在上述输出信息中,第 3、4 字段的数据分别表示该文件(或目录)的属主、属组,上例中/etc 目录和/etc/passwd 文件都属于 root 用户、root 组;而第 1 字段的数据表示该文件( 或目录) 的访问权限, 如“drwxr-xr-x”和“-rw-r–r--”。权限字段由四部分组成, 各自的含义如下所述。
Ø 第 1 个字符:表示该文件的类型,可以是 d(目录)、b(块设备文件)、c(字符设备文件)、“-”(普通文件)、字母“l”(链接文件)等。
Ø 第 2~4 个字符:表示该文件的属主用户(User)对该文件的访问权限。
Ø 第 5~7 个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限。
Ø 第 8~10 个字符:表示其他任何用户(Other)对该文件的访问权限。
Ø 第 11 个字符:这里的“.”与 SELinux 有关,目前不必关注。
在表示属主、属组内用户或其他用户对该文件的访问权限时,主要使用了三种不同的权
限字符:r、w、x,分别表示可读、可写、可执行。若需要去除对应的权限,则用“-”表示。例如,root 用户对/etc 目录具有可读、可写、可执行的完全权限(rwx),其他任何用户对/etc目录只具有可读可执行的权限(r-x);root 用户对/etc/passwd 文件具有可读、可写权限(rw-), root 组内的各用户对/etc/passwd 文件只具有可读权限(r–)。
权限字符 r、w、x 用于文件表示可读、可写、可执行,但是对于目录来说,它们的具体含义是存在一些差别的,如表 所示。例如,用户只要对目录有写入权限,就可以删除该目录下任何文件或子目录,而不管这些文件或子目录是否属于该用户。
权限字符在文件和目录中的含义 | ||
---|---|---|
*权限* | *文件* | *目录* |
r | 查看文件内容 | 查看目录内容(显示子目录、文件列表) |
w | 修改文件内容 | 修改目录内容(在目录中新建、移动、删除文件或子目录) |
x | 执行该文件(程序或脚本) | 执行 cd 命令进入或退出该目录 |
若用户在对要访问的文件或目录中不具备相应的权限,则操作将被拒绝
* *设置目录和文件的权限*
需要设置文件或者目录的权限时,主要通过 chmod 命令进行。在设置针对每一类用户的访问权限时,可以采用两种形式的权限表示方法:字符形式和数字形式。r、w、x 权限字符可分别表示为八进制数字 4、2、1,表示一个权限组合时需要将数字进行累加。例如,“rwx” 采用累加数字形式表示成“7”,“r-x”采用累加数字形式表示成“5”;而“rwxr-xr-x”由三个权限段组成,因此可以表示成“755”,“rw-r–r--”可以表示成“644”。
使用 chmod 命令设置文件或目录的权限时,基本的命令格式如下:
chmod [ugoa…][+-=][rwx] 文件或目录…
或
chmod nnn 文件或目录…
上述格式中,字符组合“[ugoa…][±=][rwx]”或数字组合“nnn”的形式表示要设置的权限模式。其中,“nnn”为需要设置的具体权限值,如“755”“644”等;而 “[ugoa…][±=][rwx]”的形式中,三个组成部分的含义及用法如下所述。
Ø “ugoa”表示该权限设置所针对的用户类别。“u”代表文件属主,“g”代表文件属组内的用户,“o”代表其他任何用户,“a”代表所有用户(u、g、o 的总和)。
Ø “±=”表示设置权限的操作动作。“+”代表增加相应权限,“-”代表减少相应权限,“=”
代表仅设置对应的权限。
下面的操作将 mkdir 命令程序复制为 mymkdir,并通过去除 mymkdir 文件的“x”权限来验证可执行权限的变化。
[root@localhost ~]#cp /bin/mkdir mymkdir
[root@localhost ~]# ls -l mymkdir
-rwxr-xr-x. 1 root root 79768 Apr 18 09:38 mymkdir
[root@localhost ~]# mymkdir /dir01 //可以使用mymkdir 程序新建文件夹
[root@localhost ~]# ls -ld /dir01
drwxr-xr-x. 2 root root 6 Apr 18 09:39 dir01
[root@localhost ~]# chmod/ugo-x/mymkdir//删除所有的"x"权限, 也可改用"a-x"
[root@localhost ~]# ls -l /mymkdir
-rw-r--r--. 1 root root 79768 Apr 18 09:38 mymkdir
[root@localhost ~]# mymkdir /dir02 //因缺少"x"权限, mymkdir 无法执行
-bash: ./mymkdir: Permission denied
要将不同类别的用户对文件或目录的权限设置为不同值时,可以用逗号进行分隔。例 如,执行以下操作可以调整 mymkdir 文件的权限,为属主用户添加执行权限,删除其他用户的读取权限。
[root@localhost ~]# chmod u+x,o-r/ mymkdir
[root@localhost ~]# ls -l /mymkdir
-rwxr -. 1 root root 79768 Apr 18 09:38 mymkdir
更简便易用的方法是采用数字形式表示的权限模式。例如,若要将 mymkdir 文件的访问权限设置为“rwxr-xr-x”,其对应的数字组合是 755
[root@localhost ~]# chmod 755 /mymkdir
[root@localhost ~]#ls -l /mymkdi
-rwxr-xr-x. 1 root root 79768 Apr 18 09:38 mymkdir
在实际的目录权限管理工作中,有时会需要将某一个目录中的所有子目录及文件的权限都设置为相同的值,这时只要结合 chmod 命令的“-R”选项即可轻松实现。若不指定“-R”选项, chmod 命令将只改变所指定目录本身的权限。例如,执行以下操作将以递归的方式将
/var/ftp/pub 目录中所有子目录、文件的权限都设置为“rw-r–r--”。
[root@localhost ~]# chmod -R 644 /var/ftp/pub/
* *设置目录和文件的归属*
需要设置文件或者目录的归属时,主要通过 chown 命令进行。可以只设置属主或属组, 也可以同时设置属主、属组。使用 chown 命令的基本格式如下:
chown 属主[:[属组]] 文件或目录…
同时设置属主、属组时,用户名和组名之间用“****😗***”进行分隔。若只设置属组,则需使用“****😗*** 组名”的形式。
如果只需要设置目录或文件的属主,直接以用户名表示归属即可,递归修改目录归属同
样可以使用“-R”选项。例如,执行以下操作可将/var/ftp/pub/目录的属主由 root 改为 ftp(调整后用户 ftp 将拥有“rwx”的权限)
[root@localhost ~]# ls -ld /var/ftp/pub/ //修改前的属主为root drw-r--r--. 2 root root 6 Nov 5 15:43 /var/ftp/pub/
[root@localhost ~]# chown -R /ftp /var/ftp/pub/
[root@localhost ~]# ls -ld /var/ftp/pub/ //修改后的属主变为ftp drw-r--r--. 2 ftp root 6 Nov 5 15:43 /var/ftp/pub/
如果同时设置目录和文件的属主、属组,则需要用到分隔符“:”。例如,执行以下操作可 将 mymkdir 文件的属主更改为 daemon、属组更改为 wheel。
[root@localhost ~]# ls -ld /mymkdir
-rwxr-xr-x. 1 root root 79768 Apr 18 09:38 mymkdir
[root@localhost ~]# chown daemon:wheel /mymkdi
[root@localhost ~]# ls -ld /mymkdir
-rwxr-xr-x. 1 daemon wheel 79768 Apr 18 09:38 mymkdir
在 Linux 操作系统中,设置文件访问权限、归属是目录和文件管理常见的工作内容,很多网络服务或应用程序的安全强化工作实际上都包括了文件权限和归属的修改。因此, 在具体工作中应慎重进行, 不当的权限设置可能会导致系统故障, 甚至带来一些安全隐患。
*设置目录和文件的默认权限*
你知道当你新建一个新的文 件或目录时,它的默认权限是什么吗?这个是与 umask 有关。
umask 就是默认指定目前用户在新建文件或目录时的权限默认值。执行“umask 022” 即可以设置当前用户的默认权限。直接执行“umask”命令就是查看当前系统的默认权限。需要注意的是,umask 的分数指的是“该默认值需要减掉的权限”。因此 r、w、x 分别是 4、2、1,如果执行“umask 022”代表 group 和 other 被拿掉了权限"2",也就是被拿掉了“写”权限。
如果执行命令“umask 000”,代表文件的默认权限是“777”。
[root@kgc ~]# umask 000
[root@kgc ~]# mkdir /umask1
[root@kgc ~]# ls -ld /umask1/
drwxrwxrwx 2 root root 4096 3月13 17:02 /umask1/
[root@kgc ~]#umask 022
[root@kgc ~]# mkdir /umask2
[root@kgc ~]# ls -ld /umask2/
drwxr-xr-x 2 root root 4096 3 月 13 17:03 /umask2/ [root@kgc ~]#
|