C02S06-Linux的用户、组群和权限

一、Linux用户

1. 用户分类

Linux的用户可以分为三种:超级用户、系统用户和普通用户。

  • 超级用户(root):拥有最高权限,在系统中是唯一的。

  • 普通用户:权限受限制的用户,但在自己的家目录下有着完整权限。

  • 程序用户:安装软件时,需要设置软件的执行用户。这种用户不用登录,只需要执行软件。或者称为系统用户。

Linux的超级用户是root,并不是因为名字是root,而是超级用户的UID(用户身份标识号)是0。在Linux系统中,UID是唯一的,因此可以通过UID来判断用户是身份。超级用户的UID是0,程序用户(系统用户)的UID是1~999,普通用户的UID是从1000开始。

2. 用户账户文件

Linux系统中的/etc/passwd文件,是系统用户配置文件,存储了系统中所有用户的基本信息。下面是文件的部分内容;

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
……
ljj:x:1000:1000:ljj,,,:/home/ljj:/bin/bash
sshd:x:129:65534::/run/sshd:/usr/sbin/nologin
nginx:x:1001:1001:::/sbin/nologin

文件的每一行就代表一个用户,使用“:”作为分隔符,被分为7个字段。下面是每行的格式:

用户名:密码:UID:GID:描述性信息:用户家目录:默认Shell
  • 密码的“x” 表示此用户有密码,但不是真正的密码,真正的密码保存在/etc/shadow文件中。

下面是/etc/shadow的主要内容:

root:$y$j9T$5TQm6GAwLu6myOEk9cza60$BqcdScNz2I5eanNovQ9LLKs69aypATFEohIS0svQic8:20024:0:99999:7:::
daemon:*:19773:0:99999:7:::
bin:*:19773:0:99999:7:::
……
ljj:$y$j9T$JaxFmwkQqrlvHiFPvRwXd1$cA2npm1uotsM3URtA9nNpboiFbRb7sMM9E3rGtmJxo4:20024:0:99999:7:::
sshd:*:20024:0:99999:7:::
nginx:!:20025:0:99999:7:::

文件中的每行代表一个用户,同样使用“:”作为分隔符,不同之处在于,每行用户信息被划分为 9 个字段。每个字段的含义如下:

用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
  • 加密密码处为“!”或“*”说明密码为空。

3. su命令 – 切换用户身份

su命令来自英文单词switch user的缩写,功能是切换用户身份。将管理员切换至任意用户身份时无须密码验证,而将普通用户切换至任意用户身份时均需密码验证。

su [选项] 用户名

常见的选项:

选项功能
-完全切换用户
  • su -是将用户和Shell环境都切换,而su是只切换用户。

  • 只执行su命令,不指定用户名,就是切换到超级用户(root)。

  • 使用su切换用户后,系统会尝试加载该用户的登录环境,这包括加载目标用户的环境变量、启动文件和配置等。

4. hostnamectl命令 – 显示与设置主机名称

hostnamectl命令来自于英文词组hostname control的缩写,功能是显示与设置主机名称。基于/etc/hostname文件修改主机名称时,必须要重启服务器后才可生效,而使用hostnamectl命令设置过的主机名称可以立即生效。

hostnamectl [选项] [用户名]

常见的选项:

选项功能
set-hostname设置用户名
status显示主机名和系统信息

5. useradd命令 – 创建并设置用户信息

useradd命令的功能是创建并设置用户信息。

useradd [选项] 用户名

常见的选项:

选项功能
-d指定用户家目录
-m自动创建用户家目录
-M不创建用户家目录
-s指定用户的默认Shell
-u指定用户的UID

6. userdel命令 – 删除用户

userdel命令来自英文词组user delete的缩写,功能是删除用户信息。

userdel [选项] 用户名

常见的选项:

选项功能
-r删除用户家目录

7. passwd命令 – 修改用户的密码

passwd命令来自英文单词password的缩写,功能是修改用户的密码值;同时也可以对用户进行锁定等操作,但需要管理员身份才可以执行。

passwd [选项] [用户名]

常见的选项:

选项功能
-d清除用户密码
-l锁定用户密码
-S查看用户密码状态
-u解锁用户密码
  • 除了通过命令交互修改密码,还可以通过命令修改密码。

    • CentOS:echo 密码 | passwd --stdin 用户名

    • Ubuntu:echo “用户名:密码” | chpasswd

      注意:在Ubuntu系统中,通过命令行设置的密码必须要遵循一定的规则:长度不短于8位,要包含特殊字符、大小写字母、数字。

8. usermod命令 – 修改用户信息

usermod命令来自英文词组user modify的缩写,功能是修改用户信息中的各项参数。

usermod [选项] 用户名

常见的选项:

选项功能
-d修改用户家目录
-e修改用户有效时间
-g修改用户所在组
-G修改用户附加组
-L锁定用户密码
-s修改用户默认Shell
-u修改用户的UID
-U解锁用户密码

二、Linux组群

1. 组文件

Linux系统中/etc/group文件是有关于系统管理员对用户和用户组管理的文件,用户组的所有信息都存放在/etc/group文件中。下面是文件的部分内容:

root:x:0:
daemon:x:1:
bin:x:2:
……
ljj:x:1000:
sambashare:x:136:ljj
nginx:x:1001:

文件中的每行就代表一个用户组,使用“:”作为分隔符,被分为4个字段。下面是每行的基本格式:

