linux系统权限管理

本文详细介绍了Linux权限管理的基础概念,包括文件和目录权限的三个类别(owner、group、other)、进制转换、chmod命令的用法、chown操作权限更改、遮罩码的作用、特殊权限(SUID、SGID、Sticky)以及facl文件访问控制列表。还涵盖了sudo提权的概念和sudoers配置。

权限简介

文件的权限主要针对三类对象进行定义:
owner:属主,u
group:属组,g
other:其它,o

每个文件针对每个访问者都定义了三种权限:

权限对应的操作对象权限说明
r文件可读,可以使用类似cat等命令查看文件内容
w文件可写,可以编辑或删除此文件
x文件可执行,eXacutable,可以在命令提示符下当作命令提交给内核运行
r目录可以对此目录执行ls以列出内部的所有文件
w目录可以在此目录中创建文件,也可删除此目录中的文件
x目录可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息

进制转换

在这里插入图片描述

权限管理命令

修改权限的命令chmod

[root@localhost ~]# mkdir haha
[root@localhost ~]# ls haha/
[root@localhost ~]# ll
总用量 
-rw-------. 1 root root 1194 3月   3 10:27 anaconda-ks.cfg
drwxr-xr-x. 2 root root    6 7月   6 00:35 haha
-rw-r--r--. 1 root root 1421 3月   3 10:28 initial-setup-ks.cfg
[root@localhost ~]# chmod 444 haha/
[root@localhost ~]# ll
总用量 3
-rw-------. 1 root root 1194 3月   3 10:27 anaconda-ks.cfg
dr--r--r--. 2 root root    6 7月   6 00:35 haha
-rw-r--r--. 1 root root 1421 3月   3 

-R 递归修改权限

[root@localhost ~]# cd /opt/
[root@localhost opt]# mkdir j n h k
[root@localhost opt]# ls
h  j  k  n
[root@localhost opt]# ls -l
总用量 0
drwxr-xr-x. 2 root root 6 7月   6 00:38 h
drwxr-xr-x. 2 root root 6 7月   6 00:38 j
drwxr-xr-x. 2 root root 6 7月   6 00:38 k
drwxr-xr-x. 2 root root 6 7月   6 00:38 n
[root@localhost opt]# chmod -R  666 /opt/
[root@localhost opt]# ls -l
总用量 0
drw-rw-rw-. 2 root root 6 7月   6 00:38 h
drw-rw-rw-. 2 root root 6 7月   6 00:38 j
drw-rw-rw-. 2 root root 6 7月   6 00:38 k
drw-rw-rw-. 2 root root 6 7月   6 00:38 n
[root@localhost opt]# 
//修改三类用户的权限:
//修改某类用户或某些类用户权限:
//u,g,o,a(用户类别)
//chmod 用户类别=MODE file,.....
//chmod 用户类别=MODE,用户类别=MODE file,.....
//修改某类的用户某位或某些位权限:
//u,g,o,a(用户类别)
//chmod 用户类别+|-MODE file,.....
//chmod 用户类别+|-MODE,用户类别+|-MODE file,.....
//chmod +|-MODE file,.....

修改文件属主和属组的命令chown

[root@localhost opt]# ll -s
总用量 0
0 drw-rw-rw-. 2 root root 6 7月   6 00:38 h
[root@localhost opt]# chown haha h  //修改属主
[root@localhost opt]# ll -s
总用量 0
0 drw-rw-rw-. 2 haha root 6 7月   6 00:38 h

[root@localhost opt]# chown .haha h  //修改属组,可以用chgep haha h
[root@localhost opt]# ls -l
总用量 0
drw-rw-rw-. 2 haha haha 6 7月   6 00:38 h

-R 修改目录及其内部文件的属主(递归修改)

[root@localhost opt]# ls -l
总用量 0
drw-rw-rw-. 2 root root 6 7月   6 00:38 h
drw-rw-rw-. 2 root root 6 7月   6 00:38 j
drw-rw-rw-. 2 root root 6 7月   6 00:38 k
drw-rw-rw-. 2 root root 6 7月   6 00:38 n
[root@localhost opt]# chown -R haha /opt/
[root@localhost opt]# ls -l
总用量 0
drw-rw-rw-. 2 haha root 6 7月   6 00:38 h
drw-rw-rw-. 2 haha root 6 7月   6 00:38 j
drw-rw-rw-. 2 haha root 6 7月   6 00:38 k
drw-rw-rw-. 2 haha root 6 7月   6 00:38 n

遮罩码

为什么文件创建以后默认权限是644? 为什么目录创建以后默认权限是755?
这是由遮罩码umask来控制的。

文件最终的权限为:
666-umask
目录最终的权限为:
777-umask

