关于云计算:Linux云计算04Linux用户及权限管理

7次阅读

共计 14942 个字符,预计需要花费 38 分钟才能阅读完成。

Linux 是一个多用户的操作系统,引入用户,能够更加方便管理 Linux 服务器,零碎默认须要以一个用户的身份登录,而且在零碎上启动过程也须要以一个用户身份器运行,用户能够限度某些过程对特定资源的权限管制。

本章介绍 Linux 零碎如何治理创立、删除、批改用户角色、用户权限配置、组权限配置及非凡权限深刻分析。

1 Linux 用户及组

Linux 操作系统对多用户的治理,是十分繁琐的,所以用组的概念来治理用户就变得简略,每个用户能够在一个独立的组,每个组也能够有零个用户或者多个用户。

Linux 零碎用户是依据用户 ID 来辨认的,默认 ID 长度为 32 位,默认 ID 编号从 0 开始,然而为了和老式零碎兼容,用户 ID 限度在 60000 以下,Linux 用户分总共分为三种,别离如下:

  • root 用户(ID 0)
  • 零碎用户(ID 1-499)
  • 普通用户(ID 500 以上)

Linux 零碎中的每个文件或者文件夹,都有一个所属用户及所属组,应用 id 命令能够显示以后用户的信息,应用 passwd 命令能够批改以后用户明码。Linux 操作系统用户的特点如下:

  • 每个用户领有一个 UserID,操作系统理论读取的是 UID,而非用户名;
  • 每个用户属于一个主组,属于一个或多个从属组,一个用户最多有 31 个从属组;
  • 每个组领有一个 GroupID;
  • 每个过程以一个用户身份运行,该用户可对过程领有资源管制权限;
  • 每个可登陆用户领有一个指定的 Shell 环境。

2 Linux 用户治理

Linux 用户在操作系统能够进行日常治理和保护,波及到的相干配置文件如下:

  • /etc/passwd 保留用户信息
  • /etc/shdaow 保留用户明码(以加密模式保留)
  • /etc/group 保留组信息
  • /etc/login.defs 用户属性限度, 明码过期工夫, 明码最大长度等限度
  • /etc/default/useradd 显示或更改默认的 useradd 配置文件

如需创立新用户,能够应用命令 useradd,执行命令 useradd superman 即可创立 superman 用户,同时会创立一个同名的组 superman,默认该用户属于 superman 主组。

useradd superman 命令默认创立用户 superman,会依据如下步骤进行操作:

  • 在 /etc/passwd 文件中增加用户信息;
  • 如应用 passwd 命令创立明码,明码会被加密保留在 /etc/shdaow 中;
  • 为 superman 创立家目录:/home/superman;
  • 将 /etc/skel 中的.bash 结尾的文件复制至 /home/superman 家目录;
  • 创立与用户名雷同的 superman 组,superman 用户默认属于 superman 同名组;
  • superman 组信息保留在 /etc/group 配置文件中。

在应用 useradd 命令创立用户时,能够反对如下参数:

用法:useradd [选项] 登录
useradd -D
useradd -D [选项]
选项:-b, --base-dir BASE_DIR                   指定新账户的家目录;-c, --comment COMMENT                     新账户的 GECOS 字段;-d, --home-dir HOME_DIR                   新账户的主目录;-D, --defaults                            显示或更改默认的 useradd 配置;-e, --expiredate EXPIRE_DATE              新账户的过期日期;-f, --inactive INACTIVE                   新账户的明码不活动期;-g, --gid GROUP                           新账户主组的名称或 ID;-G, --groups GROUPS                         新账户的附加组列表;-h, --help                                显示此帮忙信息并推出;-k, --skel SKEL_DIR                       应用此目录作为骨架目录;-K, --key KEY=VALUE                       不应用 /etc/login.defs 中的默认值;-l, --no-log-init                           不要将此用户增加到最近登录和登录失败数据库;-m, --create-home                           创立用户的主目录;-M, --no-create-home                        不创立用户的主目录;-N, --no-user-group                         不创立同名的组;-o, --non-unique                          容许应用反复的 UID 创立用户;-p, --password  PASSWORD                   加密后的新账户明码;-r, --system                              创立一个零碎账户;-R, --root CHROOT_DIR                     chroot 到的目录;-s, --shell SHELL                         新账户的登录 shell;-u, --uid UID                             新账户的用户 ID;-U, --user-group                          创立与用户同名的组;-Z, --selinux-user SEUSER                 为 SELinux 用户映射应用指定 SEUSER。

