Linux权限管理

权限

前言

类Unix操作系统与MS-DOS操作系统的不同之处在于它们不仅是多任务系统(multitasking),还是多用户系统(multi-user)。该计算机将同时支持许多用户登陆使用。因此必须设计一种方法来保护用户免受其他用户所影响,不允许一个用户的操作使计算机崩溃,也不允许一个干扰属于另一个用户的文件。

用户,组,其他

在Unix安全模型中,用户可以拥有文件和目录,以及控制其访问权限。用户可以属于一个组,组由一个或多个用户组成。这些用户可以通过其权限访问文件和目录。除了授予访问权限外,所有者还可以授予一组用户的访问权,称为属组。

[root@iZerb5rob3dcf6Z ~]# id
uid=0(root) gid=0(root)=0(root)

创建用户帐户后,将为用户分配一个号码称为用户IDuid,然后将其映射到用户名。并且为用户分配了主组ID属组gid

用户标识

用户标识(UID)以16为二进制表示,其范围是:0-65535

管理员:0
普通用户:1-65535
	    系统用户:1-499(CentOS 6),1-999(CentOS 7)
	    登陆用户:500-60000,      1000-60000
管理员组:0
普通用户组:1-65535
	    系统用户组:1-499(CentOS 6),1-999(CentOS 7)
	    登陆用户组:500-60000,      1000-60000

用户帐户在/etc/passwd文件中定义,组在定义中在/etc/group文件中。创建用户帐户和组时,这些文件与/etc/shadow一起被修改,其中包含有关用户密码的信息。对于每个用户帐户,/etc/passwd文件定义用户(登录)名称,uidgid,帐户的真实姓名,主目录和登录Shell

[root@iZerb5rob3dcf6Z ~]# cat /etc/passwd | tail -n 1
xiongze:x:1000:1000::/home/xiongze:/bin/bash
[root@iZerb5rob3dcf6Z ~]# cat /etc/group | tail -n 1
xiongze:x:1000:
[root@iZerb5rob3dcf6Z ~]# cat /etc/shadow | tail -n 1
xiongze:!!:18425:0:99999:7:::

读,写,执行

文件和目录的访问权限分为读访问写访问执行访问

[root@iZerb5rob3dcf6Z ~]# ll package-lock.json 
-rw-r--r-- 1 root root 43129 6月   9 20:37 package-lock.json

列出的前十行是文件的属性,其中第一个是文件的类型

属性文件类型
-常规文件
d目录
l符号链接
C特殊字符文件。如终端或调制解调器
b特殊块文件。如硬盘驱动器,光盘驱动器等

注意:符号链接的属性为“lrwxrwxrwx”,是一个伪值,其真正的文件属性是符号链接所指向的文件的属性。

[root@iZerb5rob3dcf6Z ~]# ll file-sym 
 lrwxrwxrwx 1 root root 4 6月  11 15:21 file-sym -> file
[root@iZerb5rob3dcf6Z ~]# ll /dev/pts/0
 crw--w---- 1 root tty 136, 0 6月  12 14:02 /dev/pts/0
[root@iZerb5rob3dcf6Z ~]# ll /dev/vda
 brw-rw---- 1 root disk 253, 0 6月   9 20:17 /dev/vda

文件属性的其余九个字符(称为文件模式),代表文件所有者,文件组所属组以及其他人的读取,写入和执行权限:
在这里插入图片描述
权限属性
在这里插入图片描述

chmod - 更改文件模式

要更改文件或目录的模式(权限),使用chmod命令。只有文件的所有者或超级用户才能更改文件或目录的权限。chmod支持两种不同的方式来指定模式更改:八进制数表示符号表示。首先介绍八进制数字表示形式:

OctalBinaryFile Mode
0000- - -
1001- -x
2010- w -
3011- wx
4100r - -
5101r - x
6110r - x
7111rwx

通过使用三个八进制数字,我们可以为所有者,组属组和other更改权限:

root@iZerb5rob3dcf6Z ~]# ll permit.txt 
-rw-r--r-- 1 root root 0 6月  12 15:06 permit.txt
[root@iZerb5rob3dcf6Z ~]# chmod 600 permit.txt 
[root@iZerb5rob3dcf6Z ~]# ll permit.txt 
-rw------- 1 root root 0 6月  12 15:06 permit.txt

chmod还支持用于指定文件模式的符号表示法。符号表示为分为三个部分:更改谁,执行哪些操作,以及设置什么权限

chmod符号表示法:
在这里插入图片描述
如果未指定对象,则假定为“ all”。操作可能是“ +”,表示要添加权限
,“-”表示要取消权限,“ =”表示应用指定权限,而所有其他权限将被删除。权限用“ r”,“ w”和“ x”字符指定。Examples:

[root@iZerb5rob3dcf6Z ~]# ll permit.txt 
-rw------- 1 root root 0 6月  12 15:06 permit.txt
[root@iZerb5rob3dcf6Z ~]# chmod +x permit.txt 
[root@iZerb5rob3dcf6Z ~]# ll permit.txt 
-rwx--x--x 1 root root 0 6月  12 15:06 permit.txt
[root@iZerb5rob3dcf6Z ~]# chmod o-rw permit.txt 
[root@iZerb5rob3dcf6Z ~]# ll permit.txt 
-rwx--x--x 1 root root 0 6月  12 15:06 permit.txt
[root@iZerb5rob3dcf6Z ~]# chmod go=rw permit.txt 
[root@iZerb5rob3dcf6Z ~]# ll permit.txt 
-rwxrw-rw- 1 root root 0 6月  12 15:06 permit.txt
[root@iZerb5rob3dcf6Z ~]# chmod u+x,go+rx permit.txt 
[root@iZerb5rob3dcf6Z ~]# ll permit.txt 
-rwxrwxrwx 1 root root 0 6月  12 15:06 permit.txt

