day06
今日所学~
不得不说root到底是root,只有使用root权限的时候,才会知道root权限到底有多大!
权限,说简单点就是你能对系统执行的操作,比如说读,写,删,复制,移动,执行,等等
root拥有至高权限,可以对系统做一切想做的事情,而其他用户,只能根据自己对系统拥有的权限,进行有限制的使用。
正所谓成也root,败也root,正因为权限的过大,反而是限制它的原因,不知不觉的一个误操作,就可能造成无法估计的后果。正因此,在非必要的情况下,是禁止使用root登录系统的。这时,用户的重要性就体现出来了,部分用户除了正常的使用linux,还可以给其设定一定的权限,用于linux日常管理维护。且,也注重了用户的个人隐私和工作区域的分离,保证了工作的便捷。
用户拥有什么权限其实在文件第一列就表达的一清二楚了。如下
drwxr-xr-x. 76 root root 8192 7月 14 15:34 etc
(用户对该文件权限细节) (有几个inode)(属主) (属组) (大小)(修改时间) (文件名)
信息都在第一列的drwxr-xr-x里,其中:
d:代表此文件是目录文件
随后三个一组 第一组(rwx)此组代表的是属主(创建文件夹的人的权限)第二组(r-x)(属组,该组内人的权限)第三组(r-x)(其他用户)
r:代表的意思是可读取该文件/目录 (八进制为4)
w:代表可以修改内容 (八进制为2)
x:代表可以执行该文件 (八进制为1)
用户在访问文件时,系统会依据以上条列进行判断,根据权限给与用户相应的输出。
在删除文件时,须对上级路径拥有写执行的权力才可进行删除操作(移动、创建同理),但这样会连查看都无法查看,没有任何作用,所以正常文件对于普通用户只给r-x,或者rw-,或r–。
代码示例(UGO)
chmod u=rwx,g=rw,o=r file_name
此命令代表属主有用读写执行此文件的权力,属组拥有读和写的权力,而其他用户只拥有读的权力,即rwxrw-r–
代码示例(NUM)
chmod 761 file_name
此命令代表属主有用读写执行此文件的权力,属组拥有读和写的权力,而其他用户只拥有读的权力,即rwxrw-r–
通过变更属组和属主来更好的管理文件的对外操作权限,保证文件的安全性
chown(变更文件属主和属组)
-R:递归变更
# 修改所属主
chown username /filename
# 修改所属组
chown .groupname /filename
# 修改所属主和组
chown username.groupname /filename
# 修改属主属组,并递归至目录内的文件
chown -R username.groupname /filename
chgrp:(变更文件的属组,这个并不常用,只能变更属组,但chown命令可以属组属主全修改或只修改单个)
更改属组
chgrp groupname /filename
进程能够访问什么样的文件,取决于进程使用的用户,拥有什么样的权限。(上节课说过部分UID是划分给进程使用的)
# 非正式登录
su root
# 正式登录
su - root
用户权限过小,很多场景下是无法工作的,这个时候就需要提权来进行文件处理,和管理了。
使用su命令加用户名,可用于切换指定用户,不指定则默认切换为root,(root可切换为任何人且不需要输入密码),在切换用户时,需要输入切换的用户的密码。(方便简单,可直接切换为root权限,但也伴随着风险,且需要知道root密码)
su登录又分为正式登录和非正式登录
su命令在登录时会加载环境变量和配置文件,分为
# 登陆shell加载顺序为:
# /etc/profile/ >> /etc/profile.d/*.sh >> ~/.bash_profile >> ~/.bashrc >> /etc/bashrc
# 非登录shell:(相当于打开一个新的bash窗口,用于执行其他文件)
# ~/.banshrc >> /etc/bashrc >> /etc/profile.d/*.sh
非登录shell相当于又开启了一个小窗口,但只加载部分变量来运行程序,因此,部分进程交由bash执行时,需要提前声明好变量和配置的调用
# 个人配置
~/.bash_profile
~/.bashrc
# 环境变量
/etc/profile
/etc/profile.d/*.sh
/etc/basnrc
将权限su成root,那其实和直接给了root账户没什么两样,且root密码还容易泄露,因此,在su的基础上出现了sudo提权。
在正常情况下,还是普通用户,但在某些时候,需要进行某些越权操作时,则可以在使用的命令前加sudo来暂时提权执行命令。
sudo就是暂时获得root的权限,当你被设置为sudo组内的一员时,可以通过sudo命令来执行那些无法执行的操作,但是sudo的权限可以被限制。
(关于组成员和sudo成员,是两个概念,本人在此部分概念有混淆,因此在这在补充一下。当前组成员或附加组成员,只拥有属于当前组文件对应的第二列给的权限类似于r-xr–r--,属主拥有读执行,其他人包括组成员也只有读的权限,但此时当你也是sudo组成员的时候,则可以通过sudo命令来以root的身份对该文件读写编辑等等等等,前提是你所在的sudo组拥有相关权限)
如普通用户无权删除opt目录,可通过sudo来完成
sudo rm -rf /opt
随后输入本身密码即可完成操作,输入密码的操作有一个有效期,在有效期内,下一次sudo操作无需再次输入密码
另外后期也可以通过审计日志来查看用户通过sudo做了哪些操作
tail -f /var/log/secure
权限配置文件位置在etc/sudoers,通过配置此文件夹可查看配置规则,用于给与特定的用户/组,可以执行特定的命令和特定的权限。
# 用于配置sudo权限
visudo
# 可用于检查自身登录用户的权限。
sudo -l
用户执行sudo命令时的流程
1:检查/var/db/sudo时间戳
2:有时间戳(之前sudo后密码输入记录)则不需要输入密码,否则需要输入
3:输入密码后会检测是否拥有权限
4:执行or报错。