首页 > 学院 > 操作系统 > 正文

7 用户和用户组

2024-06-28 16:03:23
字体:
来源:转载
供稿:网友

7.1 用户配置文件

7.1.1 用户信息文件 /etc/passwd

man 5 passwd  查看配置文件功能

第1字段: 用户名称

第2字段: 密码标志 X代表有密码 如果用户没有密码,则只允许本地登录

第3字段: UID(用户ID)

           0     超级用户

           1-499 系统用户(伪用户) 绝对不能删

           500-65535  普通用户  改为0则变为管理员  UID相同被视为同一个用户

第4字段: GID(用户初始组ID)

第5字段: 用户说明

第6字段: 家目录

           普通用户: /home/用户名/

           超级用户: /root/

第7字段: 登录之后的Shell

 

初始组:用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户

        的用户名相同的组名作为这个用户的初始组。

附加组:指用户可以加入多个其他的用户组,并拥有这些组的权限,附加组可以有多个。

 

Shell是什么?

Shell就是linux的命令解释器

在/etc/passwd当中,除了标准Shell是/bin/bash之外,还可以写如/sbin/nologin

 

7.1.2 影子文件 /etc/shadow

第1字段: 用户名

第2字段: 加密密码

          >加密算法升级为SHA512散列加密算法

          >如果密码位是“!!”或“*”代表没有密码,不能登录。

第3字段: 密码最后一次修改日期

          >使用1970年1月1日作为标准时间,每过一天时间戳加1

第4字段: 两次密码的修改间隔时间(和第3字段相比)

第5字段: 密码有效期(和第3字段相比)

第6字段: 密码修改到期前的警告天数(和第5字段相比)

第7字段: 密码过期后的宽限天数(和第5字段相比)

          >0代表密码过期后立即失效 不写则默认为0

          >-1代表密码永远不会失效

第8字段: 帐号失效时间

          >用时间戳表示

第9字段: 保留

把时间戳换算为日期  date -d "1970-01-01 16866 days" #16866是时间戳,基准时间是1970-01-01

把日期换算为时间戳  echo $(($(date --date="2014/01/06" + %s)/86400 + 1)) #86400每天的秒

7.1.3 组信息文件 /etc/group

第1字段:组名

第2字段:组密码标志

第3字段:GID

第4字段:组中附加用户

 

 

7.1.4 组密码文件 /etc/gshadow  

用的不多

第1字段:组名

第2字段:组密码  用的不多,不推荐使用

第3字段:组管理员用户名

第4字段:组中附加用户

 

用户信息全包含在这四个文件之中,可以通过修改这四个文件来对用户做增删查改的操作

 

7.1.5 用户管理相关文件

1、用户的家目录   用户的初始登录位置

   普通用户: /home/用户名/    所有者和所属组都是此用户,权限是700

   超级用户: /root/    所有者和所属组都是root用户,权限是550

 

2、用户的邮箱

   /var/spool/mail/用户名/

 

3、用户模板目录

   /etc/skel/      创建新用户时,自动将此目录下的文件复制到新用户的家目录

 

 

7.2 用户管理命令

7.2.1 用户添加命令

useradd -u UID  手工指定用户的UID号

   -d 家目录 手工指定用户的家目录

   -c 用户说明 手工指定用户的说明

   -g 初始组名 手工指定用户的初始组

   -G 附加组名 指定用户的附加组

   -s shell 手工指定用户的登录Shell。默认是/bin/bash

 

useradd sc

passwd sc

grep sc /etc/passwd

grep sc /etc/shadow

grep sc /etc/group

grep sc /etc/gshadow

ll -d /home/sc

ll /var/spool/main/sc

 

useradd -u 666 -G root,bin -d /home/sc1 -c "test user" -s /bin/bash sc

用户默认值文件:

/etc/default/useradd

GROUP=100  #用户默认组

HOME=/home #用户家目录

INACTIVE=-1 #密码过期天数(shadow文件7字段)

EXPIRE=     #密码失效时间(shadow文件8字段)

SHELL=/bin/bash #默认shell

SKEL=/etc/skel  #模板目录

CREATE_MAIL_SPOOL=yes #是否建立邮箱

 

/etc/login.defs

MAIL_DIR /var/spool/mail

 

PASS_MAX_DAYS 9999  #密码有效期(5)

PASS_MIN_DAYS 0     #密码修改间隔(4)

PASS_MIN_LEN  5     #密码最小5位(PAM)默认是8位

PASS_WARN_AGE 7     #密码到期警告(6)

 

UID_MIN   500       #最大和最小UID范围

UID_MAX   60000

 

GID_MIN   500       #最大和最小GID范围

GID_MAX   60000

 

CREATE_HOME  yes

 

UMASK 077

 

USERGROUPS_ENAB yes

 

ENCRYPT_METHOD  SHA512 #加密模式

 

7.2.2 修改用户密码

passwd -选项 用户名

       -S 查询用户密码的状态。仅root用户可用。

       -l 暂时锁定用户。仅root可用  将shadow文件中,密码项前加了!!

       -u 解锁用户。仅root可用

       --stdin 可以通过管道符输出的数据作为用户的密码

 

whoami 查看当前用户名

 

echo "123" | passwd -stdin sc

将123作为sc用户的密码,用于Shell编程中

 

7.2.3 修改用户信息usermod

usermod -选项 用户名

   -u UID    修改用户的UID号

   -c 用户说明 修改用户的说明信息

   -G 组名   修改用户的附加组

   -L        临时锁定用户(lock) 密码前加了!,使密码失效

   -U   解锁用户锁定(Unlock)

 

 

 

7.2.4 修改用户密码状态chage  

change user passWord expiry information

change -选项 用户名

       -l  列出用户的详细密码状态

      -d 日期 密码最后一次更改日期(shadow 3字段)

      -m 天数 两次密码修改间隔(4字段)

      -M 天数 密码有效期(5字段)

      -W 天数 密码过期前警告天数(6字段)

      -I 天数 密码过期后宽限天数(7字段)

      -E 日期 帐号失效时间(8字段)

 

用vim修改更直观

用的最多的是

chage -d 0 sc

#这个命令其实是把密码修改日期归零了(shadow第3字段)

#这样用户一登陆就要修改密码

 

 

7.2.5 删除用户userdel

userdel -r 删除用户的同时删除用户家目录

 

手工删除用户

vi /etc/passwd

vi /etc/shadow

vi /etc/group

vi /etc/gshadow

rm -rf /var/spool/mail/sc

rm -rf /home/sc

 

7.2.6 查看用户ID

id 用户名

查看用户id 初始组id附加组id

 

 

7.2.7 用户切换su  

run a Shell with substitute user and group IDs

 

env

查看用户环境变量

 

su root #只切换了部分环境变量

 

su 选项 用户名

- 连带用户的环境变量一起切换

-c 仅执行一次命令,而不切换用户身份

 

su - root -c "useradd user3"

不切换用户身份,临时调用一次root权限命令

 

exit 退出当前用户

 

 

 

7.3 用户组管理命令

添加用户组

groupadd [选项]组名

-g GID   指定组ID

 

 

修改用户组  不建议修改组名

groupmod [选项]组名

  -g GID 指定组ID

  -n 新组名

groupmod -n testgrp group1

把组名group1修改为testgrp

 

 

删除用户组

groupdel 组名

如果组中存在初始用户,不能删除此组

如果组中都是附加用户,可以删除

 

 

把附加用户添加入组或从组中删除

gpasswd -a 用户名  组名#把用户加入组

   -d 用户名  组名 #把用户从组中删除

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表