权限简介linux特殊权限

权限简介

前提:进程有属主和属组;文件有属主和属组
任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有可执行权限;
启动为进程后,其进程的属主为发起者,属组为发起者所属的组
进程访问文件时的权限取决于进程的发起者:
进程的发起者是文件的属主时,则应用文件属主权限
进程的发起者是文件的属组时,则应用文件属组权限
应用文件“其它”权限

特殊权限

linux默认权限是根据linux安全上下文的方式来控制的,而特殊权限的存在打破了linux安全上下文的规则。

SUID(4)     //运行程序时,这个程序启动的进程的属主是程序文件自身的属主,而不是启动者为属主
    chmod u+s file
    chmod u-s file
    //如果file本身原来就有执行权限,则SUID显示为s,否则显示为S
    
SGID(2)     //运行程序时,这个程序启动的进程的属组是程序文件自身的属组,而不是启动者所属的基本组
    //默认情况下,用户创建文件时,其属组为此用户所属的基本组;
    //一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件或目录,其所属的组 \
    //为此设定了SGID的目录的属组
    chmod g+s DIR
    chmod g-s DIR
    //如果file本身原来就有执行权限,则SGID显示为s,否则显示为S
    
Sticky(1)       //在一个公共目录,每个人都能创建文件,删除自己的文件,但是不能删除别人创建的文件
    chmod o+t DIR
    chmod o-t DIR
    //如果DIR本身原来就有执行权限,则Sticky显示为t,否则显示为T
    
4755    //有SUID,文件权限为755
2755    //有SGID,文件权限为755
1755    //有Sticky,文件权限为755
//这里前面的4、2、1分别表示SUID、SGID、Sticky

文件系统访问控制列表facl

facl(Filesystem Access Control List),利用文件扩展保存额外的访问控制权限。

//语法:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
    -m      //设定
[root@localhost opt]# setfacl -m u:haha:r-- /opt/
[root@localhost opt]# getfacl /opt/
getfacl: Removing leading '/' from absolute path names
# file: opt/
# owner: haha
# group: root
user::rw-
user:haha:r--
group::rw-
mask::rw-
other::rw-
 
       u:UID:perm 
       g:GID:perm 
    //setfacl -m u:test:rw file
    //setfacl -m g:test:rw file
    //如果要为某个目录设定默认的访问控制列表,只需要设定时在u或g前面加上d即可。 如:\
    //setfacl -m d:u:test:rw file,此时在此目录中创建的文件均继承此访问控制列表所设置的权限
    -x      //取消
>[root@localhost opt]# setfacl -x u:haha /opt/
[root@localhost opt]# getfacl /opt/
getfacl: Removing leading '/' from absolute path names
# file: opt/
# owner: haha
# group: root
user::rw-
group::rw-
mask::rw-
other::rw-
 
        u:UID
        g:GID
    //setfacl -x u:test file
    //setfacl -x g:test file
    -b      //Remove all 
[root@localhost opt]# getfacl /opt/
getfacl: Removing leading '/' from absolute path names
# file: opt/
# owner: haha
# group: root
user::rw-
user:haha:r--
group::rw-
group:hh:rwx
mask::rwx
other::rw-
[root@localhost opt]# setfacl -b /opt/
[root@localhost opt]# getfacl /opt/
getfacl: Removing leading '/' from absolute path names
# file: opt/
# owner: haha
# group: root
user::rw-
group::rw-
other::rw-     
//语法:getfacl [-aceEsRLPtpndvh] file ...
//getfacl file

sudo提权

sudo可以实现某个用户能够以另外哪一个用户的身份通过哪些主机执行什么命令
sudo的配置文件:/etc/sudoers
使用visudo命令进行sudo的配置,每一行就是一个sudo条目,条目格式如下:
who which_hosts=(runas) command
who:User_Alias,表示运行命令者的身份
which_hosts:Host_Alias,通过哪些主机
runas:Runas_Alias,以哪个用户的身份
command:Cmnd_Alias,运行哪些命令

别名必须全部而且只能使用大写英文字母的组合,可以使用感叹号取反
别名分类:

  • 用户别名
    1.User_Alias NETWORKADMIN =
    2.用户的用户名
    3.组名,使用%引导
    4.还可以其它已经定义的用户别名

  • 主机别名
    1.Host_Alias =
    2.主机名
    3.IP地址
    4.网络地址
    5.其它主机别名

  • Runas别名
    1.Runas_Alias =
    2.用户名
    3.%组名
    4.其它的Runas别名

  • 命令别名
    1.Cmnd_Alias =
    2.命令路径
    3.目录(此目录内的所有命令)
    4.其它已定义的命令别名

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值