umask - 设置默认权限

umask命令控制文件创建时赋予其的默认权限。它使用八进制表示法来表示要从文件模式中删除的位的掩码。

[root@iZerb5rob3dcf6Z ~]# umask
  0022
[root@iZerb5rob3dcf6Z ~]# > testmk.txt
[root@iZerb5rob3dcf6Z ~]# ll testmk.txt 
 -rw-r--r-- 1 root root 0 6月  12 15:27 testmk.txt

其工作原理如下:
在这里插入图片描述
如果1出现在umask中,则删除了其所对应的属性,否则设置相应属性。这就是umask的作用。Examples:

[root@iZerb5rob3dcf6Z ~]# umask 777
[root@iZerb5rob3dcf6Z ~]# > mask777.txt ; ll mask777.txt 
---------- 1 root root 0 6月  12 15:39 mask777.txt
[root@iZerb5rob3dcf6Z ~]# umask 000
[root@iZerb5rob3dcf6Z ~]# > umask000.txt ; ll umask000.txt 
-rw-rw-rw- 1 root root 0 6月  12 15:40 umask000.txt

切换用户

在有些场景,我们有必要采用另一个用户的身份,获得用户特权来执行一些管理任务。有二种切换身份的方式:

  1. 使用su命令
  2. 使用sudo命令

在我们自己的shell会话中,可以普通用户的身份,使用该用户的用户名发起新的Shell会话,或以该用户身份发出单个命令。/etc/sudoers的配置文件定义了允许特定用户以假定的身份执行。

su

su使用替代用户和组ID运行Shell,如果包括“-l”选项,则所得的shell会话是指定shell的登录shell用户。这意味着已加载指定用户的环境,并且工作目录更改为指定用户的主目录。这通常是我们想要的。如果未指定,则工作目录不变。“-l”可以缩写“-”,这是最常用的方式:

[root@iZerb5rob3dcf6Z ~]# su - xiongze
最后一次失败的登录:二 6月  9 20:58:30 CST 2020从 220.172.212.163ssh:notty 上
最有一次成功登录后有 2 次失败的登录尝试。
[xiongze@iZerb5rob3dcf6Z ~]$ pwd
/home/xiongze
[xiongze@iZerb5rob3dcf6Z ~]$ 

切换超级用户启动shell

[xiongze@iZerb5rob3dcf6Z ~]$ su - root
 Password: 
 Last login: Fri Jun 12 09:52:14 CST 2020 from 1.49.55.242 on pts/1
[root@iZerb5rob3dcf6Z ~]# pwd
 /root
[root@iZerb5rob3dcf6Z ~]# exit
 logout
[xiongze@iZerb5rob3dcf6Z root]$ 

#不加选项-l,切换后工作目录不变
[root@iZerb5rob3dcf6Z ~]# su xiongze
[xiongze@iZerb5rob3dcf6Z root]$ pwd
/root

sudo

sudo以其他用户身份执行命令。sudo命令在很多方面都类似于su。管理员可以将sudo配置为允许普通用户执行以非受控的方式要求作为另一个用户(通常是超级用户)。特别是用户可能只能使用一个或多个特定命令,而不能使用其他命令。另一个重要的区别是使用sudo不需要访问超级用户的密码。要使用sudo进行身份验证,用户使用他/她自己的密码。

[xiongze@iZerb5rob3dcf6Z ~]$ cat /etc/shadow
 cat: /etc/shadow: 权限不够
[xiongze@iZerb5rob3dcf6Z ~]$ sudo cat /etc/shadow

我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:

    #1) 尊重别人的隐私。
    #2) 输入前要先考虑(后果和风险)。
    #3) 权力越大,责任越大。
    
[sudo] xiongze 的密码:
 xiongze 不在 sudoers 文件中。此事将被报告。

另一个重要的区别在于sudo不会启动新的Shell,也不会加载另一个用户的环境。
查看sudo授予了哪些权限:

[root@iZerb5rob3dcf6Z ~]# sudo -l
匹配 %2$s 上 %1$s 的默认条目:
    !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

用户 root 可以在 iZerb5rob3dcf6Z 上运行以下命令:
    (ALL) ALL

chown

更改文件所有者或所属组,使用此命令需要超级用户特权。

chown [owner][:[group]] file...

Examples:

[root@iZerb5rob3dcf6Z ~]# > ownship.txt ;ll ownship.txt 
-rw-r--r-- 1 root root 0 6月  12 16:33 ownship.txt
[root@iZerb5rob3dcf6Z ~]# chown xiongze ownship.txt ; ll ownship.txt 
-rw-r--r-- 1 xiongze root 0 6月  12 16:33 ownship.txt
[root@iZerb5rob3dcf6Z ~]# chown xiongze:xiaohong ownship.txt ; ll ownship.txt 
-rw-r--r-- 1 xiongze xiaohong 0 6月  12 16:33 ownship.txt
[root@iZerb5rob3dcf6Z ~]# chown :root ownship.txt ; ll ownship.txt 
-rw-r--r-- 1 xiongze root 0 6月  12 16:33 ownship.txt
[root@iZerb5rob3dcf6Z ~]# chown xiaohong:  ownship.txt ; ll ownship.txt 
-rw-r--r-- 1 xiaohong xiaohong 0 6月  12 16:33 ownship.txt

更改密码

passwd user

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值