第二周作业

195 阅读4分钟

第二周作业

1、从三个方面简述Linux中的权限体系,如传统权限、特殊权限、访问控制acl 传统权限: 第一个字符代表这个文件的类型:文件(-)、目录(d)、链接(l)、设备(b)。 后面的字符每3个一组(“rwx”的组合),其中,[r]代表可读(read)、[w]代表可写(write)、[x]代表可执行(execute)。

第一组为“文件拥有者可具备的权限” ; 第二组为“加入此群组之帐号的权限”; 第三组为“非本人且没有加入本群组之其他帐号的权限”。 rwx所在的位置是不会改变的,有该权限就会显示字符,没有该权限就变成减号(-)

第三栏的字符串表示所有者。 第四栏的字符串表示所在群组。

权限也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7。 在改变权限的命令中使用。

特殊权限: SUID, SGID, SBIT Set UID 当s这个标志出现在文件拥有者的x权限上时,例如刚刚提到的/usr/bin/passwd 这个文件的权限状态:“-rwsr-xr-x”,此时就被称为Set UID,简称为SUID的特殊权限。基本上SUID有这样的限制与功能:

SUID 权限仅对二进制程序(binary program)有效; 执行者对于该程序需要具有 x 的可执行权限; 本权限仅在执行该程序的过程中有效(run-time); 执行者将具有该程序拥有者(owner)的权限。 这个权限在一些特殊文件上非常有用,需要好好琢磨。 另外,SUID 仅可用在binary program 上, 不能够用在 shell script 上面!这是因为 shellscript 只是将很多的 binary 可执行文件叫进来执行而已!所以 SUID 的权限部分,还是得要看 shell script 调用进来的程序的设置,而不是 shell script 本身。当然,SUID 对于目录也是无效的~这点要特别留意。

Set GID

当s标志在文件拥有者的x项目为SUID,那s在群组的x时则称为Set GID, SGID

Sticky Bit 这个 Sticky Bit,SBIT目前只针对目录有效,对于文件已经没有效果了。SBIT对于目录的作用是:

当使用者对于此目录具有 w, x 权限,亦即具有写入的权限时; 当使用者在该目录下创建文件或目录时,仅有自己与 root 才有权力删除该文件 SUID/SGID/SBIT 权限设置

使用数字代表这几个权限

4 为 SUID 2 为 SGID 1 为 SBIT 设要将一个文件权限改为“-rwsr-xr-x”时,由于 s 在使用者权限中,所以是 SUID ,因此,在原先的 755 之前还要加上 4 ,也就是:“ chmod 4755 filename ”来设置!

ACL权限: getfacl 命令用于查看文件或目录当前设定的 ACL 权限信息。该命令的基本格式为:

getfacl 命令的使用非常简单,且常和 setfacl 命令一起搭配使用。

setfacl 命令可直接设定用户或群组对指定文件的访问权限。此命令的基本格式为:

[root@localhost ~]# setfacl 选项 文件名

setfacl -m:给用户或群组添加 ACL 权限

setfacl -d:设定默认 ACL 权限

默认 ACL 权限的作用是,如果给父目录设定了默认 ACL 权限,那么父目录中所有新建的子文件都会继承父目录的 ACL 权限。需要注意的是,默认 ACL 权限只对目录生效。

setfacl -R:设定递归 ACL 权限

递归 ACL 权限指的是父目录在设定 ACL 权限时,所有的子文件和子目录也会拥有相同的 ACL 权限。

setfacl -x:删除指定的 ACL 权限

使用 setfacl -x 命令,可以删除指定的 ACL 权限,例如,删除前面建立的 st 用户对 project 目录的 ACL 权限

setfacl -b:删除指定文件的所有 ACL 权限

此命令可删除所有与指定文件或目录相关的 ACL 权限。例如,现在我们删除一切与 project 目录相关的 ACL 权限

2、从ifconfig命令的回显信息中取出本机的ip地址

ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d '/'

3、写一个小脚本,显示出当前登录用户的名称、uid、家目录

#!/bin/bash name=whoami

dir=cd ~ ; pwd

uid=id -u

echo "Username is nameUIDis{name}** | UID is **{uid} | Dir is ${dir}"