四文件属性,用户管理,权限体系,正则式
Posted lichengbo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了四文件属性,用户管理,权限体系,正则式相关的知识,希望对你有一定的参考价值。
1.文件属性
1.1文件属性概述
ls -lhi 每一列的含义
1.2 inode与block
- cat oldboy.txt 与lnode block
- 一个非空的文件
- inode:文件的属性信息
- block:文件的内容(文件是实体)
概念 |
说明 |
特点 |
inode(索引节点) |
存放文件的属性信息(大小,权限,时间,连接数),存放文件block的位置(指向文件实体的指针)。没有存放文件名。 |
|
block 块(数据块) |
存放文件数据空间。(文件内容) |
|
1.3 Linux文件类型
- Linux:linux下面的扩展名是给我们人看的。
- Windows:通过扩展名区分不同的文件,如果扩展名改变,默认无法识别文件。
Linux常见扩展名 |
作用 |
.txt |
普通文件 |
.cfg .conf |
配置文件 |
.sh .bash |
脚本文件 |
.py |
Python 脚本文件 |
.html |
html文件 网站文件。 |
.php .jsp |
一些语言的代码文件php java |
- 查看文件类型
Linux文件类型 |
|
file 文件 |
|
directory 目录 |
|
link 软连接 |
|
boolk 设备文件 |
磁盘,硬盘,U盘,光驱,移动硬盘,移动固态硬盘 |
character特殊符号文件 |
用于输出或吸收字符 |
管道文件(了解) |
|
套接字文件(了解) |
案例01 查看文件类型
[root@lichengbo-nb ~]# file /bin/find /etc/hostname /tmp/etc.tar.gz 二进制文件(命令) /bin/find: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=fd27753c2a274155615007bf3f5289378cf7b513, stripped 普通文本文件 /etc/hostname: ASCII text 普通文件文本文件 数据文件 /tmp/etc.tar.gz: gzip compressed data, from Unix, last modified: Fri Apr 28 16:35:54 2023 数据文件,需要使用专用的命令查看
案例 02 (了解) 系统其他类型的文件案例
- 字符特殊设备文件 黑洞与白洞
白洞(生成随机字符,密码)
/dev/urandom
tr -cd \'a-zA-Z0-9\' </dev/urandom |head -c 100 (随机生成)
黑洞
/dev/null
[root@lichengbo-nb ~]# echo oldboy oldboy [root@lichengbo-nb ~]# echo oldboy >/dev/null
1.4软连接与硬链接
- 概述
- 软连接:softlink软链接,symlink符号链接,类似于windows快捷方式,方便我们 快速访问某个文件或目录,应用很广泛
- 硬链接:hardlink,在通一个磁盘分区中,inode号码相同的文件,互为硬链接,应用极少
- 特点
- 如何创建
创建软连接:
ln -s 源文件(用绝对路径) 软链接文件名字及位置
[root@lichengbo-nb /oldboy]# ln -s oldboy.txt oldboy.txt-soft [root@lichengbo-nb /oldboy]# ll oldboy.txt* -rw-r--r--. 1 root root 0 Apr 28 17:04 oldboy.txt lrwxrwxrwx. 1 root root 10 Apr 28 17:05 oldboy.txt-soft -> oldboy.txt
案例01 现在nginx软件是安装在/app/nginx-1.20.2要求创建软连接/app/nginx 指向/app/nginx-1.20.2
[root@lichengbo-nb /oldboy]# mkdir -p /app/nginx-1.20.2 [root@lichengbo-nb /oldboy]# tree /app/ /app/ └── nginx-1.20.2 1 directory, 0 files [root@lichengbo-nb /oldboy]# ln -s /app/nginx-1.20.2 /app/nginx [root@lichengbo-nb /oldboy]# ll /app total 0 lrwxrwxrwx. 1 root root 17 Apr 28 17:13 nginx -> /app/nginx-1.20.2 drwxr-xr-x. 2 root root 6 Apr 28 17:13 nginx-1.20.2 [root@lichengbo-nb /oldboy]# cd /app/nginx [root@lichengbo-nb /app/nginx]# pwd /app/nginx [root@lichengbo-nb /app/nginx]# pwd -P /app/nginx-1.20.2
创建硬链接:
ln
[root@lichengbo-nb ~]# cd /oldboy [root@lichengbo-nb /oldboy]# ll total 0 -rw-r--r--. 1 root root 0 Apr 28 17:04 oldboy.txt lrwxrwxrwx. 1 root root 10 Apr 28 17:05 oldboy.txt-soft -> oldboy.txt [root@lichengbo-nb /oldboy]# ln oldboy.txt oldboy.txt_hard [root@lichengbo-nb /oldboy]# ll -i oldboy.txt* 100709007 -rw-r--r--. 2 root root 0 Apr 28 17:04 oldboy.txt 100709007 -rw-r--r--. 2 root root 0 Apr 28 17:04 oldboy.txt_hard 100709008 lrwxrwxrwx. 1 root root 10 Apr 28 17:05 oldboy.txt-soft -> oldboy.txt
- 软链接与硬链接的特点
1、软连接是最常用的,给文件、目录创建软链接。
2、硬链接应用极少
3、软链接是存放的源文件的位置。
4、硬链接在同一个分区中文件的inode号码一致,类似与一个大楼的不通入口。
5、可以给文件和目录创建软链接,只能给文件创建硬链接
- 怎么没的
- 删除源文件:软链接失效(红底白字闪烁),硬链接可以继续访问与使用。文件是还在的。
- 删除软链接:对于其他没有影响。
- 删除硬链接:源文件的软链接没有影响
- 删除文件所有硬链接:文件测不发访问,相当于文件不存在。
- 面试题:软链接与硬链接区别
- 软链接是通过ln -s创建,硬链接是通过ln命令创建。
- 软链接:类似与快捷方式,他存放的是源文件的位置。
硬链接:在同一个分区中,inode号码相同的文件互为硬链接。
软链接可以给文件、目录创建软链接,很常用。
硬链接只能给文件创建硬链接,目录无法创建硬链接。 - 删除源文件:软链接失效(红底白字闪烁),硬链接可以继续访问与使用。文件是还在的。
删除软链接:对于其他没有影响。
删除硬链接:源文件的软链接没有影响
删除文件所有硬链接:文件测不发访问,相当于文件不存在。
1.5文件的3种时间
时间 |
含义 |
详细 |
mtime modify time |
修改时间 |
文件内容修改了 |
atime acess time |
访问时间 |
只要你看一次文件,时间就会改变。 |
ctime change time |
文件属性改变时间 |
文件属性信息大小,权限,所有者,硬链接数 |
[root@lichengbo-nb /oldboy]# touch lidao.txt 检查初始的时间 [root@lichengbo-nb /oldboy]# stat lidao.txt File: ‘lidao.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 100709009 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2023-04-28 17:51:58.925044701 +0800 Modify: 2023-04-28 17:51:58.925044701 +0800 Change: 2023-04-28 17:51:58.925044701 +0800 Birth: - [root@lichengbo-nb /oldboy]# echo sadasdasd >lidao.txt 检查mtime [root@lichengbo-nb /oldboy]# stat lidao.txt File: ‘lidao.txt’ Size: 10 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 100709009 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2023-04-28 17:51:58.925044701 +0800 Modify: 2023-04-28 17:53:41.198045591 +0800 Change: 2023-04-28 17:53:41.198045591 +0800 Birth: - [root@lichengbo-nb /oldboy]# cat lidao.txt sadasdasd 检查atime [root@lichengbo-nb /oldboy]# stat lidao.txt File: ‘lidao.txt’ Size: 10 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 100709009 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Context: unconfined_u:object_r:default_t:s0 Access: 2023-04-28 17:54:09.167045834 +0800 Modify: 2023-04-28 17:53:41.198045591 +0800 Change: 2023-04-28 17:53:41.198045591 +0800
小结
- 文件属性概述
- inode与block特点
- 文件类型
- 软连接与硬链接
- 文件的三种时间
2.用户管理体系
- 熟练掌握用户管理的命令,用户安全防范操作。
2.1用户管理概述
- 为何要有用户。
- 未来通过不同的用户远程连接到linux系统,然后进行操作与维护。
- 避免每个运维、开发都是用root,出现紧急情况无法追责与排查。
- 未来安全要求严格:连接linux之前都会有跳板机,堡垒机进行防护。
- Linux多用户的系统,同一时间可以登录多个用户。
- Linux多任务的系统。
2.2用户分类
- UID 用户身份证号
- GID 用户的户口本号码
用户 |
含义 |
UID |
root用户 |
最高权限用户 |
0 |
普通用户 |
只对自己家目录拥有权限的用户 |
1000开始 |
虚拟用户(傀儡用户) |
这种用户存在是用与让一些服务正常运行,一些服务运行需要指定的用户。 |
uid是1-999(非唯一判断标准) |
2.3用户相关文件
文件 |
含义 |
/etc/passwd |
存放用户的信息(非密码信息) |
/etc/group |
存放用户组的信息 |
/etc/shadow |
存放密码的信息 |
/etc/gshadow |
用户组密码的信息 |
/etc/profile |
环境变量(PS1),别名配置文件 |
/etc/bashrc |
别名配置文件 |
~/.bashrc |
当前用户生效的别名 |
~/.bash_profile |
当前用户生效的环境变量 |
- /etc/passwd每一列的含义
2.4用户相关目录
- /etc/skel/
- /etc/profile.d/
目录 |
含义 |
/etc/skel |
用户家目录的模板,添加用户的用户的家目录会从这里复制。 |
/etc/profile.d |
用户登录系统后会执行这个目录下面以.sh结尾的文件 |
[root@lichengbo-nb /oldboy]# ll -a /etc/skel total 24 drwxr-xr-x. 2 root root 62 Apr 3 17:27 . drwxr-xr-x. 82 root root 8192 Apr 28 16:31 .. -rw-r--r--. 1 root root 18 Apr 1 2020 .bash_logout 用户退出的时候,执行里面的命令 -rw-r--r--. 1 root root 193 Apr 1 2020 .bash_profile 配置环境命令 -rw-r--r--. 1 root root 231 Apr 1 2020 .bashrc 配置别名
故障案例:
现象:输入命令的时候,命令行变成了-bash-4.1$ 或-bash-4.2$ 样子。
原因:用户不小心删除了当前用户家目录下面的环境变量相关文件.bash*
解决:从/etc/skel/.bash*复制到当前用户家目录即可。重新登录即可
cp /etc/skel/.bash* ~
模拟故障案例:
临时取消/etc/profile中PS1的配置
添加用户: useradd oldboy
切换用户: su – oldboy
搞事情,模拟故障:
[oldboy@lichengbo-nb ~]$ \\rm -rf /*
退出用户:ctrl+d 或出入命令logout
[root@lichengbo-nb ~]# su - oldboy Last login: Fri Apr 28 19:31:37 CST 2023 on pts/0 -bash-4.2$ -bash-4.2$
恢复故障:
先进入到有问题的用户
-bash-4.2$ cp /etc/skel/.bash* ~ -bash-4.2$ logout [root@lichengbo-nb ~]# su - oldboy Last login: Fri Apr 28 19:33:26 CST 2023 on pts/0 [oldboy@lichengbo-nb ~]$
2.5用户管理命令
1)增加用户:useradd添加用户 adduser添加用户
useradd选项 |
|
基本用法:useradd 用户名 |
|
-s |
添加用户的时候指定用户的命令解释器。如果不指定默认是/bin/bash |
-M |
添加用户的时候不创建家目录。(一般与-sM搭配使用) |
-u |
添加用户的时候指定UID |
-r |
添加系统用户(不创建家目录,uid 1-999),命令解释器是bash) |
-G |
添加用户的时候,让用户属于多个组 |
-g |
主要组(原生组) |
[root@lichengbo-nb ~]# ll /sbin/useradd /sbin/adduser lrwxrwxrwx. 1 root root 7 Apr 3 17:27 /sbin/adduser -> useradd -rwxr-xr-x. 1 root root 137616 Aug 9 2019 /sbin/useradd
案例01 添加用户oldboy
命令:useradd oldboy
[root@lichengbo-nb ~]# grep \'oldboy\' /etc/passwd oldboy:x:1000:1000::/home/oldboy:/bin/bash
案例02 添加一个虚拟用户 命令解释器/sbin/nologin 不创建家目录
无法登录系统的用户,也无法切换到这个用户。
[root@lichengbo-nb ~]# useradd -s /sbin/nologin -M mysql [root@lichengbo-nb ~]# su - mysql su: warning: cannot change directory to /home/mysql: No such file or directory This account is currently not available. [root@lichengbo-nb ~]# ll /home total 0 drwx------. 2 oldboy oldboy 83 Apr 28 19:37 oldboy
案例03 了解 添加用户设置说明
[root@lichengbo-nb ~]# useradd -c \'this is lidao,oldboy linux teacher\' lidao996 [root@lichengbo-nb ~]# tail -5 /etc/passwd postfix:x:89:89::/var/spool/postfix:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin oldboy:x:1000:1000::/home/oldboy:/bin/bash mysql:x:1001:1001::/home/mysql:/sbin/nologin lidao996:x:1002:1002:this is lidao,oldboy linux teacher:/home/lidao996:/bin/bash
案例04 添加系统用户(不创建家目录,命令解释器是/bin/bash) system
[root@lichengbo-nb ~]# useradd -r system [root@lichengbo-nb ~]# grep system /etc/passwd systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin system:x:998:996::/home/system:/bin/bash [root@lichengbo-nb ~]# ll /home total 0 drwx------. 2 lidao996 lidao996 62 Apr 28 20:04 lidao996 drwx------. 2 oldboy oldboy 83 Apr 28 19:37 oldboy
案例05 添加用户指定UID 添加lidao007用户 指定UID为1111
[root@lichengbo-nb ~]# useradd -u 1111 lidao007 [root@lichengbo-nb ~]# grep lidao007 /etc/passwd lidao007:x:1111:1111::/home/lidao007:/bin/bash
案例06 添加用户的时候,让用户属于多个用户组 用户lidaoroot 属于root组
[root@lichengbo-nb ~]# useradd -G root,lidao lidaoroot useradd: group \'lidao\' does not exist [root@lichengbo-nb ~]# useradd -G root,lidao996 hotblood [root@lichengbo-nb ~]# id hotblood uid=1112(hotblood) gid=1112(hotblood) groups=1112(hotblood),0(root),1002(lidao996)
企业实际应用案例 添加一个虚拟用户mariadb 指定他的uid为1222
[root@lichengbo-nb ~]# useradd -s /sbin/nologin -m -u 1222 mariadb [root@lichengbo-nb ~]# id mariadb uid=1222(mariadb) gid=1222(mariadb) groups=1222(mariadb) [root@lichengbo-nb ~]# su - mariadb This account is currently not available. [root@lichengbo-nb ~]# grep mariadb /etc/passwd mariadb:x:1222:1222::/home/mariadb:/sbin/nologin
2)su切换用户 switch user
选项 |
|
格式:su – 用户名 |
|
- |
切换用户的时候,根系下用户的环境变量 |
-c |
切换到指定用户并执行命令,执行后返回。 |
案例01切换用户
[root@lichengbo-nb ~]# su - oldboy Last login: Fri Apr 28 20:35:55 CST 2023 on pts/0 [oldboy@lichengbo-nb ~]$ logout [root@lichengbo-nb ~]# su oldboy [oldboy@lichengbo-nb /root]$ env |grep root PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin MAIL=/var/spool/mail/root PWD=/root [oldboy@lichengbo-nb /root]$ exit [root@lichengbo-nb ~]# su - oldboy Last login: Fri Apr 28 20:40:20 CST 2023 on pts/0 Last failed login: Fri Apr 28 20:41:12 CST 2023 on pts/0 There was 1 failed login attempt since the last successful login. [oldboy@lichengbo-nb ~]$ env |grep root [oldboy@lichengbo-nb ~]$ env |grep oldboy USER=oldboy MAIL=/var/spool/mail/oldboy PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/oldboy/.local/bin:/home/oldboy/bin PWD=/home/oldboy HOME=/home/oldboy LOGNAME=oldboy
案例02 切换用户执行命令
[root@lichengbo-nb ~]# su - oldboy -c whoami oldboy [root@lichengbo-nb ~]#
su与su – 区别:
su:切换用户时不会更新环境变量
su - :切换用户时更新环境变量
切换用户流程:
3)设置密码:
Passwd给用户设置或修改密码 |
|
基本格式:passwd用户名 或passwd |
|
--stdin |
非交互式设置密码 |
案例01 修改oldboy用户的密码
[root@lichengbo-nb ~]# passwd oldboy Changing password for user oldboy. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully. [root@lichengbo-nb ~]#
案例02 非交互式设置密码
[root@lichengbo-nb ~]# echo \'lichengbo!!!\' |passwd --stdin oldboy Changing password for user oldboy. passwd: all authentication tokens updated successfully.
企业级保存密码方法
Excel表格
保存密码工具:keepass
4)删除用户
userdel删除用户 选项 |
|
-r |
删除用户及用户相关数据 |
案例01 删除用户 mysql
userdel删除用户的时候,只删除用户的信息,不会删除用户的家目录,邮件文件。
[root@lichengbo-nb ~]# userdel lidao007 [root@lichengbo-nb ~]# grep lidao007 /etc/passwd [root@lichengbo-nb ~]# ll /home total 0 drwx------. 2 hotblood hotblood 62 Apr 28 20:16 hotblood drwx------. 2 1111 1111 62 Apr 28 20:12 lidao007 drwx------. 2 1002 lidao996 83 Apr 28 20:51 lidao996 drwx------. 2 mariadb mariadb 62 Apr 28 20:26 mariadb drwx------. 2 oldboy oldboy 83 Apr 28 19:37 oldboy [root@lichengbo-nb ~]# userdel mysql [root@lichengbo-nb ~]# grep mysql /etc/passwd [root@lichengbo-nb ~]#
案例02 删除用户及相关文件 家目录
[root@lichengbo-nb ~]# userdel -r lidao666 [root@lichengbo-nb ~]# grep lidao666 /etc/passwd [root@lichengbo-nb ~]# ll /home total 0 drwx------. 2 hotblood hotblood 62 Apr 28 20:16 hotblood drwx------. 2 1111 1111 62 Apr 28 20:12 lidao007 drwx------. 2 1002 lidao996 83 Apr 28 20:51 lidao996 drwx------. 2 mariadb mariadb 62 Apr 28 20:26 mariadb drwx------. 2 oldboy oldboy 83 Apr 28 19:37 oldboy [root@lichengbo-nb ~]#
案例03 企业删除用户流程 企业应用案例
不推荐删除用户
如果非要删除,可以在/etc/passwd中注释掉用户。
[root@lichengbo-nb ~]# vim /etc/passwd [root@lichengbo-nb ~]# grep oldboy /etc/passwd #oldboy:x:1000:1000::/home/oldboy:/bin/bash [root@lichengbo-nb ~]# id oldboy id: oldboy: no such user [root@lichengbo-nb ~]#
5)修改用户信息(了解)
- usermod修改已存在的用户的信息,useradd添加用户时候设置的信息,usermod都可以改
- usermod的选项与useradd类似
案例01 修改用户的用户组信息
[root@lichengbo-nb ~]# usermod -G \'\' hotblood [root@lichengbo-nb ~]# id hotblood uid=1112(hotblood) gid=1112(hotblood) groups=1112(hotblood) [root@lichengbo-nb ~]# usermod -G \'root\' hotblood [root@lichengbo-nb ~]# id hotblood uid=1112(hotblood) gid=1112(hotblood) groups=1112(hotblood),0(root) [root@lichengbo-nb ~]# usermod -G \'\' hotblood [root@lichengbo-nb ~]# id hotblood uid=1112(hotblood) gid=1112(hotblood) groups=1112(hotblood) [root@lichengbo-nb ~]# usermod -g \'root\' hotblood [root@lichengbo-nb ~]# id hotblood uid=1112(hotblood) gid=0(root) groups=0(root)
6)查看用户信息
- 查看用户基本信息
- whoami 显示当前用户的名字
- id查看当前或指定用户的信息(uid,gid,用户组信息)
- 查看用户登录情况
- W
- last 查看用户的登录情况。
- lstlog 查看所有最近一次的登录情况
用户实时登录情况再做什么,以及能认识核心部分的含义
[root@lichengbo-nb ~]# w 22:37:42 up 6:11, 2 users, load average: 0.07, 0.03, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 16:27 6:06m 0.83s 0.83s -bash root pts/0 10.0.0.1 19:38 6.00s 0.48s 0.01s w
2.6用户组命令 (了解)
- groupadd 添加用户组
企业案例 添加用户的时候保证用户和用户组uid gid一致
如果直接添加的时候uid gid 不一致,那么需要先添加用户组,让后在创建用户。
groupadd -g 888 mysqlv2 -g指定gid
useradd -u 888 -g mysqlv2 mysqlv2 -g指定用户组
3.sudo权限集中管理
情景:
- linux系统,开发人员找我们要linux的权限,查看日志。
- 问题:给还是不给?
方法一:给root权限,这个很危险
方法二:给普通用户,但是这个无法满足要求,用户无法查看系统日志。
- 如果可以给他普通用户的权限,但是普通用户可以以root权限执行某个、某些命令。
- 类似与古代,你想拥有皇帝的权限,古代使用尚方大宝剑,只要亮剑,就相当于皇帝亲临。
- sudo权限。 给普通用户授权以root身份区执行命令
3.1进行sudo授权
- root授权
授权命令:visudo 编辑sudo授权
案例01授予oldboy以root权限运行rm和vi权限
oldboy ALL=(ALL) /bin/rm, /bin/vi
[root@lichengbo-nb ~]# visudo [root@lichengbo-nb ~]# grep oldboy /etc/sudoers oldboy ALL=(ALL) /bin/rm, /bin/vi [root@lichengbo-nb ~]#
案例02 授予oldboy用户所有命令
[root@lichengbo-nb ~]# visudo [root@lichengbo-nb ~]# grep oldboy /etc/sudoers #oldboy ALL=(ALL) /bin/rm, /bin/vi oldboy ALL=(ALL) ALL
案例03 授予oldboy用户所有命令并且不需要输入密码
[root@lichengbo-nb ~]# visudo [root@lichengbo-nb ~]# grep oldboy /etc/sudoers #oldboy ALL=(ALL) /bin/rm, /bin/vi #oldboy ALL=(ALL) ALL oldboy ALL=(ALL) NOPASSWD: ALL [root@lichengbo-nb ~]#
案例04 了解 授予/bin 目录所有命令
[root@lichengbo-nb ~]# visudo [root@lichengbo-nb ~]# grep oldboy /etc/sudoers #oldboy ALL=(ALL) /bin/rm, /bin/vi #oldboy ALL=(ALL) ALL #oldboy ALL=(ALL) NOPASSWD: ALL oldboy ALL=(ALL) /bin/*
3.2进行测试、使用
- oldboy使用
案例01 oldboy的演示
sudo -l
sudo vi /etc/passwd
[oldboy@lichengbo-nb ~]$ sudo -l Matching Defaults entries for oldboy on lichengbo-nb: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\\:/bin\\:/usr/sbin\\:/usr/bin User oldboy may run the following commands on lichengbo-nb: (ALL) /bin/rm, /bin/vi
案例02
[oldboy@lichengbo-nb ~]$ sudo -l Matching Defaults entries for oldboy on lichengbo-nb: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\\:/bin\\:/usr/sbin\\:/usr/bin User oldboy may run the following commands on lichengbo-nb: (ALL) ALL
小结
- root用户进行统一授权 visudo===vi /etc/sudoers
- 进行授权:命令
- 普通用户进行使用 sudo命令即可 sudo -l查看
4.用户管理补充
4.1 跳板机、堡垒机
- 跳板机/堡垒机:用户登录系统前的环境,用户需要先登录连接跳板机,然后才能操作linux 环境。在跳板机中会有命令,操作详细记录。
5. Linux权限体系
目标:
- 熟练掌握linux权限设置于查看
- 解决permission denied 权限拒绝问题
- 扩展:通过控制网站架构的安全。
5.1 linux权限体系概述
- Linux通过权限,用户控制人员访问,通过linux权限控制让系统、网站安全
5.2 linux权限体系rwx设置,计算
1)linux rwx 权限
权限字符 |
|
r |
read 读,是否可以读取内容? |
w |
write 写,是否可以修改内容? |
x |
executable 执行,是服可以执行内容?一般执行命令,脚本(shell脚本) |
- |
没有权限 |
2)linux权限与用户
3)linux权限与计算
权限字符 |
权限数字 |
|
r |
read 读,是否可以读取内容? |
4 |
w |
write 写,是否可以修改内容? |
2 |
x |
executable 执行,是服可以执行内容?一般执行命令,脚本(shell脚本) |
1 |
- |
没有权限 |
0 |
4)linux权限设置,用户设置
- change 修改
- chown 修改所有者
- chmod 修改权限
chown修改所有者 |
|
基本用法chown 用户.用户组 文件/目录 |
|
-R |
递归修改所有者 |
案例01 把/oldboy/oldboy.txt所有者和用户组改为oldboy
chown 用户 文件/目录
chown 用户.用户组 文件/目录
[root@lichengbo-nb ~]# chown oldboy.oldboy /oldboy/oldboy.txt [root@lichengbo-nb ~]# ll /oldboy/oldboy.txt -rw-r--r--. 2 oldboy oldboy 0 Apr 28 17:04 /oldboy/oldboy.txt [root@lichengbo-nb ~]# chown root /oldboy/oldboy.txt [root@lichengbo-nb ~]# ll /oldboy/oldboy.txt -rw-r--r--. 2 root oldboy 0 Apr 28 17:04 /oldboy/oldboy.txt [root@lichengbo-nb ~]# chown oldboy.oldboy /oldboy/oldboy.txt [root@lichengbo-nb ~]# chown .root /oldboy/oldboy.txt [root@lichengbo-nb ~]# ll /oldboy/oldboy.txt -rw-r--r--. 2 oldboy root 0 Apr 28 17:04 /oldboy/oldboy.txt
案例02 递归修改目录权限所有者
方法:chown -R oldboy.oldboy /oldboy
[root@lichengbo-nb ~]# chown -R oldboy.oldboy /oldboy [root@lichengbo-nb ~]# ll /oldboy total 4 -rw-r--r--. 1 oldboy oldboy 10 Apr 28 17:53 lidao.txt -rw-r--r--. 2 oldboy oldboy 0 Apr 28 17:04 oldboy.txt -rw-r--r--. 2 oldboy oldboy 0 Apr 28 17:04 oldboy.txt_hard lrwxrwxrwx. 1 oldboy oldboy 10 Apr 28 17:05 oldboy.txt-soft -> oldboy.txt
- chmod修改权限
chmod 权限 文件/目录 |
|
-R |
递归修改权限 |
- 通过数字修改权限
案例01 根据数字修改权限 把lidao.txt 权限修改为 777
[root@lichengbo-nb /oldboy]# ll lidao.txt -rw-r--r--. 1 oldboy oldboy 10 Apr 28 17:53 lidao.txt [root@lichengbo-nb /oldboy]# chmod 777 lidao.txt [root@lichengbo-nb /oldboy]# ll lidao.txt -rwxrwxrwx. 1 oldboy oldboy 10 Apr 28 17:53 lidao.txt
- chmod通过字符修改权限
所有者权限 用户组权限 其他人权限
user group other
chomd命令 |
ugo |
+或-或= |
r或w或x |
文件 |
案例02 给oldboy.txt所有者上增加x权限
[root@lichengbo-nb /oldboy]# ll oldboy.txt -rw-r--r--. 2 oldboy oldboy 0 Apr 28 17:04 oldboy.txt [root@lichengbo-nb /oldboy]# chmod u+x oldboy.txt 增加权限 [root@lichengbo-nb /oldboy]# ll oldboy.txt -rwxr--r--. 2 oldboy oldboy 0 Apr 28 17:04 oldboy.txt [root@lichengbo-nb /oldboy]# [root@lichengbo-nb /oldboy]# chmod u=x oldboy.txt [root@lichengbo-nb /oldboy]# ll oldboy.txt ---xr--r--. 2 oldboy oldboy 0 Apr 28 17:04 oldboy.txt
案例03 企业级应用案例给文件/etc/rc.d/rc.local增加x权限。
[root@lichengbo-nb /oldboy]# chmod ugo+x /etc/rc.d/rc.local [root@lichengbo-nb /oldboy]# chmod a+x /etc/rc.d/rc.local [root@lichengbo-nb /oldboy]# chmod +x /etc/rc.d/rc.local -rwxr-xr-x. 1 root root 473 Oct 2 2020 /etc/rc.d/rc.local
5)小结
- 熟练掌握:知晓任何文件所有者,用户组,其他人的权限。
- 熟练掌握:文件数字<=====>字母权限之间转换
- 熟练掌握:修改权限(数字和字母)和所有者
5.3Linux权限核心:文件/目录与rwx
- 目标:熟练掌握文件的rwx含义,目录的rwx含义,为了解决permission denied故障做铺垫
- 测试流程:root用户进行修改权限与所有者,普通用户进行测试
1)文件的rwx权限
文件的rwx权限 |
含义 |
r |
读,是否能查看文件内容(显示与查看) |
w |
写,是否能修改文件内容 |
x |
执行,是否能执行这个文件(命令,脚本) |
环境准备:
[root@lichengbo-nb /oldboy]# vim lidao.sh [root@lichengbo-nb /oldboy]# cat lidao.sh pwd whoami hostname [root@lichengbo-nb /oldboy]# ll lidao.sh -rw-r--r--. 1 root root 20 May 2 12:02 lidao.sh [root@lichengbo-nb /oldboy]# chown oldboy.oldboy lidao.sh [root@lichengbo-nb /oldboy]# ll lidao.sh -rw-r--r--. 1 oldboy oldboy 20 May 2 12:02 lidao.sh
oldboy用户进行初步的测试
[oldboy@lichengbo-nb /oldboy]$ cat lidao.sh pwd whoami hostname [oldboy@lichengbo-nb /oldboy]$ echo "date +%T" >>lidao.sh [oldboy@lichengbo-nb /oldboy]$ cat lidao.sh pwd whoami hostname date +%T [oldboy@lichengbo-nb /oldboy]$ /oldboy/lidao.sh -bash: /oldboy/lidao.sh: Permission denied [oldboy@lichengbo-nb /oldboy]$ ./lidao.sh -bash: ./lidao.sh: Permission denied
测试文件r权限
root用户
[root@lichengbo-nb /oldboy]# chmod u=r lidao.sh
oldbou用户
[oldboy@lichengbo-nb /oldboy]$ ll lidao.sh -r--r--r--. 1 oldboy oldboy 29 May 2 12:07 lidao.sh [oldboy@lichengbo-nb /oldboy]$ cat lidao.sh pwd whoami hostname date +%T [oldboy@lichengbo-nb /oldboy]$ echo \'pwd\' >>lidao.sh -bash: lidao.sh: Permission denied
小结:只有r权限,对于文件来说只能查看文件内容,无法修改与执行
测试文件的w权限
root用户:
[root@lichengbo-nb /oldboy]# chmod u=w lidao.sh
oldboy用户:
[oldboy@lichengbo-nb /oldboy]$ ll lidao.sh --w-r--r--. 1 oldboy oldboy 29 May 2 12:07 lidao.sh [oldboy@lichengbo-nb /oldboy]$ cat lidao.sh cat: lidao.sh: Permission denied [oldboy@lichengbo-nb /oldboy]$ echo \'hostname\' >>lidao.sh
小结:只有W权限,对文件来说只能写入内容,但是无法查看,需要r配合,无法执行
注意:如果通过vi/vim,强制修改文件,强制保存退出,导致源文件内容丢失。
测试文件的x权限
root用户:
[root@lichengbo-nb /oldboy]# chmod u=x lidao.sh
oldboy用户:
[oldboy@lichengbo-nb /oldboy]$ ll lidao.sh ---xr--r--. 1 oldboy oldboy 51 May 2 12:22 lidao.sh [oldboy@lichengbo-nb /oldboy]$ cat lidao.sh cat: lidao.sh: Permission denied [oldboy@lichengbo-nb /oldboy]$ echo \'hostname\' >>lidao.sh -bash: lidao.sh: Permission denied [oldboy@lichengbo-nb /oldboy]$ ./lidao.sh bash: ./lidao.sh: Permission denied
小结:只有x权限无法执行脚本,需要r权限配合。
文件有rx后可以执行
[oldboy@lichengbo-nb /oldboy]$ ll lidao.sh -r-xr--r--. 1 oldboy oldboy 51 May 2 12:22 lidao.sh [oldboy@lichengbo-nb /oldboy]$ cat lidao.sh echo 这个是一本脚本内容 hostname hostname [oldboy@lichengbo-nb /oldboy]$ ./lidao.sh 这个是一本脚本内容 lichengbo-nb lichengbo-nb
文件权限小结:
文件的rwx权限 |
含义 |
|
r |
读,是否能查看文件内容(显示与查看) |
|
w |
写,是否能修改文件内容, |
需要r权限配合 |
x |
执行,是否能执行这个文件(命令,脚本) |
需要r权限配合 |
2)目录的rwx权限
目录rwx |
含义 |
r |
查看,查看目录的内容 |
w |
修改,在目录中创建、删除、 重命名文件的权限。 |
x |
是否可以进入目录权限 |
目录测试环境准备:
[root@lichengbo-nb /oldboy]# chmod u=rx lidao.sh [root@lichengbo-nb /oldboy]# mkdir -p oldboydir [root@lichengbo-nb /oldboy]# touch /oldboy/oldboydir/lidao1..10.txt [root@lichengbo-nb /oldboy]# chown -R oldboy.oldboy /oldboy/oldboydir
oldboy用户初测
[oldboy@lichengbo-nb /oldboy]$ ll -d oldboydir/ drwxr-xr-x. 2 oldboy oldboy 187 May 2 12:34 oldboydir/ [oldboy@lichengbo-nb /oldboy]$ ll oldboydir/ total 0 -rw-r--r--. 1 oldboy oldboy 0 May 2 12:34 lidao10.txt -rw-r--r--. 1 oldboy oldboy 0 May 2 12:34 lidao1.txt -rw-r--r--. 1 oldboy oldboy 0 May 2 12:34 lidao2.txt -rw-r--r--. 1 oldboy oldboy 0 May 2 12:34 lidao3.txt -rw-r--r--. 1 oldboy oldboy 0 May 2 12:34 lidao4.txt -rw-r--r--. 1 oldboy oldboy 0 May 2 12:34 lidao5.txt -rw-r--r--. 1 oldboy oldboy 0 May 2 12:34 lidao6.txt -rw-r--r--. 1 oldboy oldboy 0 May 2 12:34 lidao7.txt -rw-r--r--. 1 oldboy oldboy 0 May 2 12:34 lidao8.txt -rw-r--r--. 1 oldboy oldboy 0 May 2 12:34 lidao9.txt
测试目录的r权限
root用户修改
[root@lichengbo-nb /oldboy]# chmod u=r oldboydir/
oldboy用户测试
[oldboy@lichengbo-nb /oldboy]$ ls oldboydir/ ls: cannot access oldboydir/lidao1.txt: Permission denied ls: cannot access oldboydir/lidao2.txt: Permission denied ls: cannot access oldboydir/lidao3.txt: Permission denied ls: cannot access oldboydir/lidao4.txt: Permission denied ls: cannot access oldboydir/lidao5.txt: Permission denied ls: cannot access oldboydir/lidao6.txt: Permission denied ls: cannot access oldboydir/lidao7.txt: Permission denied ls: cannot access oldboydir/lidao8.txt: Permission denied ls: cannot access oldboydir/lidao9.txt: Permission denied ls: cannot access oldboydir/lidao10.txt: Permission denied lidao10.txt lidao1.txt lidao2.txt lidao3.txt lidao4.txt lidao5.txt lidao6.txt lidao7.txt lidao8.txt lidao9.txt [oldboy@lichengbo-nb /oldboy]$ ll oldboydir/ ls: cannot access oldboydir/lidao1.txt: Permission denied ls: cannot access oldboydir/lidao2.txt: Permission denied ls: cannot access oldboydir/lidao3.txt: Permission denied ls: cannot access oldboydir/lidao4.txt: Permission denied ls: cannot access oldboydir/lidao5.txt: Permission denied ls: cannot access oldboydir/lidao6.txt: Permission denied ls: cannot access oldboydir/lidao7.txt: Permission denied ls: cannot access oldboydir/lidao8.txt: Permission denied ls: cannot access oldboydir/lidao9.txt: Permission denied ls: cannot access oldboydir/lidao10.txt: Permission denied total 0 -????????? ? ? ? ? ? lidao10.txt -????????? ? ? ? ? ? lidao1.txt -????????? ? ? ? ? ? lidao2.txt -????????? ? ? ? ? ? lidao3.txt -????????? ? ? ? ? ? lidao4.txt -????????? ? ? ? ? ? lidao5.txt -????????? ? ? ? ? ? lidao6.txt -????????? ? ? ? ? ? lidao7.txt -????????? ? ? ? ? ? lidao8.txt -????????? ? ? ? ? ? lidao9.txt
目录的r小结:目录只有r权限,无法查看详细信息,只能查看文件名,需要x权限的配置。
目录的x权限,进入目录的权限,能否访问或修改属性信息的权限
测试目录的w权限
root用户修改
[root@lichengbo-nb /oldboy]# chmod u=w oldboydir/
oldboy用户测试
[oldboy@lichengbo-nb /oldboy]$ ll -d oldboydir/ d-w-r-xr-x. 2 oldboy oldboy 187 May 2 12:34 oldboydir/ [oldboy@lichengbo-nb /oldboy]$ touch oldboydir/lidao007.txt touch: cannot touch ‘oldboydir/lidao007.txt’: Permission denied [oldboy@lichengbo-nb /oldboy]$ touch oldboydir/lidao007.txt [oldboy@lichengbo-nb /oldboy]$ ll oldboydir/ ls: cannot open directory oldboydir/: Permission denied
目录的w权限小结:
目录只有w权限,无法操作,需要x权限配合(严格意义需要rx权限配合)
小结:
目录rwx |
含义 |
|
r |
查看,查看目录的内容 |
需要x权限配合 |
w |
修改,在目录中创建、删除、 重命名文件的权限。 |
需要x配合(工作一般需要rx配合) |
x |
是否可以进入目录权限,能否查看或修改目录中文件属性信息 |
- 目录的w权限案例:oldboydir所有者是oldboy权限是777,问oldboy用户能否删除这个目录???
- 目录:删除文件或目录需要对谁拥有什么权限?
[root@lichengbo-nb ~]# chmod 777 oldboydir [lichengbo@lichengbo-nb /oldboy]$ ll -d oldboydir drwxrwxrwx. 2 lichengbo lichengbo 6 May 2 13:08 oldboydir [lichengbo@lichengbo-nb /oldboy]$ \\rm -rf oldboydir rm: cannot remove ‘oldboydir’: Permission denied [lichengbo@lichengbo-nb /oldboy]$
删除文件或目录要对文件或目录所在的目录拥有w(rwx)权限
演示修改/oldboy目录的所有者,改为lichengbo,检查删除情况
[root@lichengbo-nb /oldboy]# chown lichengbo /oldboy [root@lichengbo-nb /oldboy]# ll -d /oldboy drwxr-xr-x. 3 lichengbo root 103 May 2 13:08 /oldboy
5.4 permission denied权限排除
- 分析各种权限拒绝原因
1)操作与权限
文件rwx含义 |
目录rwx含义 |
|
r |
是否可以查看内容 |
查看,查看目录的内容(需要x配合) |
w |
是否可以修改文件内容(需要r) |
修改,在目录中创建、删除、 重命名文件的权限。需要x配合(工作一般需要rx配合) |
x |
是否可以执行文件(需要r) |
是否可以进入目录权限,能否查看或修改目录中文件属性信息 |
日常操作 |
需要权限 |
查看文件的内容 |
文件要有r权限 |
编辑或修改文件内容 |
文件需要rw权限 |
执行脚本/命令 |
文件需要有rx权限 |
查看目录内容 |
目录需要有rx权限 |
创建文件,删除文件 |
文件所在目录要有rwx权限 |
重命名 |
文件所在目录要有rwx权限 |
2)具体分析案例及流程
- 遇到故障permission denied权限拒绝
- 分析原因:分析文件、目录权限导致
- 详细分析:缺少什么具体的权限导致的
普通用户测试:
#案例01 ls -l /root
##与什么权限有关:文件、目录
##与目录确实什么权限??rx
##检查是否缺少rx
[lichengbo@lichengbo-nb /oldboy]$ ll /root ls: cannot open directory /root: Permission denied [lichengbo@lichengbo-nb /oldboy]$ ll -d /root dr-xr-x---. 2 root root 170 May 2 12:02 /root
检查发现oldboy用户对/root没有权限(最后三位权限)
案例02 echo \'#oldboy\' >>/etc/passwd
[lichengbo@lichengbo-nb /oldboy]$ echo \'#oldboy\' >>/etc/passwd -bash: /etc/passwd: Permission denied [lichengbo@lichengbo-nb /oldboy]$ #拥有rx权限就可以修改文件内容 [lichengbo@lichengbo-nb /oldboy]$ [lichengbo@lichengbo-nb /oldboy]$ ll /etc/passwd -rw-r--r--. 1 root root 1160 May 2 13:13 /etc/passwd [lichengbo@lichengbo-nb /oldboy]$ #oldboy对/etc/passwd只有r权限(最后三位)所以无法修改内容
总结
- 熟练掌握:知晓任何文件所有者、用户组、其他人的权限。随便一个用户你能知道当前用户对文件的权限。
- 熟练掌握:文件数字
用户的权限管理
用户的权限管理
用户的权限管理中包含主要的四部分:普通权限、特殊权限、文件的特殊属性、FACL:
一、普通权限:
普通权限下的进程安全上下文包括如下几点:
1、判断进程的所有者是否想要操作所有者的属主,如果是,就按照属主的权限进行授权,如果不是,就转到第二条;
2、判断进程所有者是否想要操作文件属组中的成员,如果是,就按照属组的权限进行授权,如果不是,就转到第三条;
3、按照其他用户的权限进行授权。
权限包括使用权和所有权,具体构成如下:
1、MODE(Permission):使用权
使用权中的权限位为r(readable 可读)、w(writeable 可写)、x(executable 可执行)
目录中权限位的具体用法如下:
r:可以使用ls命令获取其中所有目录的文件名列表;ls -l命令来获取命令中文件的详细属性信息,不能使用cd命令进入其中,也不能在路径中引用该目录;
w:可以修改此文件的文件名或文件列表,即可以在此命令中创建、修改或删除文件名;
x;可以使用ls命令来获取文件中纤细的属性信息,可以自路径中引用该目录,也可以使用cd命令来进入其中。
注意:x权限是目录的基本权限,换言之,任何目录都必须给任何用户开放x权限,如果没有执行权限则不能引用路径。
2、OWNERSHP:所有权
所有权包括三类:属主的、属组的、其他用户的
属主所有权:资源掌控的某些特定用户,用group表示,简写为g;
属组所有权:资源掌控的某个特定用户,用owner(user)表示,简写为u;
其他用户的所有权:未曾掌控资源的那些用户,用other表示,简写为o,为了安全,对于其他用户的写权限可以不给的话就不给;
全部用户可以用all表示,简写为a。
文件(非目录)中权限位的具体用法如下:
r:可以查看或获取该文件中存放的数据;
w;可以修改文件中存储的数据;
x:可以将此文件发起为进程。
其中使用ls -l(ll)命令可以显示文件的详细属性
权限的三种表达方式为:字符权限(如:rw-r--r--);8位二进制权限(如:110100100);十进制权限(如:644)
对于权限rw-r--r--的解释为:rw-(权限属主)、r--(文件属组)、r--(其他用户权限)
权限标识可以用三元组来表示,有权限用1表示,无权限用0表示,对于无权限在字符权限中可以用-来表示,具体例子如下:
--- 000
--x 001
-w- 010
-wx 011
r-- 100
r-x 101
rw- 110
rwx 111
注意:只有某个文件的属主才能修改文件的使用权限(root除外,root不受限定)
修改权限位的命令:chmod、chown、chgrp、install、mktemp
1、chmod:change mode
chmod修改文件的权限位(change file mode bits)
chmod格式为:
chmod[OPTION]…MODE[,MODE]…FILE…()注意省略中MODE用逗号分隔
MODE的权限标识所有法为:u、g、o、a(all)
+、-、=三个标识的授权方式如下:
+:在所有的权限基础上添加新的权限;
-:在所有的权限基础上去除某些权限;
=:不考虑原有文件,直接将该权限设置为目标文件。
在MODE中,r、w、x表示具体的内容,具体如下所示:
例如:chmod u+w file 改变属主
chmod g+rw file 改变属组
chmod u+x,g-wx,o-x file (注意用逗号隔开)
chmod u=rx,g=r,o=r file
chmod ug-x file
chmod +x file 默认的为a添加执行权限
chmod +w file 默认的只为属主添加写权限
注意:文件的执行权限,对于Linux文件系统来说是一种非常重要的安全网络标识,因为文件一旦具备了执行权限,移位着该文件可以被发起者执行为进程,所以默认情况下,文件都不具备执行权限。
chmod [OPTION]…OCTAL-MODE FILE(八进制数字标识法)
如果使用八进制数字标识法,则每次必须给足所有的权限位,如果给的权限位不完整,文件系统会自动补足,将给定的权限自动放在权限的右侧,左侧用0来补足。、
例如:cmd 640 file
chmod [OPTION]…--reference=RFILE FILE…
chmod --reference=/PATH/TO/SAMEFILE DES_FILE
例如:chmod --reference=a b
chmod中的选项R(recursive):递归,将目标目录中的文件基子目录和子目录中的文件统一设置为指定的权限标识。
2、chown
chown 可以修改文件的属主和属组(change file and group)
chown的格式为:
chown [OPTION]…[OWNER][:[GROUP]] FILE…
chown OWNER FILE 改变文件的属主或属组,其中可以存在省略
chown :GROUP FILE 只改变属组
chown OWNER FILE是将目标文件属主改为OWNER,同时将属组改为OWMER的基本组
chown OWNER:GROUP FILE将目标文件的属主和属组改为OWNER和GROUP
chown [OPTION]…--reference=RFILE FILE…
chown中的选项R(recursive):递归,将目标目录中的文件基子目录和子目录中的文件统一设置为指定的权限标识。
注意:修改OWNERSHIP操作只有超级用户(root)可以执行
3、chgrp
chgrp只能修改文件的属组(change group ownership)
chgrp [OPTION]…GROUP FILE…
chgrp [OPTION]… --reference=RFILE FIKE…
4、install命令
安装、复制文件,为文件赋予执行权限(copy files and set attributes)
install的复制包括单源复制和多源复制,如下:
单源复制:install[OPTION]…[-t] SOURCE DEST
多源复制:install[OPTION]…-t DIRECTORY SOURCE…
install[OPTION]…SOURCE…DIRECTORY…
创建目录:install [OPTION]… -d DIRECTORY…
install常用选项如下:
-m,--mode=MODE: 指定目标文件的权限,默认为755
-o,--owner=OWNER: 设定目标文件的属主,只能是root可用
-g,--group=GROUP: 设定目标文件的属组,仅root可用
注意:install命令不仅能复制目录,即其源不能为目录;如果其源为目录,则install经历了会进入目录,依次复制其中所有非目录文件到目录位置
5、mktemp命令
一般来说,临时文件都会创建在/tmp或/var下。在tmp目录中,无需手动删除,系统会定期自动清除这两个目录中的文件
mktemp的选项:-d,--directory:可以创建临时目录
例如:mktemp [-d] /PATH/TO/TMP.XXXXXX(至少3个XXX)
二、特殊权限
特殊权限包括SUID、SGID、STICKY,默认情况下,用户发起执行的一个进程,也就是说,该进程是以其发起者的身份在运行
1、SUID
功能作用:用户发起执行一个进程时,该程序文件如果拥有SUID权限的话,那么此程序发起的进程其属主为该程序文件的属主,而不是其发起者
SUID权限所显示的位置:文件的属主权限中的执行权限位;如果属主本就是执行权限,显示为s;否则,显示为S
管理文件的SUID权限为: chmod u+|-s FILE……
2、SGID
功能作用:如果某个目录对于一些用户有写权限并且设置了SGID权限时,则所有对此目录有写权限的用户在创建新的文件或目录以后,性文件的属组不在是创建用户的基本组,而是继承了该目录的组
SGID权限显示的位置:文件的属组权限中的执行权限位,如果属组本来及时执行权限,显示为s,否则显示为S
3、STICKY——粘滞位
STICKY的功能作用:如果某个目录中,有超过一个用户可以有写权限,则这多个用户都可以在该目录中随意创建、修改和删除文件名。如果为上述类似的目录设置了STICKY权限,则每个用户仍旧能够创建和修改文件名,但每个用户只能删除那些属主为其自身的文件名
sticky权限的显示位置:在文件权限的其他用户的执行权限位,如果原来就有执行权限,则显示为t,否则为T
管理文件的SYICKY权限:chmod o+|-t FILE…,具体表达格式如下:
Suid sgid sticky
--- 000 0
--t 001 1
-s- 010 2
-st 011 3
S-- 100 4
S-t 101 5
Ss- 110 6
Sst 111 7
特殊权限还有另一种修改方式:将特殊权限对应的八进制数字放置于普通权限八进制数字的前面即可
例如:想要把某个目录加上粘滞位:chmod 1755 DIRECTORY…
4、umask——权限遮罩码
在创建文件或目录时默认的权限生成标准,root的权限遮罩码为0022,普通用户遮罩码为0002。对于普通用户,不考虑特殊权限位,对于新创建的文件或目录,不遮挡属主的任何权限;遮住了属组的写权限和其他用户的写权限
例如:# mkdir test -->rwxr-xr-x
# touch test.txt---->rw-r--r--
可以理解为,将遮罩码的值变为二进制,凡是有1的位置,其权限在创建文件时,就不设置,默认情况下,文件的遮罩码已经有了一个0111,在此基础之上再次运用umask来遮罩
例如:000011011 -------110100100 644
-------111100100 744
三、文件的特殊属性
1、查看文件的特殊属性
lsattr: list file attributes on a linux second extended file system
格式:lsattr [-RVadv][files…]
2、修改设置文件的特殊属性
chattr: change file attributes on a linux file system
格式:chattr [-Rvf] [-v version] [mode] files…
格式中,mode会使用+、-、=的方式来设置,整个chattr命令最关键最核心的设置就是[mode]部分,[aAcCdDeijsStTu]都是所需要的属性
其中的+、-、=的意义如下:
+:在保有属性设定的基础上,添加新属性
-:从原有属性设置中移除指定的属性
=:不考虑原有的属性设置,直接将文件的属性更新为指定的属性内容
chattr的选项如下:
a: append,设置这个属性的文件,其内容不能别修改和删除,只能以追加的方式向文件中写数据,多数的服务器日志类文件会设置为此属性
A:atime,文件的访问时间戳,IO瓶颈,设置A属性,可以说的文件在访问时不更改文件的时间戳,、从而可以有效的防止IO瓶颈的发生
c: 设置文件是否压缩后再进行存储
C: 设置文件是否开启“写时复制”属性
d: 设置文件在使用dump进行备份的时候,不会称为备份目标
D: 设置文件在文件系统中的异步写操作(一般不设置)
i: 设置文件不能被删除、修改、设定链接关系
s:设置文件的保密性删除,一旦设置s属性的设置被删除,其对应存储设备中的使用空间会被一并收回
u: 跟s属性相反,如果这样的而文件被删除,则其存储于设备中的数据会被留存
chattr中,最常用的属性为i和a ,例如:chattr +i FILE
chattr中,常用选项R,递归的设置指定目录中的所有文件和子目录的属性
四、FACL(File Access Control List)
FACL为为文件赋予额外的权限机制,文件访问控制列表
文件的额外赋权机制为:在原有的u、g、o权限位之外,让普通用户能够控制权限赋予另外的用户和组的一种赋权机制。一般在CentOS或RHEL7版本以后的发行版中,才逐渐成熟
与FACL有关的命令有getfacl、Setfacl,具体表示如下:
getfacl :get file access control lists
格式:Getfacl [-aceEsRLPndvh] file…
其中,MODE一般采用权限符号标识法:有u:USERNAME:MODE、g:GROUPNAME:MODE
为用户赋予额外权限:setfacl -m u:USERNAME:MODE FILE…
为组赋予额外权限: setfacl -m g:GROUPNAME:MODE FILE…
撤销为用户赋予的额外权限:setfacl -x u:USERNAME
撤销为组赋予的额外权限:setfacl -x g:GROUPNAME
注意:如果设置了FACL之后再修改目标文件的使用权限,那么FACL中设置的条目就可能受到影响而导致要求不符,因此,如果真的需要设置FACL,就要在已经确定命令文件的使用权限以后再行设置。
以上是关于四文件属性,用户管理,权限体系,正则式的主要内容,如果未能解决你的问题,请参考以下文章
Linux中文件系统的权限管理(普通权限,特殊权限,文件的扩展属性,FACL)
Linux中文件系统的权限管理(普通权限,特殊权限,文件的扩展属性,FACL)