2.Linux用户管理

01.用户配置文件

通过用户配置文件来实现用户身份界定和认证

  • 用户信息文件/etc/passwd
  • 用户口令文件/etc/shadow
  • 组信息文件/etc/group
  • 组口令文件/etc/gshadow

001.用户信息文件/etc/passwd

vi /etc/passwd
在这里插入图片描述
在这里插入图片描述
7个字段

  1. 用户名称,字符串;比如root,txp,user1
  2. 有无口令,x表示一个占位符,表示有口令。根据安全登录协议ssh,用户没有口令则不能登录系统
  3. 用户ID,整型,用户的标志位
    – 0,不管用户名是什么,都是超级用户
    – 1~999,系统保留编号(伪用户编号);为了方便管理系统进程(服务),当作一个用户使用,比如lp,打印服务的进程,用户编号为4;
    – 1000及以上,普通用户编号
    vi /etc/login.defs
    在这里插入图片描述
  4. 组ID,一个用户可以加入不同的组,这里的GID是创建用户时的自身组(基本组)的ID,加入的组叫附加组
  5. 用户说明
  6. 家目录,图中是绿色标记的,比如root的/root,txp的/home/txp;用户创建完成后系统会自动为其分配一个家目录,用户的所有的文件都要写在对应的目录中的
  7. 用户对应的shell,shell就是命令解释器,root和普通用户都是bash,其他都是nologin(不允许登录到系统中,登录界面输入无效)

002.用户口令文件/etc/shadow

sudo vim /etc/shadow
在这里插入图片描述在这里插入图片描述
9个字段

  1. 用户名称
  2. 用户口令,以加密形式存储,加密算法为SHA-512,512位半个字节显示一个ASCII码;!!表示没有密码
  3. 口令最近修改日期,从1970年1月1日起经过的天数,用date相关命令可算出具体日期:date -d “1970-01-01 18192 days”
  4. 口令不可修改天数,口令设置或修改成功后不可修改的天数,为0表示任意时间都可修改
  5. 强制修改口令天数,从1970年1月1日开始,在这个时间戳到期后必须修改口令
  6. 密码变更提示时间,一般为7,在必须修改口令前7天每天都给一个密码修改提示
  7. 密码变更过期后的宽限时间
  8. 账号失效时间
  9. 保留

003.组信息文件/etc/group

vi /etc/group
在这里插入图片描述
4个字段

  1. 组名
  2. 组是否有口令
  3. 组编号GID,创建用户时会自动创建一个组,编号和UID相同
  4. 组内附加用户,即除初始用户外的其他用户

004.组口令文件/etc/gshadow

sudo vim gshadow
在这里插入图片描述
4个字段

  1. 组名
  2. 组口令字符串,!表示可以有口令但没有设置,一般不设置
  3. 组管理员,root分权,可管理组用户出入,一般不设置
  4. 组附加用户

02.用户管理相关命令

要管理员权限

  • 添加用户useradd
    • useradd bob
      • 4个配置文件
        – vim /etc/passwd
        在这里插入图片描述
        – vim /etc/shadow,可看出未设置密码
        在这里插入图片描述
        – vim /etc/group
        在这里插入图片描述
        – vim /etc/gshadow
        gshadow
      • 没有口令,su bob,可以看到普通用户不能切换登录
        su
      • 家目录
        – 权限,可以看到用户家目录只有当前用户可读写执行
        home
        – 内容
        在这里插入图片描述
        用户家目录基本参数配置文件都在/etc/skel目录下,用useradd添加用户后会自动将此目录下的所有文件复制到用户家目录下
        skel
        如果希望用户在创立之后自动给他发一个信息,比如说当前系统的使用介绍等,就可以将相应的信息放到skel目录下
        在这里插入图片描述
        在这里插入图片描述
    • 指定家目录创建用户useradd -d <家目录> <用户名>
      – 家目录已存在
      mkdir /home/tomtom
      useradd -d /home/tomtom
      -d
      – 家目录不存在
      useradd -d /home/user user2
      在这里插入图片描述
    • 指定初始组创建用户
      groupadd group1,首先组要存在,否则创建用户会失败
      vim /etc/group
      在这里插入图片描述
      useradd -g group1 user3
      vim /etc/passwd在这里插入图片描述
    • 创建用户,同时附加到已经存在的组useradd -G <附加组>… <用户名>
      useradd -G group1,bob,tom user4
      vim /etc/group
      在这里插入图片描述
    • 指定用户ID创建用户useradd -u< ID > <用户名>
      useradd -u8888 user5
      vim /etc/passwd
      在这里插入图片描述
  • 设置口令password
    • 更改、设置口令
      passwd:修改自己口令
      passwd <用户名>:修改某个用户,需要root权限
    • 锁定/清除用户口令passwd -l/-d <用户名>
    • 无视口令设定规则进行设定
      echo 123456 | passwd user1 --stdin
  • 组成员管理gpasswd
    • 将用户从组中删除gpasswd -d user4 tom
      vim /etc/group
      在这里插入图片描述
    • 将用户加入某个组gpasswd -a user4 tom
      在这里插入图片描述
  • 用户删除命令userdel
    • userdel <用户名>
    1. 用户家目录依然保留,由root用户接管
    2. 若基本组包含其他附加成员,则组不会被删除
      userdel tom
      在这里插入图片描述
      到/home
      在这里插入图片描述
      userdel user5
      在这里插入图片描述
    • userdel -r <用户名>
      递归删除,用户家目录也会被删除
  • 组删除命令groupdel <组名>
    groupdel tom
  • visudo,编辑sudoers文件
    授予sonya更改其他用户口令的权限:给出命令的路径
    在这里插入图片描述
    在这里插入图片描述

03.用户管理程序设计

得到用户ID函数:getuid()、geteuid()
man getuid()
在这里插入图片描述
写一个得到用户ID和EUID的程序uid.c:

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>

int main()
{
	uid_t uid=-1;
	uid_t euid=-1;

	uid=getuid();
	euid=geteuid();

	printf("uid=%d,euid=%d\n",uid,euid);

	return 0;
}

gcc -c uid.c
gcc -c uid uid.c
./uid可以得到进程当前的uid和euid

  • uid:进程的创建者
  • euid:文件的所有者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值