Linux云计算-04_Linux用户及权限管理

2023-05-16

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私房菜】获取更多技术干货!

image-20210707074326947

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux云计算-04_Linux用户及权限管理 的相关文章

  • Android动态获取手机是否是充电状态

    参考谷歌官方文档 https developer android google cn topic performance power 一 获取充电状态 在应用中执行某些操作 如软件云端备份 从服务器端获取最新版本号 从服务器端缓存最新软件安
  • EF_Using(问题)

    xfeff xfeff using 语句中使用的类型必须可隐式转换为 System IDisposable using 语句中使用的类型必须可隐式转换为 System IDisposable 在使用 EF 出现 using 语句中使用的类型
  • 100个不能错过的实用JS自定义函数

    1 原生JavaScript实现字符串长度截取 代码如下 span class token keyword function span span class token function cutstr span span class tok
  • Android.mk 编译报错undefined reference to

    当出现 undefined reference to xxx时 xff0c 对应的lib库已经添加到LOCAL STATIC LIBRARIES里面 xff0c 且 头文件已经已经添加时 xff0c 仍然报 undefined refere
  • yocto QT5 QSqlDatabase: QSQLITE driver not loaded

    yocto中默认编译出来的qt是不带有sql driver xff0c 即缺少插件库libqsqlite so 修改位置 xff1a 1 在xx meta qt5 recipes qt qt5 qtbase git bb中 xff0c 修改
  • systemd 介绍

    转自 xff1a https www linuxidc com Linux 2018 03 151291 htm 从 init 系统说起 Linux 操作系统的启动首先从 BIOS 开始 xff0c 接下来进入 boot loader xf
  • 详细讲解systemctl(附常用指令)

    目录 写在前面 systemd和systemctl systemd的配置文件目录 主要服务功能类型 服务状态 常用指令 切换系统模式 xff08 文本 界面模式等 xff09 systemctl配置文件的设置 写在前面 我发现systemc
  • Linux中systemctl详细理解及常用命令

    一 systemctl理解 Linux 服务管理两种方式service和systemctl systemd是Linux系统最新的初始化系统 init 作用是提高系统的启动速度 xff0c 尽可能启动较少的进程 xff0c 尽可能更多进程并发
  • ARM AArch64 GUN交叉编译工具下载官网

    Arm Developer https developer arm com tools and software open source software developer tools gnu toolchain gnu a downlo
  • GStreamer系列 - 基本介绍

    什么是Gstreamer xff1f Gstreamer是一个支持Windows xff0c Linux xff0c Android xff0c iOS的跨平台的多媒体框架 xff0c 应用程序可以通过管道 xff08 Pipeline x
  • 探索Android中的Parcel机制(下)

    上一篇中我们透过源码看到了 Parcel 背后的机制 xff0c 本质上把它当成一个 Serialize 就可以了 xff0c 只是它是在内存中完成的序列化和反序列化 xff0c 利用的是连续的内存空间 xff0c 因此会更加高效 我们接下
  • Caused by: java.lang.UnsupportedClassVersionError: Unsupported major.minor version 52.0 (无法载入的.类

    Caused by java lang UnsupportedClassVersionError com iov common crud node TPSAlipayConfig Unsupported major minor versio
  • ubuntu18 buildroot make xconfig make gconfig faile

    make xconfig sudo apt get install qttools5 dev make gconfig sudo apt get install libglade2 dev
  • qt5的configure选项说明

    一 配置选项查看及初步解释 通过下面命令查看都有哪一些编译配置选项 span class token punctuation span span class token operator span configure span class
  • qt build

    QT笔记 嵌入式QT交叉编译与移植 含OpenGL ES2 https blog csdn net weixin 40293570 article details 117731268
  • OpenGL之gult/freeglut/glew/glfw/glad的联系与区别

    转 https blog csdn net libaineu2004 article details 105879521 转 https blog csdn net qq 40565033 article details 107715956
  • linux arm fdisk, 对未使用emmc分区扩容

    yocto编译后的wic镜像 xff0c 在刷机后 xff0c 仍有很大部分emmc未使用 xff0c 下面将未使用的emmc扩展到文件系统挂载分区 root 64 imx8dxmek df h Filesystem Size Used A
  • Shell脚本 EOF使用

    前言 xff1a EOF是End Of File的缩写 xff0c 表示自定义终止符 既然自定义 xff0c 那么EOF就不是固定的 xff0c 可以随意设置别名 xff0c 意思是把内容当作标准输入传给程序 xff0c Linux中按Ct
  • matlab之将视频逐帧保存为图片

    clc clear all close all 将视频逐帧保存为jpg图片 obj 61 VideoReader 39 F mh rgb avi 39 输入视频位置 numFrames 61 obj NumberOfFrames 帧的总数
  • 同步锁

    线程和进程 xff1a 几乎所有的操作系统都支持进程的概念 xff0c 所有运行中的任务通常对应一个进程 xff08 Process xff09 当一个程序 进入内存运行时 xff0c 即变成一个进程 而一个线程中又包含多个进程 多线程的问

随机推荐

  • spring容器和SpringMVC容器的区别

    说起spring容器和SpringMVC容器 xff0c 很多刚接触spring框架的同志都有点懵 xff0c 甚至是一头雾水 xff0c 分不清楚两者的关系和区别 xff0c 包括本人也是 xff0c 因此还在网上找个不少资料 这俩容器呢
  • 解决JavaWeb中文乱码问题

    解决JavaWeb的中文乱码 在日常的Java项目开发中 xff0c 乱码成了程序员必经的一道坎 乱码的缘故很好理解 xff0c 就是编码格式和解码格式不一致 xff0c JVM在编译的时候是由于 Web 容器使用了ISO 8859 1的编
  • 敏捷之伤——燃尽图

    燃尽图 xff08 burn down chart xff09 是在项目完成之前 xff0c 对需要完成的工作的一种可视化表示 燃尽图有一个Y轴 xff08 工作 xff09 和X轴 xff08 时间 xff09 理想情况下 xff0c 该
  • SQL Server查询、限制返回行数

    我们在日常开发中 xff0c 经常涉及到分页查询 特别是和页面进行交互 xff0c 分页查询已是家常便饭 现在很多的jq插件都会有分页的模块 xff0c 可以在页面上将数据更好的呈现给用户 xff0c 使得用户拥有更好的体验 像我们熟悉的有
  • mybatis

    我们在做SSM项目的时候 xff0c mybatis是其中的一部分 xff0c 是最后一步也是最重要的一步 xff0c 因为很多时候我们都是为了对数据库进行改动 前几天我在复习mybatis的时候 xff0c 就把一些可能会踩到的坑都碰到了
  • 浅谈yaml

    YAML 是 YAML Ain t a Markup Language xff08 YAML 不是一种标记语言 xff09 的递归缩写 在开发的这种语言时 xff0c YAML 的意思其实是 xff1a Yet Another Markup
  • 跨域处理(CORS)

    首先 xff0c 来了解什么是跨域 xff1f 出于安全性 xff0c 浏览器限制脚本内 xff08 多数情况指ajax xff09 发起的跨源HTTP请求 这意味着使用这些API的 Web应用程序只能从加载应用程序的同一个域请求HTTP资
  • java 文件上传

    Java的件上传有很多种实现方式 xff0c 原生的java程序使用的都是HttpServletRequest来接收前台的文件数据 xff0c 然后通过file进行转换等等来实现的 本文章是使用springboot来实现文件上传的功能 xf
  • linux系统上安装JDK8

    作者 xff1a ChenZhen 博客地址 xff1a https www chenzhen space 版权 xff1a 本文为博主 ChenZhen 的原创文章 xff0c 本文版权归作者所有 xff0c 转载请附上原文出处链接及本声
  • 源码离线安装mariadb

    源码离线安装mariadb 卸载系统自带mariadb libs 使用下面的命令检查是否安装有MySQL MariaDB rpm qa grep mariadb rpm e mariadb libs 5 5 68 1 el7 x86 64
  • 结束,也是开始。

    三年时光转眼即逝 xff0c 临到毕业才幡然醒悟 xff0c 自己掌握的专业技能太少 xff0c 最后几个月才养成了几个好习惯 在上班利用空闲时间多学学其他的技术 xff0c 希望自己可以不停的努力 xff0c 充实自己的每一天
  • 论 "张筱雨"

    当今网络谁最红 xff1f 当今网络谁最裸 xff1f 当今网络谁征服了大多数男人们的眼球 xff1f 当今网络谁最具创新 xff0c 引领时尚潮流 xff0c 当今网络谁敢和日本AV女优叫板 那么她就是 张筱雨 张筱雨 xff01 xff
  • Linux的多用户登录

    1 Windows只允许在同一时刻只有一个用户登录 xff0c 而Linux允许多用户同时登录 2 在Linux下 xff0c 用户有两种登录模式 一种是 图形界面登录 xff0c 类似于Windows 另一种是 文本登录 xff0c 类似
  • URI encode与URL encode对空格的不同处理

    在各种开放平台 OpenAPI越来越多之时 xff0c 客户端软件或多或少的在通过HTTP HTTPS协议与服务器交互 这其中一个常见的情况就是要求对URL进行encode处理 xff0c 以保证中文 特殊字符的正确传递 不过这个小小的en
  • No plugin found for prefix 'install' in the current project解决方案

    本来以下配置 xff0c 报上面的错 lt mirrors gt lt mirror Specifies a repository mirror site to use instead of a given repository The r
  • android的onNewIntent

    1 onNewIntent Intent intent 是Activity类的方法 它被调用发几种情况如下 lt activity android name 61 34 NewIntentDemo 34 android label 61 3
  • 全网火爆,JMeter性能测试-压力负载测试场景(总结)看这一篇足够了......

    目录 xff1a 导读 前言一 Python编程入门到精通二 接口自动化项目实战三 Web自动化项目实战四 App自动化项目实战五 一线大厂简历六 测试开发DevOps体系七 常用自动化测试工具八 JMeter性能测试九 总结 xff08
  • Linux LVM在线扩容xfs文件系统(创建大于2T的磁盘分区)

    1 使用parted方式格式化磁盘 1 1 查看磁盘情况 root 64 superman fdisk l Disk dev sdd 2199 0 GB 2199023255552 bytes 4294967296 sectors Unit
  • Linux LVM在线扩容ext3文件系统

    1 扩容前信息查看 1 2 查看文件系统情况 root 64 superman df h 文件系统 容量 已用 可用 已用 挂载点 dev mapper VG00 lv root 30G 23G 5 3G 82 dev mapper VG0
  • Linux云计算-04_Linux用户及权限管理

    Linux是一个多用户的操作系统 xff0c 引入用户 xff0c 可以更加方便管理Linux服务器 xff0c 系统默认需要以一个用户的身份登录 xff0c 而且在系统上启动进程也需要以一个用户身份器运行 xff0c 用户可以限制某些进程