组名:口令:GID:组内用户列表
  • 一般而言,Linux系统用户组的口令字段为空,或者是“*”。

2. groupadd命令 – 创建新的用户组

groupadd命令的功能是创建新的用户组。每个用户在创建时都有一个与其同名的用户组。可以使用groupadd命令创建出新的用户组信息,让多个用户加入指定的用户组,从而提供文件共享环境。

groupadd [选项] 用户组

常见的选项:

选项功能
-g指定用户组的GID

3. gpasswd命令 – 管理用户组

gpasswd命令来自英文词组group password的缩写,其功能是设置管理用户组。可以使用gpasswd命令对用户组进行管理,比如设置或删除密码、添加/或删除组成员、设置组管理员或普通成员等。

gpasswd [选项] 用户组名

常见的选项:

选项功能
-a添加用户到用户组
-d删除用户组的用户
-M设置用户组成员,逗号分隔用户

4. groupdel命令 – 删除用户组

groupdel命令来自英文词组“delete a group”的缩写,功能是用于删除用户组。

groupdel [选项] 用户组名

常见的选项:

选项功能
-f强制删除

三、全局环境配置和用户环境配置

在Linux系统中,/etc目录下存放的是系统配置文件,用户的配置文件存放在用户的家目录下。

1. 全局环境配置

  • /etc/profile:为所有用户定义了环境变量和shell的启动行为。当用户登录系统时,这个文件都会被首先执行。
  • /etc/bashrc:是Bash shell专用的配置文件,它为每个新的Bash shell会话定义了环境和行为。用户启动一个新的Bash会话时,该文件都会被执行。

2. 用户环境配置

  • ~/.profile:用户的个人文件,只有在该用户登录时,该文件才会被执行。
  • ~/.bashrc:这是用户的个人Bash shell配置文件,仅在该用户启动新的Bash shell会话时执行。

四、权限管理

1. Linux文件权限

在Linux系统中,文件的权限针对所有者、所属组和其他用户这三类用户进行定义,每类用户对文件都有三个主要的权限:

  • r(可读)
  • w(可写)
  • x(可执行)

2. chmod命令 – 改变文件权限

chmod命令来自英文词组change mode的缩写,功能是改变文件权限。

chmod [选项] 权限 文件

常见的选项:

选项功能
-R递归处理

权限可以使用数字表示法,也可以使用字母表示法。

  • 数字表示法:可读、可写、可执行分别用4、2、1表示。

    chmod 421 test
    
  • 字母表示法:

    u、g、o、a分别表示所有者、所属组、其他用户、所有用户。

    +表示增加权限,-表示减少权限,=表示重新设置权限。

    chmod u=r,g=w,o=x test
    

3. chown命令 – 改变文件的所有者和所属组

chown命令来自英文词组change owner的缩写,功能是改变文件或目录的用户和用户组信息。

chown [选项] 所有者:所属组 文件 # 或所有者.所属组
  • 只更改所有者:chown 所有者 文件
  • 只更改所属组:chown :所属组 文件 或 chown .所属组 文件

常见的选项:

选项功能
-R递归处理

4. Linux文件权限掩码

Linux系统当中的文件权限掩码,是指文件权限设置当中的umask。umask决定了用户创建目录及文件的默认权限值。umask的值是一个八进制数,用于屏蔽掉文件或目录的默认权限。对于文件,默认权限是666(可读可写);对于目录,默认权限是777(可读可写可执行)。创建一个目录或文件后所的实际权限,就是默认权限减去umask所得到的权限。

  1. 使用umask命令,可以查看系统的umask值。

    umask
    0022 # 第一个0表示umak是八进制数
    
  2. 创建一个文件和一个目录,查看文件和目录的权限。

    touch text1 && mkdir dir1
    

    查看文件和目录权限,发现文件的权限是644,目录的权限是755。

    drwxr-xr-x 2 root root 4096 1030 14:45 dir1
    -rw-r--r-- 1 root root    0 1030 14:45 text1
    
  3. 通过查看权限可以发现,目录的实际权限符合默认权限-umask的值,而文件的权限却不符合。这个是因为在Linux系统中,出于安全考虑,创建的文件都不能有可执行权限。要想文件拥有可执行权限,则必须通过chmod命令来进行权限的设置。

五、总结实验

  1. 创建一个普通用户zhangsan。

    useradd -m -s /bin/bash zhangsan
    
  2. 设置该用户的密码。

    passwd zhangsan
    
  3. 进入/opt目录,创建一个test.sh文件,在文件中写入以下内容:

    #!/bin/bash
    echo "欢迎来到Linux的世界!"
    
  4. 保存文件后,使用chmod命令设置文件权限。

    chmod 777 /opt/test.sh
    
  5. 进入zhangsan的家目录,编辑.profile文件,在文件的最后一行写入以下内容,表示调用刚刚所编写的test.sh文件。

    /opt/test.sh
    
  6. 使用source执行.profile,该文件会执行test.sh文件。执行命令后可以看到终端的输出内容。

    source .profile
    
  7. 切换位zhangsan用户,同样可以看到test.sh中设置的内容输出。

    su - zhangsan
    
  8. 切换回root用户,查看test.sh文件的所有者和所属组。将该文件的所有者和所属组都切换为zhangsan,再重新切换为zhangsan用户。同样有设定好的内容输出。

    chown zhangsan.zhangsan /opt/test.sh
    
    su - zhangsan
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值