2.1 useradd 案例演示

1、新建 superman2 用户,并退出到 superman,superman1 从属组

[root@superman-vm01 ~]# useradd -G superman,superman1 superman2
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# cat /etc/passwd|grep superman2
superman2:x:1001:1002::/home/superman2:/bin/bash
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# id superman2
uid=1001(superman2) gid=1002(superman2) groups=1002(superman2),1000(superman),1001(superman1)
[root@superman-vm01 ~]# 

2、新建 superman3 用户,并指定新的家目录,同时指定其登陆的 SHELL

[root@superman-vm01 ~]# useradd superman3 -d /data/superman3 -s /bin/bash   
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# cat /etc/passwd|grep superman3
superman3:x:1002:1003::/data/superman3:/bin/bash
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# id superman3
uid=1002(superman3) gid=1003(superman3) groups=1003(superman3)
[root@superman-vm01 ~]# 

3 Linux 组治理

所有的 Linux 或者 Windows 零碎都有组的概念,通过组能够更加不便的治理用户,组的概念利用于各行各业,例如企业会应用部门、职能或天文区域的分类形式来治理成员,利用在 Linux 零碎,同样能够创立用户,并用组的概念对其治理。

Linux 组有如下特点:

  • 每个组有一个组 ID;
  • 组信息保留在 /etc/group 中;
  • 每个用户至多领有一个主组,同时还能够领有 31 个从属组。

通过命令 groupadd、groupdel、groupmod 来对组进行治理,具体参数应用如下:

groupadd 用法
-f, --force                       如果组曾经存在则胜利退出;并且如果 GID 曾经存在则勾销 –g;-g, --gid GID                    为新组应用 GID;-h, --help                       显示此帮忙信息并推出;-K, --key KEY=VALUE              不应用 /etc/login.defs 中的默认值;-o, --non-unique                 容许创立有反复 GID 的组;-p, --password PASSWORD          为新组应用此加密过的明码;-r, --system                     创立一个零碎账户;groupmod 用法        
-g, --gid GID                    将组 ID 改为 GID;-h, --help                       显示此帮忙信息并推出;-n, --new-name NEW_GROUP         改名为 NEW_GROUP;-o, --non-unique                 容许应用反复的 GID;-p, --password PASSWORD          将明码更改为(加密过的)PASSWORD;groupdel 用法
groupdel superman                  删除 superman 组;

3.1 组治理案例演示

1、groupadd 创立 hanxiao 组

[root@superman-vm01 ~]# groupadd hanxiao
[root@superman-vm01 ~]# 

2、groupadd 创立 hanxiao 组,并指定 GID 为 1010

[root@superman-vm01 ~]# groupadd -g 1010 hanxiao1
[root@superman-vm01 ~]# 

3、groupadd 创立一个 system 组,名为 hanxiao2 组

[root@superman-vm01 ~]# groupadd -r hanxiao2 
[root@superman-vm01 ~]#
[root@superman-vm01 ~]# cat /etc/group|grep hanxiao2
hanxiao2:x:982:
[root@superman-vm01 ~]# 

4、groupmod 批改组名称,将 hanxiao 组名,改成 hanxiao1

[root@superman-vm01 ~]# groupmod -n hanxiao3 hanxiao
[root@superman-vm01 ~]# 

5、groupmod 批改组 GID 号,将原 hanxiao1 组 gid 改成 gid 1020

[root@superman-vm01 ~]# cat /etc/group|grep hanxiao1
hanxiao1:x:1010:
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# groupmod -g 1020 hanxiao1
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# cat /etc/group|grep hanxiao1
hanxiao1:x:1020:
[root@superman-vm01 ~]# 

4 Linux 用户及组案例

useradd 次要用于新建用户, 而用户新建结束,能够应用 usermod 来批改用户及组的属性,如下为 usermod 具体参数:

