用户管理,sudo等

Linux用户管理

老师笔记

一、Linux 系统如何管理用户和用户组

用户使用 UID (十进制的数字)
组使用 GID(十进制的数字)
系统中的每个资源都会属于具体的用户和组。
资源包括:文件,目录,运行时的程序(进程), 一个服务等。
Linux 系统只认识 UID 和 GID

用户基本信息和密码信息

用户信息保存在 /etc/passwd 文件中
用户密码的信息保存在 /etc/shadow 文件中

/etc/passwd 文件内容
每行是一个用户,每行都是用 冒号分开用户的各个信息

用户管理,sudo等_第1张图片
image.png

/etc/shadow 文件内容
每行是一个用户,每行都是用 冒号分开用户的各个信息, 共有 9 个字段。
shark 账户在 shadow 文件中是这样的:

shark :!! : 18099 : 0 : 99999 : 7 : : :

九个字段的意义
1、用户名

2、密码 这个密码是经过加密的, !! 表示,创建了此用户但是还未给其设置密码。

3、最近修改密码的日期
这个数字单位是天数, 是 1970 年 1 月 1 日作为 1 而累加的日期。

计算某个日期的累积天数的语法:

 echo $(( $(date --date="2019/07/21" +%s) / 86400+1))

4、密码不可被更动的天数
这个帐号的密码在最近一次被修改后需要经过几天才可以再被修改!如果是 0 的话, 表示密码随时可以修改的意思。

5、密码需要重新修改的天数
指定在最近一次修改密码后, 在多少天数内需要再次的修改密码,可以强制用户修改密码。

6、距离密码要修改时的天数
假如是 5, 那就是临近修改密码的前 5 天内,都会提示用户更新密码。

7、密码过期后的帐号宽限时间
就是密码过期后,账户依然可以登了,并且打的到 bash, 但是当登录到系统时,系统会提示你立刻进行密码的更新,否则无法继续操作。
密码有效期 = 密码修改日(因为当天也算一天) + 密码需要修改的天数

8、帐号失效日期
也是从 1970/01/01 以来总天数。通常用在收费系统上。

9、保留

查看用户基本信息

// 查看当前用户
id  用户名

关于用户的编辑修改命令

useradd 添加用户

useradd  [-u  UID]  [-g  初始群组]  [-G  次要群组]  [-mM]   [-c 说明栏] [-d  家目录绝对路径]   [-s shell]  新的用户名
-M  :强制!不要创建使用者主文件夹!(系统帐号默认值)
-m  :强制!要创建使用者主文件夹!(一般帐号默认值)
-r  :创建一个系统的帐号,这个帐号的 UID 会有限制 (参考 /etc/login.defs)
-s  :后面接一个 shell ,若没有指定则默认是 /bin/bash,指定的 shell 必须存在于系统中
-e  :后面接一个日期,格式为“YYYY-MM-DD”此项目可写入 shadow 第八字段,亦即帐号失效日的设置项;
-G  :创建时直接添加附加组
-g  :创建时直接设置有效组

在新建一个用户时,CentOS 这些默认值主要会帮我们处理几个项目:

  • 在 /etc/passwd 里面创建一行与帐号相关的数据,包括创建 UID/GID/主文件夹等;
  • 在 /etc/shadow 里面将此帐号的密码相关参数填入,但是尚未有密码;
  • 在 /etc/group 里面加入一个与帐号名称一模一样的群组名称;
  • 在 /home 下面创建一个与帐号同名的目录作为使用者主文件夹,且权限为 700
    示例
    1、新增一个普通用户,自动创建家目录和组
    2、新增一个系统用户
    3、新增一个系统用户, 且指定 shell 为 /sbin/nologin
useradd  shark
useradd   -r   shark1
useradd   -r  -s   /sbin/nologin    shark

passwd设置用户密码

  • root用户可以设置所有用户密码,且可以不遵循密码规则
  • 其他用户只可以修改自己的密码,且必须遵守密码规则
// root 功能:
[root@www ~]# passwd [-l] [-u] [--sdtin] [-S] [-n 日数] [-x 日数] [-w 日数] [-i 天数]   账号

//所有人均可使用来修改自己的密码
[root@testhost ~]# passwd [--sdtin]
选项:
--stdin  :可以通过来自前一个管道的数据,作为密码的输入,对shell script比较有帮助。
-l    :lock 帐号,是密码暂时性失效
-u    :解锁
-S    :查看帐号密码的相关参数
-n    :密码不可修改的天数
-x    :密码强制修改天数
-w    :密码过期前的警告天数
-i    :修改或指定密码失效天数

通过管道符修改密码(--sdtin)指令

echo “123” | passwd --stdin user-name

修改用户信息 usermod

root 用户执行
usermod     [-cdegGlsuLU]    username

