账号和权限管理

一、管理用户账户

1用户账户和组账户的概述

1.1用户账户的分类

Linux中每个用户通过UID来唯一标识的

超级用户: root UID是0

程序用户 :1-60000 自动分配系统用户 :1-499(CentOS6以前)、1-999(CentOS7以后)一般不允许登录到系统

普通用户:500+(CentOS6以前)1000+(CentOS7以后)

给用户交互式登录

1.2组账号

基本组:在用户所属组中的第一个组称为基本组,基本组在/etc/passwd

(私有组):建立账户时,若没有指定账户所属的组,系统就会建立一个和用户名相同的组,这个组就叫私有组,这个组默认只容纳一个用户

附加组(公共组):除了第一个组以外的组为附加组或公共组,附在/etc/group

1.3UID和GID

UID(用户标识号)

GID(组标识号)

who    #显示当前用户

2用户账号管理命令

1、添加新的用户账号使用useradd命令基本格式

useradd	[选项]... 用户名
  • 使用useradd添加账户完成以下任务:
    • 在/etc/passwd文件和/etc/ shadow文件的末尾增加该用户账号的记录。
    • 若未明确指定用户的宿主目录,则在/home目录下自动创建与该用户账号同名的宿主目录,并在该目录中建立用户的各种初始配置文件。
    • 若没有明确指定用户所属的组,则自动创建与该用户账号同名的基本组账号,组账号的记录信息将保存到/etc/group和/etc/gshadow文件中。

常用选项:

选项 作用
-u 指定用户的UID号,要求该UID号码未被其他用户使用
-d 指定用户的宿主目录位置(当与-M一起使用时,不生效)只能用绝对路径指定目录,且不需要事先创建目录
-e 指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式
-g 指定用户的基本组名(或使用GID号),对应的组名必须已存在
-G 指定用户的附加组名(或使用GID号),对应的组名必须已存在
-M 不建立宿主目录。(一般用于系统用户账号)
-s 指定用户的登录Shell,(比如/bin/bash为可登陆系统,Isbin/nologin和/bin/false为禁止用户登陆系统)
useradd -s /sbin/nologin -M liwu

2、删除帐号

如果一个用户的账号不再使用,可以从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还删除用户的主目录。

删除一个已有的用户账号使用userdel命令,其格式如下:

userdel 选项 用户名

常用的选项是 -r,它的作用是把用户的主目录一起删除。

例如:

# userdel -r sam

此命令删除用户sam在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。

3、修改帐号的属性

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。

修改已有用户的信息使用usermod命令,其格式如下:

usermod 选项 用户名

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。

另外,有些系统可以使用选项:-l 新用户名

这个选项指定一个新的账号,即将原来的用户名改为新的用户名。

[root@localhost home]# echo "123123" |passwd --stdin davin
更改用户 davin 的密码 。
passwd:所有的身份验证令牌已经成功更新。

4、用户口令的管理

用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。

指定和修改用户口令的Shell命令是passwd。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。命令的格式为:

passwd 选项 用户名

可使用的选项:

  • -l 锁定口令,即禁用账号。
  • -u 口令解锁。
  • -d 使账号无口令。
  • -f 强迫用户下次登录时修改口令。

如果默认用户名,则修改当前用户的口令。

5用户账号的初始配置

  • 文件来源

    新建用户帐号时,从/etc/skel目录中复制而来,比如默认bin/bash,默认家目录

    [root@localhost home]# ls -a /etc/skel/
    .  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
    
  • 主要的用户初始配置文件(对用户有效)

    • .bash_profile : 这个文件是为系统全局变量配置文件,可以通过重启系统或者执行source /etc/profile 命令使profile文件被读取
    • .bashrc: 这个文件实际上是/etc/profile的子目录,存放的是一些应用程序所需的启动脚本
    • .bash_logout: 每一个允许bash shell 的用户都会执行此文件,可通过执行bash命令打开一个新的bash shell时,使bashrc文件被读取

二、系统用户组的管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

1、增加一个新的用户组使用groupadd命令。其格式如下:

groupadd 选项 用户组

可以使用的选项有:

-g GID 指定新用户组的组标识号(GID)。

2、添加删除组成员

gpasswd

设置组账号密码(极少用)、添加/删除组成员

gpasswd [选项].. 组账户名

常用选项

-a:向组内添加一个用户

-d:从组内删除一个用户成员

-M:定义组成员列表,以逗号分隔

3、如果要删除一个已有的用户组,使用groupdel命令,其格式如下:

groupdel 用户组

4、修改用户组的属性使用groupmod命令。其语法如下:

groupmod 选项 用户组

常用的选项有:

  • -g GID 为用户组指定新的组标识号。
  • -o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
  • -n新用户组 将用户组的名字改为新名字

5、查询账户信息

查询用户所属组

groups [用户名]

查询用户身份标识

id[用户名]

查询用户账户详细信息

需要安装

finger   [用户名]

查询已登录到主机的用户信息

w、whousers

三.文件/目录的权限及归属

文件基本属性

r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已

Linux文件属主和属组

属主:拥有该文件或目录的用户账户

属组:拥有该文件或目录的组账户

更改文件属性

1、更改文件和目录权限chmod

格式:
字符形式:	chmod [ugoa···][+-=][rwx] 文件...
数字形式:	chmod nnn 文件/目录...

2、chown:更改文件属主,也可以同时更改文件属组

语法:

chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名

3、unmask

1 .unmask作用:

  • 设置目录和文件的默认权限;
  • 指定目前用户在新建文件或目录时的权限默认值;
  • 新建的文件或者目录的权限为默认最大权限减去umask(普通文件的最大默认权限为6,目录的最大默认权限为7)
格式:
umask查看:	umask
umask设置:	umask 022

四、与用户账号有关的系统文件

完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。

与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括/etc/passwd, /etc/shadow, /etc/group等。

下面分别介绍这些文件的内容。

1、/etc/passwd文件是用户管理工作涉及的最重要的一个文件。

Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。

这个文件对所有用户都是可读的。它的内容类似下面的例子:

[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
davin:x:1000:1000:Davin:/home/davin:/bin/bash

/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
man 5 passwd  #可以查看格式

2 /etc/shadow

由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。 有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。

cat /etc/shadow
root:$6$VzDl2wOkQQwPYfrG$taASwhhfzUgg3hXXEfeWcY7ELKxG/tBw27f2UsZLDyUKywsINHzPjV2EsoKpx7BUQSD56PjZp1icaZyVF5tS9.::0:99999:7:::

davin:$6$Nw/ImCcn$/fRIXj/itbUS3VVY/.4NWPuN.XAHBA3PVRkAaKAQZODRucrNYSfTS8AYy2nGiY/U36h0NEZ6kpv9nyem775xX.:19043:0:99999:7:::

/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生

它的文件格式与/etc/passwd类似,由若干个字段组成,字段之间用":"隔开。这些字段是:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

3、用户组的所有信息都存放在/etc/group文件中。

用户组的所有信息都存放在/etc/group文件中。此文件的格式也类似于/etc/passwd文件,由冒号(:)隔开若干个字段,这些字段有:

组名:口令:组标识号:组内用户列表
  1. "组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
  2. "口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
  3. "组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。
  4. "组内用户列表"是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
posted @   DavinWw  阅读(356)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示