用法:usermod [选项] 登录
选项:-c, --comment 正文                   GECOS 字段的新值;-d, --home HOME_DIR                   用户的新主目录;-e, --expiredate EXPIRE_DATE          设定帐户过期的日期为 EXPIRE_DATE;-f, --inactive INACTIVE               过期 INACTIVE 天数后,设定明码为生效状态;-g, --gid GROUP                       强制应用 GROUP 为新主组;-G, --groups GROUPS                   新的附加组列表 GROUPS;-a, --append GROUP                    将用户追加至上边 - G 中提到的附加组中,并不从其它组中删除此用户;-h, --help                            显示此帮忙信息并推出;-l, --login LOGIN                     新的登录名称;-L, --lock                            锁定用户帐号;-m, --move-home                       将家目录内容移至新地位 (仅于 - d 一起应用);-o, --non-unique                      容许应用反复的(非惟一的)UID;-p, --password PASSWORD               将加密过的明码 (PASSWORD) 设为新密码;-R, --root CHROOT_DIR                 chroot 到的目录;-s, --shell SHELL                     该用户帐号的新登录 shell 环境;-u, --uid UID                         用户帐号的新 UID;-U, --unlock                          解锁用户帐号;-Z, --selinux-user  SEUSER            用户账户的新 SELinux 用户映射。

4.1 usermod 案例演示

1、将 superman 用户属组批改为 superman,superman2 从属组;

[root@superman-vm01 ~]# id superman
uid=1000(superman) gid=1000(superman) groups=1000(superman)
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# usermod -G superman,superman2 superman 
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# id superman
uid=1000(superman) gid=1000(superman) groups=1000(superman),1002(superman2)
[root@superman-vm01 ~]#   

2、将 superman 用户退出到 superman3,superman4 从属组,- a 为增加新组,原组保留;

[root@superman-vm01 ~]# id superman
uid=1000(superman) gid=1000(superman) groups=1000(superman),1002(superman2)
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# usermod -a -G superman3,superman4 superman  
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# id superman
uid=1000(superman) gid=1000(superman) groups=1000(superman),1002(superman2),1003(superman3),1021(superman4)
[root@superman-vm01 ~]# 

3、批改 superman 用户,并指定新的家目录,同时指定其登陆的 SHELL;

[root@superman-vm01 ~]# cat /etc/passwd|grep superman
superman:x:1000:1000:superman:/home/superman:/bin/bash
superman2:x:1001:1002::/home/superman2:/bin/bash
superman3:x:1002:1003::/data/superman3:/bin/bash
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# usermod -d /tmp/ -s /bin/sh superman
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# cat /etc/passwd|grep superman       
superman:x:1000:1000:superman:/tmp/:/bin/sh
superman2:x:1001:1002::/home/superman2:/bin/bash
superman3:x:1002:1003::/data/superman3:/bin/bash
[root@superman-vm01 ~]#   

4、将 superman 用户名批改为 superman;

[root@superman-vm01 ~]# cat /etc/passwd|grep superman       
superman:x:1000:1000:superman:/tmp/:/bin/sh
superman2:x:1001:1002::/home/superman2:/bin/bash
superman3:x:1002:1003::/data/superman3:/bin/bash
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# usermod -l hanxiao superman 
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# cat /etc/passwd|grep superman
superman2:x:1001:1002::/home/superman2:/bin/bash
superman3:x:1002:1003::/data/superman3:/bin/bash
hanxiao:x:1000:1000:superman:/tmp/:/bin/sh
[root@superman-vm01 ~]#  

5、锁定 superman 用户及解锁 superman 用户办法;

[root@superman-vm01 ~]# usermod -L superman2         
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# su - superman2
Last login: Thu Jul  8 07:41:18 CST 2021 on pts/0
[superman2@superman-vm01 ~]$ 
[superman2@superman-vm01 ~]$ su - superman2
Password: 
su: Authentication failure
[superman2@superman-vm01 ~]$ exit
logout
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# usermod -U superman2
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# su - superman2
Last login: Thu Jul  8 07:42:49 CST 2021 on pts/0
Last failed login: Thu Jul  8 07:43:16 CST 2021 on pts/0
There were 2 failed login attempts since the last successful login.
[superman2@superman-vm01 ~]$ 
[superman2@superman-vm01 ~]$ su - superman2
Password: 
Last login: Thu Jul  8 07:43:29 CST 2021 on pts/0
[superman2@superman-vm01 ~]$ 

4.2 userdel 案例演示

应用 userdel 能够删除指定用户及其用户的邮箱目录或者 Selinux 映射环境:

  • userdel superman 保留用户的家目录;
  • userdel –r superman 删除用户及用户家目录,用户 login 零碎无奈删除;
  • userdel –rf superman 强制删除用户及该用户家目录,不管是否 login 零碎。

5 Linux 权限治理

Linux 权限是操作系统用来限度对资源拜访的机制,权限个别分为读、写、执行。零碎中每个文件都领有特定的权限、所属用户及所属组,通过这样的机制来限度哪些用户或用户组能够对特定文件进行相应的操作。