选项与参数:
-c  :后面接帐号的说明,即 /etc/passwd 第五栏的说明栏,可以加入一些帐号的说明。
-d  :后面接帐号的主文件夹,即修改 /etc/passwd 的第六栏;
-e  :后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个字段数据啦!
-f  :后面接天数,为 shadow 的第七字段。
-g  :后面接初始群组,修改 /etc/passwd 的第四个字段,亦即是 GID 的字段!
-G  :后面接次要群组,修改这个使用者能够支持的群组,修改的是 /etc/group 啰~
-a  :与 -G 合用,可“增加次要群组的支持”而非“设置”喔!
-l  :后面接帐号名称。亦即是修改帐号名称, /etc/passwd 的第一栏!
-s  :后面接 Shell 的实际文件,例如 /bin/bash 或 /bin/csh 等等。
-u  :后面接 UID 数字啦!即 /etc/passwd 第三栏的数据;
-L  :暂时将使用者的密码冻结,让他无法登陆。其实仅改 /etc/shadow 的密码栏。
-U  :将 /etc/shadow 密码栏的 `!` 去除,就是解除锁定!

示例
1、把用户 shark 添加到 wheel 组中
2、设置用户testuser在2019-07-31失效

usermod   -a   -G    wheel    shark
usermod  -e  2019-07-31    testuser

删除用户 userdel
这个功能就太简单了,目的在删除使用者的相关数据,而使用者的数据有:
使用者帐号/密码相关参数:/etc/passwd, /etc/shadow
使用者群组相关参数:/etc/group, /etc/gshadow
使用者个人文件数据: /home/username, /var/spool/mail/username..

用 root 身份删除普通用户
用户的家目录和邮箱等不会被删除
userdel shark

用 root 身份删除普通用户,并且不保留被删除用户的家目录等数据。
userdel -r shark1

二、组

初始组(initial group):

就是在创建用户的时候,默认会创建一个和用户名同名的组。后期也可以修改。
初始组的 GID 会出现在 /etc/passwd 中,用户的存放 GID 的位置,用户已登录到系统中就会拥有此组的权限。

有效组(effective group):

后来加入的组

关于组的命令

1、查看当前用户的组

[shark@e9818e4ea8b3 ~]$ groups
shark wheel

2、查看其他用户的组

[shark@e9818e4ea8b3 ~]$ groups shark1
shark1 : shark1

3、groupadd 新增组

goupadd [-g gid] [-r] group_name
选项:
-g :指定gid ,单独添加组,建议指定1000以上的gid,便于管理。
-r :建立系统组

4、groupdel 删除组

groupdel group_name

  • 注意:当你要删除一个组时,需要确保系统中没有任何一个用户把此组作为初始组 initial group

5、gpasswd添加组命令

可添加多个用户到一个组中
gpasswd -M x3,x5,x6 baoma

三、用户身份切换

su

切换为其他用户,这需要提供其他用户的密码

su - [-c] [用户名]
选项与参数:

  • 单纯使用 - 如“ su - ”代表使用 login-shell 的变量文件读取方式来登陆系统;
    若用户名没有加上去,则代表切换为 root 的身份。
    要加上-连同配置环境一同转换,养成良好习惯

sudo

sudo 是用于使用普通用户的身份去执行 root 用户身份才有权执行的命令操作。

必要条件
1、需要把普通用户设置为 sudo 用户
2、使用 sudo 的时候需要提供 root 的用户名。

语法

sudo [-b] [-u 新使用者帐号]
选项与参数:
-b :将后续的指令放到背景中让系统自行执行,而不与目前的 shell 产生影响
-u :后面可以接欲切换的使用者,若无此项则代表切换身份为 root 。

1、使用 sshd 用户,在 /tmp 目录下创建一个普通文件,并观察文件相关属性

sudo -u sshd touch /tmp/sshd.file

sudo 的执行是这样的流程
1、当使用者执行 sudo 时,系统于 /etc/sudoers 文件中搜寻该使用者是否有执行 sudo 的权限;

2、若使用者具有可执行 sudo 的权限后,便让使用者“输入使用者自己的密码”来确认;

3、若密码输入成功,便开始进行 sudo 后续接的指令(但 root 执行 sudo 时,不需要输入密码);

4、若欲切换的身份与执行者身份相同,那也不需要输入密码。

visudo 将普通用户设置为 sudo 用户
建议使用 visudo 编辑 /etc/sudoers 文件,比较安全。

设置语法格式:

设置单一用户
root ALL=(ALL) ALL
设置一个组
%wheel ALL=(ALL) ALL

免密码
之前的设置都需要,输入自己的密码,有时候这在写一些自动化的工具时,并不合适,因为提示用户输入自己的密码,会导致交互的操作。

sudo 时,不输入任何密码

%wheel ALL=(ALL) NOPASSWD: ALL

指定切换规定身份和使用特定的命令

shark ALL=(root) /usr/bin/passwd
普通用户 规定身份 规定命令

限制使用某些命令

shark ALL=(root) !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

  • 允许 shark 用户以 root 身份修改其他用户的密码,但是不允许修改 root 的密码

除了个别命令,其他命令都允许

shark ALL=(root) ALL,!/usr/bin/passwd

  • shark用户除了不能更改密码其他都允许

你可能感兴趣的:(用户管理,sudo等)