linux权限管理/权限配置/su/sudo

day06
今日所学~

不得不说root到底是root,只有使用root权限的时候,才会知道root权限到底有多大!

什么是权限

权限,说简单点就是你能对系统执行的操作,比如说读,写,删,复制,移动,执行,等等
root拥有至高权限,可以对系统做一切想做的事情,而其他用户,只能根据自己对系统拥有的权限,进行有限制的使用。

为什么要设置权限

正所谓成也root,败也root,正因为权限的过大,反而是限制它的原因,不知不觉的一个误操作,就可能造成无法估计的后果。正因此,在非必要的情况下,是禁止使用root登录系统的。这时,用户的重要性就体现出来了,部分用户除了正常的使用linux,还可以给其设定一定的权限,用于linux日常管理维护。且,也注重了用户的个人隐私和工作区域的分离,保证了工作的便捷。

权限的划分

用户拥有什么权限其实在文件第一列就表达的一清二楚了。如下

drwxr-xr-x.  76 root root 8192 714 15:34 etc

(用户对该文件权限细节) (有几个inode)(属主) (属组) (大小)(修改时间) (文件名)
信息都在第一列的drwxr-xr-x里,其中:
d:代表此文件是目录文件
随后三个一组 第一组(rwx)此组代表的是属主(创建文件夹的人的权限)第二组(r-x)(属组,该组内人的权限)第三组(r-x)(其他用户)
r:代表的意思是可读取该文件/目录 (八进制为4)
w:代表可以修改内容 (八进制为2)
x:代表可以执行该文件 (八进制为1)

用户在访问文件时,系统会依据以上条列进行判断,根据权限给与用户相应的输出。

如何设置权限

文件/目录权限设置(linux,一切皆文件)

在删除文件时,须对上级路径拥有写执行的权力才可进行删除操作(移动、创建同理),但这样会连查看都无法查看,没有任何作用,所以正常文件对于普通用户只给r-x,或者rw-,或r–。

chmod:修改文件权限(有两种方式可以修改,UGO/NUM,第二中更为方便)

代码示例(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

# 非正式登录
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

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报错。

linux权限管理/权限配置/su/sudo_第1张图片

你可能感兴趣的:(shell初学,linux,shell)