Linux 每个过程都是以某个用户身份运行,过程的权限与该用户的权限一样,用户的权限越大,则过程领有的权限就越大。

Lnux 中有的文件及文件夹都有至多三种权限,常见的权限如表所示:

权限 对文件的影响 对目录的影响
r(读取) 可读取文件内容 可列出目录内容
w(写入) 可批改文件内容 可在目录中创立删除内容
x(执行) 可作为命令执行 可拜访目录内容
目录必须领有 x 权限,否则无奈查看其内容

Linux 权限受权,默认是受权给三种角色,别离是 user、group、other,Linux 权限与用户之间的关联如下:

  • U 代表 User,G 代表 Group,O 代表 Other;
  • 每个文件的权限基于 UGO 进行设置;
  • 权限三位一组(rwx),同时需受权给三种角色,UGO;
  • 每个文件领有一个所属用户和所属组,对应 UGO,不属于该文件所属用户或所属组应用 O 来示意;

在 Linux 零碎中,能够通过 ls –l 查看目录的具体属性,如下所示:

[root@superman-vm01 ~]# ls -l /home
drwxr-xr-x  2 superman superman       15 Jul  7 07:27 superman

shuchaoyang 目录属性参数详解如下:

  • d 示意目录,同一地位如果为 - 则示意一般文件;
  • rwxrwxr-x 示意三种角色的权限,每三位为一种角色,顺次为 u,g,o 权限,如上则示意 user 的权限为 rwx,group 的权限为 r -x,other 的权限为 r -x;
  • 2 示意文件夹的链接数量,可了解为该目录下子目录的数量;
  • 从左到右,第一个 superman 示意该用户名,第二个 superman 则为组名,其它人角色默认不显示;
  • 15 示意该文件夹占据的字节数;
  • Jul 7 07:27 示意文件创建或者批改的工夫;
  • 最左边的 superman 为目录的名,或者文件名。

6 Chown 属主及属组

批改某个用户、组对文件夹的属主及属组,用命令 chown 实现,案例演示如下:

1、批改 superman 文件夹所属的用户为 root,其中 - R 参数示意递归解决所有的文件及子目录。

[root@superman-vm01 ~]# cd /home
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
drwx------ 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# chown -R root superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
drwx------ 3 root superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 

2、批改 superman 文件夹所属的组为 root。

[root@superman-vm01 home]# ll
total 0
drwx------ 3 root superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chown -R :root superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
drwx------ 3 root root 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 

或者
[root@superman-vm01 home]# ll
total 0
drwx------ 3 root superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chgrp -R root superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
drwx------ 3 root root 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 

3、批改 superman 文件夹所属的用户为 superman,组也为 superman。

[root@superman-vm01 home]# ll
total 0
drwx------ 3 root root 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chown -R superman:superman superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
drwx------ 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 

7 Chmod 用户及组权限

批改某个用户、组对文件夹的权限,用命令 chmod 实现,其中以代指 ugo,、-、= 代表退出、删除和等于对应权限,具体案例如下:

1、授予用户对 superman 目录领有 x 权限

[root@superman-vm01 home]# ll
total 0
drw------- 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chmod -R u+x superman 
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
drwx------ 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]#  

2、授予组对 superman 目录领有 rwx 权限

[root@superman-vm01 home]# ll
total 0
drwx------ 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chmod -R g+rwx superman 
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
drwxrwx--- 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]#  

3、授予用户、组、其它人对 superman 目录领有 rwx 权限

[root@superman-vm01 home]# ll
total 0
d--------- 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chmod -R u+rwx,g+rwx,o+rwx superman 
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
drwxrwxrwx 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 

4、撤销用户对 superman 目录领有 w 权限

[root@superman-vm01 home]# ll
total 0
drwxrwxrwx 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chmod -R u-w superman 
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
dr-xrwxrwx 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]#  

5、撤销用户、组、其它人对 superman 目录领有 x 权限

[root@superman-vm01 home]# ll
total 0
dr-xrwxrwx 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chmod -R u-x,g-x,o-x superman  
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
dr--rw-rw- 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]#  

6、授予用户、组、其它人对 superman 目录只有 rx 权限

[root@superman-vm01 home]# ll
total 0
dr--rw-rw- 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chmod -R u=rx,g=rx,o=rx superman 
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
dr-xr-xr-x 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 

8 Chmod 二进制权限

Linux 权限默认应用 rwx 来示意,为了更简化在零碎中对权限进行配置和批改,Linux 权限引入二进制示意办法,如下代码:

