第二周作业
1、从三个方面简述Linux中的权限体系,如传统权限、特殊权限、访问控制acl
传统权限分为:
属主权限
属组权限
其他权限
每个权限有:读(r)(4)、写(w)(2)、执行(x)(1)
改变文件权限命令:
chmod 777 file chmod a+x chmod u+r chmod g+w
特殊权限为SUID,SGID,Sticky
- SUID表示执行该命令(可执行文件)时,以该文件属主的身份运行,如常见的passwd修改密码命令
SUID只对二进制文件有效,对目录没有效果
给一个文件加上SUID权限命令为:
[root@centos7 ~]# chmod u+s cp [root@centos7 ~]# ll cp -rwsr-xr-x. 1 root root 155176 Mar 29 14:14 cp
- SGID对二进制文件设置,表示该命令(程序)执行时将以该文件属组的身份运行
SGID对目录设置,以后在该目录下创建的文件属组将自动所属该目录的属组
SGID设置命令:
[root@centos7 ~]# chmod g+s dir1 [root@centos7 ~]# ll -d dir1/ drwxr-sr-x. 2 root root 6 Mar 24 17:02 dir1/
SUID和SGID设置特殊权限后,在各自对应的权限位上将显示s符号
- Sticky只对目录有效
默认如果删除某个文件夹下的文件,只需对该文件夹有写和执行(wx)权限,不伦对文件是否有权限均可删除;如果对目录设置了sticky权限,那么只有文件所属主或者root能删除该文件。
Sticky设置命令:
#未设置sticky权限 [root@centos7 data]# ll total 0 drwxrwxrwx. 2 root root 32 Mar 29 14:29 sticky [root@centos7 data]# ll sticky/ total 0 -rw-------. 1 wang wang 0 Mar 29 14:29 file1 -rw-------. 1 wang wang 0 Mar 29 14:29 file2 #lisi 账号的身份 [lisi@centos7 data]$ ll total 0 drwxrwxrwx. 2 root root 32 Mar 29 14:29 sticky [lisi@centos7 data]$ ll sticky/ total 0 -rw-------. 1 wang wang 0 Mar 29 14:29 file1 -rw-------. 1 wang wang 0 Mar 29 14:29 file2 [lisi@centos7 data]$ rm -f sticky/file1 [lisi@centos7 data]$ ll sticky/ total 0 -rw-------. 1 wang wang 0 Mar 29 14:29 file2 #已设置sticky权限 [root@centos7 data]# chmod o+t sticky/ [root@centos7 data]# ll total 0 drwxrwxrwt. 2 root root 19 Mar 29 14:39 sticky #lisi 账号的身份 [lisi@centos7 data]$ ll total 0 drwxrwxrwt. 2 root root 19 Mar 29 14:39 sticky [lisi@centos7 data]$ ll sticky/ total 0 -rw-------. 1 wang wang 0 Mar 29 14:29 file2 [lisi@centos7 data]$ rm -f sticky/file2 rm: cannot remove ‘sticky/file2’: Operation not permitted
- ACL权限
对普通权限的一种补充,文件或者文件夹可以对某个用户或者某个组设置特定的权限
2、从ifconfig命令的回显信息中取出本机的ip地址
[root@centos7 data]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.0.150 netmask 255.255.255.0 broadcast 10.0.0.255 inet6 fe80::dd42:7811:889:606a prefixlen 64 scopeid 0x20<link> ether 00:0c:29:c1:a3:f4 txqueuelen 1000 (Ethernet) RX packets 6573 bytes 7724914 (7.3 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1931 bytes 169181 (165.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@centos7 data]# ifconfig | head -2 | grep 'inet' | tr -s ' ' | cut -d' ' -f3 10.0.0.150 [root@centos7 data]# ifconfig | grep 'broadcast' | tr -s ' ' | cut -d' ' -f3 10.0.0.150
[root@centos7 script]# ifconfig | grep 'broadc' | egrep -o "inet ([0-9]{1,3}\.){3}[0-9]{1,3}" |tr -d 'inet'
10.0.0.150
3、写一个小脚本,显示出当前登录用户的名称、uid、家目录
#!/bin/bash grep "^`whoami`" /etc/passwd | cut -d: -f1,3,6 | tr ":" "\n"
4、【选做】写一个脚本读取一个文件,读取一行计数一行
如:
Line 1: root:x:0:0:root:/root:/bin/bash
Line 2: bin:x:1:1:bin:/bin:/sbin/nologin
[root@centos7 script]# cat test.txt 你好吗 hello 你在哪 哈哈 [root@centos7 script]# ./read_file.sh test.txt Line 1:你好吗 Line 2:hello Line 3:你在哪 Line 4:哈哈 #!/bin/bash n=1 for i in `cat $1`;do printf "Line $n:%s\n" $i; let n=$n+1 done