文件、目录权限和正则表达式练习

文件和目录的权限


权限 

文件系统的权限针对以下三类对象进行定义:

owner:属主,u 
group:属组,g 
other:其他,o

每个文件针对其访问者定义的三种普通权限:

r:readable 读取权限 
w:writable 写入权限 
x:executable 执行权限

三种权限对于目录和文件的意义:

  • 对于文件而言:
    • r:可以使用文件查看类工具获取其内容
    • w:可修改其内容
    • x:可以把此文件提请内核启动一个进程
  • 对于目录而言: 
    • r:可以使用ls来查看此目录中的文件列表
    • w:可在此目录中创建文件,也可以删除此目录中的文件
    • x:可以使用ls -l来查看此目录中文件列表,可cd进入此目录

权限的组合机制:

--- 000 0 
--x 001 1 
-w- 010 2 
-wx 011 3 
r-- 100 4 
r-x 101 5 
rw- 110 6 
rwx 111 7 

chmod


chmod命令用于更改文件、目录的权限。 
语法

  • chmod [option] MODE[,MODE]… file..
  • chmod [option] 760 file 760是权限的8进制表示法:rwxrw—
  • chmod [option] –reference=参考文件 file…

选项

  • -R:递归,将子目录中的文件权限一起修改

MODE

  • 赋权表示法:
    • u=权限
    • g=权限
    • o=权限
    • a=权限
  • 授权表示法: 
    • u+|-权限..
    • g+|-权限..
    • o+|-权限..
    • a+|-权限..

实例


chown

chown命令用于修改文件的属主。 
语法

chown [option]… [OWNER][:[GROUP]] file.. 
其中:[OWNER][:[GROUP]]有三种表示方法 
1、 OWNER 只修改属主 
2、 OWNER:GROUP 修改属主和属组 
3、 GROUP 修改属组

选项

  • -R:递归

示例


chgrp

chgrp用于修改文件的属组 
语法

chgrp [option]… [GROUP] FILE…

选项

  • -R:递归。将目录下的子目录及其文件的权限一起修改

文件系统上的特殊权限

在Linux文件系统上有三种特殊权限,分别是:SUID、SGID、Sticky。 
进程安全上下文 
前提:进程有属主和属组,文件有属主和属组。

  • 任何一个可执行程序文件能否启动为进程,却绝育发起这对程序文件是否拥有执行权限。
  • 进程启动后,进程以起发起者的身份运行,进程的属主为发起者,进程的属组为发起者的所属的组。进程对文件的访问权限,取决于发起此进程的用户的权限。
  • 进程对文件的访问权限: 
    进程的属主与文件的属主是否相同,如果相同则应用属主权限,否则则检查进程的属主是否属于文件的属组,如果是则应用属组权限,否则应用other的权限。

SUID 
在默认情况下,用户发起的进程,进程的属主是其发起者,进程以发起者的身份运行。 
而SUID的作用在于:用户启动某程序后,如果此程序拥有SUID权限,那么此进程的属主为原程序文件自身的属主,而不是其进程的发起者。

权限设定:

chmod u+s FILE… 
chmod u-s FILE…

此权限的展示位置是在属主的执行权限位,如果属主原本有执行权限时显示为小写的s;原属主没有执行权限时显示为大写的S。

SGID 
默认情况下,用户创建文件时,其属组为此用户所属的基本组。 
若目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组。

权限设定:

此权限的展示位置是在属组的执行权限位,如果属组原本有执行权限时显示为小写的s;原属组没有执行权限时显示为大写的S

Sticky 
对于属组或者全局可写的目录,组内的所有用户或系统上的所有用户对此目录都能创建文件和删除文件,若设置了Sticky权限,则每个用户能创建新文件,且仅能删除自己的文件。

权限设定:

chmod o+t DIR… 
chmod o-t DIR…

此权限的展示位置:其他用户的执行权限位, 
如果其他用户原本有执行权限时显示为t;原其他用户组没有执行权限时显示为大写的T

管理特殊权限 
三个特殊权限位组成一组权限,即:suidsgidsticky。可表示为:

二进制表示法 八进制表示法
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7

基于八进制方式赋权时,可用于默认的三位八进制数字左侧再加以为八进制数字:

例如:chmod 4755 /path/to/dir 其中4为一组特殊权限,二进制表示为100,代表特殊权限SUID

 


练习


1、 复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。


2、 编辑/etc/group文件,添加组hadoop。


3、 手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。


4、 复制/etc/skel目录为/home/hadoop,要求修改hadoop目录的属组和其它用户没有任何访问权限。


5、 修改/home/hadoop目录及其内部所有文件的属主为hadoop,属组为hadoop。


6、显示/proc/meminfo文件中以大写或小写S开头的行;用两种方式;


7、显示/etc/passwd文件中其默认shell为非/sbin/nologin的用户;


8、显示/etc/passwd文件中其默认shell为/bin/bash的用户;


9、找出/etc/passwd文件中的一位数或两位数;


10、显示/boot/grub2/grub.cfg中以至少一个空白字符开头的行;


11、显示/etc/grub2.cfg文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行;


12、打出netstat -tan命令执行结果中以‘LISTEN’,后或跟空白字符结尾的行;


13、添加用户bash, testbash, basher, nologin (此一个用户的shell为/sbin/nologin),而后找出当前系统上其用户名和默认shell相同的用户的信息;

原创文章,作者:N32_王先桥,如若转载,请注明出处:http://www.178linux.com/123826

发表评论

登录后才能评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.

评论列表(1条)

  • 马哥教育
    马哥教育 2018-09-13 10:22

    写的很好,如果都可以用多种方式来解答回更好

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code