Linux 权限能够将 rwx 用二进制来示意,其中有权限用 1 示意,没有权限用 0 示意;Linux 权限用二进制显示如下:rwx=111 r-x=101 rw-=110 r–=100 顺次类推,转化为十进制,对应十进制结果显示如下:rwx=111=4+2+1=7 r-x=101=4+0+1=5 rw-=110=4+4+0=6 r–=100=4+0+0=4 得出结论,用 r =4,w=2,x= 1 来示意权限。

应用二进制形式来批改权限案例演示如下,其中默认 superman 目录权限为 755:

1、授予用户对 superman 目录领有 rwx 权限

[root@superman-vm01 home]# ll
total 0
dr-xr-xr-x 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chmod -R 755 superman  
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
drwxr-xr-x 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 

2、授予组对 superman 目录领有 rwx 权限

[root@superman-vm01 home]# ll
total 0
drwxr-xr-x 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chmod -R 775 superman  
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
drwxrwxr-x 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 

3、授予用户、组、其它人对 superman 目录领有 rwx 权限

[root@superman-vm01 home]# ll
total 0
drwxrwxr-x 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chmod -R 777 superman  
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
drwxrwxrwx 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 

4、撤销用户对 superman 目录领有 w 权限

[root@superman-vm01 home]# ll
total 0
drwxrwxrwx 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chmod -R 555 superman  
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
dr-xr-xr-x 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]

5、撤销用户、组、其它人对 superman 目录领有 x 权限

[root@superman-vm01 home]# ll
total 0
dr-xr-xr-x 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chmod -R 644 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
drw-r--r-- 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]#

6、授予用户、组、其它人对 superman 目录只有 rx 权限

[root@superman-vm01 home]# ll
total 0
drw-r--r-- 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chmod -R 555 superman 
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
dr-xr-xr-x 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]#

9 Linux 非凡权限及掩码

Linux 权限除了常见的 rwx 权限之外,还有很多非凡的权限,仔细的读者会发现,为什么 Linux 目录默认权限 755,而文件默认权限为 644 呢,这是因为 Linux 权限掩码 umask 导致。

每个 Linux 终端都领有一个 umask 属性,umask 相熟能够用来确定新建文件、目录的默认权限,默认零碎权限掩码为 022。在零碎中每创立一个文件或者目录,文件默认权限是 666,而目录权限则为 777,权限对外开放比拟大,所以设置了权限掩码之后,默认的文件和目录权限减去 umask 值才是实在的文件和目录的权限。

  • 对应目录权限为:777-022=755;
  • 对应文件权限为:666-022=644;
  • 执行 umask 命令能够查看以后默认的掩码,umask -S 023 能够设置默认的权限掩码。

在 Linux 权限中,除了一般权限外,还有如下表所示,三个非凡权限:

权限 对文件的影响 对目录的影响
suid 以文件的所属用户身份执行,而非执行文件的用户
sgid 以文件所属组身份去执行 在该目录中创立任意新文件的所属组与该目录的所属组雷同
sticky 对目录领有写入权限的用户仅能够删除其领有的文件,无奈删除其它用户所领有的文件

Linux 中设置非凡权限办法如下:

  • 设置 suid:chmod u+s superman
  • 设置 sgid:chmod g+s superman
  • 设置 sticky:chmod o+t superman

非凡权限与设置一般权限一样,能够应用数字形式示意:

  • SUID = 4
  • SGID = 2
  • Sticky = 1

能够通过 chmod 4755 superman 对该目录授予非凡权限为 s 的权限,Linux 零碎中 s 权限的利用常见包含:su、passwd、sudo

[root@superman-vm01 home]# ll
total 0
dr-xr-xr-x 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# chmod 4755 superman
[root@superman-vm01 home]# 
[root@superman-vm01 home]# ll
total 0
drwsr-xr-x 3 superman superman 78 Jul  9 05:57 superman
[root@superman-vm01 home]#
[root@superman-vm01 ~]# ll /usr/bin/su
-rwsr-xr-x. 1 root root 32208 Oct 31  2018 /usr/bin/su
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd
[root@superman-vm01 ~]# 
[root@superman-vm01 ~]# ll /usr/bin/sudo
---s--x--x. 1 root root 147392 Oct 31  2018 /usr/bin/sudo
[root@superman-vm01 ~]# 

欢送关注我的微信公众号【超哥的 IT 私房菜】获取更多技术干货!

有什么吐槽或反馈意见,间接通知我!
我会解决您说的问题,进一步更好的服务您哦!

正文完
 0