Linux 一 用户和用户组管理

linux系统用户账号管理

使用者识别码: UID 与GID

[root@localhost ~]# id wang
uid=1000(wang) gid=1000(wang) 组=1000(wang)
[root@localhost ~]# ll -d /home/wang
drwx------. 2 wang wang 62 10月 27 20:01 /home/wang
[root@localhost ~]# vi /etc/passwd
[root@localhost ~]# 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
wang:x:1000:1000::/home/wang:/bin/bash
~                                                                                                        
~                                                                                                        
~                                                                                                        
~                                                                                                        
~                                                                                                        
~                                                                                                        
"/etc/passwd" 20L, 885C

添加用户

[root@localhost ~]# useradd -d /home/sam -m sam 
此命令创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam(/home为默认的用户主目录所在的父目录

这里可能新建组:#groupadd group及groupadd adm

[root@localhost ~]# useradd -s /bin/sh -g group -G adm,root gem
此命令新建了一个用户gem,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。


/etc/passwd 档案结构

共7个位置,使用;分割,7个位置分别放的是

1账号名,2 密码,3 UID ,4 GID, 5 使用者资讯说明栏,6 家目录 7 shell

补充介绍:

密码:
早期Unix系统的密码就是放在这栏位上!但是因为这个档案的特性是所有的程序都能够读取,这样一来很容易造成密码资料被窃取,因此后来就将这个栏位的密码资料给他改放到/etc/shadow 中了。所以这里你会看到一个『 x 』

用户账号的管理工作主要涉及到用户账号的添加、修改和删除。

添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。

由于系统上面启动的网路服务或背景服务希望使用较小的权限去运作,因此不希望使用root的身份去执行这些服务,所以我们就得要提供这些运作中程式的拥有者帐号才行。这些系统帐号通常是不可登入的

根据系统帐号的由来,通常这类帐号又约略被区分为几种:

0 是管理员

1~200:由distributions 自行建立的系统帐号;
201~999:若使用者有系统帐号需求时,可以使用的帐号UID。
1000以及以上:给一般使用者用的。事实上,目前的linux 核心(3.10.x 版)已经可以支援到 4294967295 (2^32-1) 这么大的UID 号码

添加新的用户账号

[root@localhost ~]# useradd wang
[root@localhost ~]# useradd
用法:useradd [选项] 登录
      useradd -D
      useradd -D [选项]

选项:
  -b, --base-dir BASE_DIR	新账户的主目录的基目录
  -c, --comment COMMENT         新账户的 GECOS 字段
  -d, --home-dir HOME_DIR       新账户的主目录
  -D, --defaults		显示或更改默认的 useradd 配置
 -e, --expiredate EXPIRE_DATE  新账户的过期日期
  -f, --inactive INACTIVE       新账户的密码不活动期
  -g, --gid GROUP		新账户主组的名称或 ID
  -G, --groups GROUPS	新账户的附加组列表
  -h, --help                    显示此帮助信息并推出
  -k, --skel SKEL_DIR	使用此目录作为骨架目录
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
  -l, --no-log-init	不要将此用户添加到最近登录和登录失败数据库
  -m, --create-home	创建用户的主目录
  -M, --no-create-home		不创建用户的主目录
  -N, --no-user-group	不创建同名的组
  -o, --non-unique		允许使用重复的 UID 创建用户
  -p, --password PASSWORD		加密后的新账户密码
  -r, --system                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -s, --shell SHELL		新账户的登录 shell
  -u, --uid UID			新账户的用户 ID
  -U, --user-group		创建与用户同名的组
  -Z, --selinux-user SEUSER		为 SELinux 用户映射使用指定 SEUSER

[root@localhost ~]# 

[root@localhost ~]# useradd vbird1                    
[root@localhost ~]# ll -d /home/vbird1
drwx------. 2 vbird1 vbird1 62 10月 27 20:26 /home/vbird1
[root@localhost ~]# 
 预设会建立使用者家目录权限700
[root@localhost ~]# group vbird1 /etc/passwd /etc/shadow /etc/group
-bash: group: 未找到命令
[root@localhost ~]# grep vbird1 /etc/passwd /etc/shadow /etc/group
/etc/passwd:vbird1:x:1002:1003::/home/vbird1:/bin/bash
/etc/shadow:vbird1:!!:18562:0:99999:7:::
/etc/group:vbird1:x:1003:
[root@localhost ~]# 
预设会建立一个和账号名一模一样的群组名

用users为初始群组,UID为1500的来建立一个名为vbird2的账号

[root@localhost ~]# useradd -u 1500 -g users vbird2
[root@localhost ~]# ll -d /home/vbird2
drwx------. 2 vbird2 users 62 10月 27 20:32 /home/vbird2
[root@localhost ~]# grep vbird2 /etc/passwd /etc/shadow /etc/group
/etc/passwd:vbird2:x:1500:100::/home/vbird2:/bin/bash
/etc/shadow:vbird2:!!:18562:0:99999:7:::
[root@localhost ~]# 

删除账号

[root@localhost ~]# userdel wang
[root@localhost ~]# userdel -r wang
userdel:用户“wang”不存在
[root@localhost ~]# 
[root@localhost ~]# userdel
用法:userdel [选项] 登录

选项:
  -f, --force                   force some actions that would fail otherwise
                                e.g. removal of user still logged in
                                or files, even if not owned by the user
  -h, --help                    显示此帮助信息并推出
  -r, --remove                  删除主目录和邮件池
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -Z, --selinux-user            为用户删除所有的 SELinux 用户映射

[root@localhost ~]# 

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

修改已有用户的信息使用usermod命令,其格式如下:
/etc/shadow 档案结构

就是放密码的地方,内容以:分割,一共9个位置,分别是:

1 账号名,与/etc/passwd里的账号名对应

2 真正的密码(加密过后的)

3 最近更动密码的日期,记录的为1970年1月1日到变更时间的天数间隔,

echo ( ( (( (((date --date=“2015/05/04” +%s)/86400+1))
提供一个计算公式用于计算具体日期的天数
4 密码不可变更的天数

5 密码需要重新变更的天数

6 密码变更前几天给提示

7 密码过期后宽限的时间,超过该时间 密码过期

8 密码失效时间 密码无法使用的时间

失效与过期不同,过期可以继续使用,登录提示要修改密码,而失效表示账号不能用了。

9为保留的栏位,无实际意义

[root@localhost ~]# usermod
用法:usermod [选项] 登录

选项:
  -c, --comment 注释            GECOS 字段的新值
  -d, --home HOME_DIR           用户的新主目录
  -e, --expiredate EXPIRE_DATE  设定帐户过期的日期为 EXPIRE_DATE
  -f, --inactive INACTIVE       过期 INACTIVE 天数后,设定密码为失效状态
  -g, --gid GROUP               强制使用 GROUP 为新主组
  -G, --groups GROUPS           新的附加组列表 GROUPS
  -a, --append GROUP            将用户追加至上边 -G 中提到的附加组中,
                                并不从其它组中删除此用户
  -h, --help                    显示此帮助信息并推出
  -l, --login LOGIN             新的登录名称
  -L, --lock                    锁定用户帐号
  -m, --move-home               将家目录内容移至新位置 (仅于 -d 一起使用)
  -o, --non-unique              允许使用重复的(非唯一的) UID
  -p, --password PASSWORD       将加密过的密码 (PASSWORD) 设为新密码
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -s, --shell SHELL             该用户帐号的新登录 shell
  -u, --uid UID                 用户帐号的新 UID
  -U, --unlock                  解锁用户帐号
  -v, --add-subuids FIRST-LAST  add range of subordinate uids
  -V, --del-subuids FIRST-LAST  remove range of subordinate uids
  -w, --add-subgids FIRST-LAST  add range of subordinate gids
  -W, --del-subgids FIRST-LAST  remove range of subordinate gids
  -Z, --selinux-user  SEUSER       用户账户的新 SELinux 用户映射

[root@localhost ~]# 

修改使用者bbb的说明栏,加上『VBird’s test』的说明。


[root@localhost ~]# usermod -c "VBird's test" bbb
[root@localhost ~]#  grep bbb /etc/passwd 
bbb:x:1002:1002:VBird's test:/home/bbb:/bin/bash

使用者bbb这个帐号在2020/12/31失效

[root@localhost ~]# usermod -e "2020-12-31" bbb
[root@localhost ~]#  chage -l bbb | grep 'Account expires'

用户口令管理

用户管理的一项重要内容是用户口令的管理。用户账号刚创建时没有口令,但是被系统锁定,无法使用,必须为其指定口令后才可以使用,即使是指定空口令。

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

[root@localhost ~]# passwd
更改用户 root 的密码 。
新的 密码:
[root@localhost ~]#

[root@localhost ~]# passwd
更改用户 root 的密码 。
新的 密码:
[root@localhost ~]# passwd -
passwd:未知的用户名 -。
[root@localhost ~]# passwd --help
用法: passwd [选项...] <帐号名称>
  -k, --keep-tokens       保持身份验证令牌不过期
  -d, --delete            删除已命名帐号的密码(只有根用户才能进行此操作)
  -l, --lock              锁定指名帐户的密码(仅限 root 用户)
  -u, --unlock            解锁指名账户的密码(仅限 root 用户)
  -e, --expire            终止指名帐户的密码(仅限 root 用户)
  -f, --force             强制执行操作
  -x, --maximum=DAYS      密码的最长有效时限(只有根用户才能进行此操作)
  -n, --minimum=DAYS      密码的最短有效时限(只有根用户才能进行此操作)
  -w, --warning=DAYS      在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
  -i, --inactive=DAYS     当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
  -S, --status            报告已命名帐号的密码状态(只有根用户才能进行此操作)
  --stdin                 从标准输入读取令牌(只有根用户才能进行此操作)

Help options:
  -?, --help              Show this help message
  --usage                 Display brief usage message
[root@localhost ~]# 

请root给予bbb密码


[root@localhost ~]# passwd bbb
更改用户 bbb 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

管理bbb的密码使具有60天变更、密码过期10天后帐号失效的设定

[root@localhost ~]# passwd -S bbb
bbb PS 2020-10-27 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
# 上面说明密码建立时间(2020-10-27)、0 最小天数、99999 变更天数、7 警告日数与密码不会失效(-1)
[root@localhost ~]# passwd -x 60 -i 10 bbb
[root@localhost ~]#  passwd -S bbb
bbb PS 2020-10-27 0 60 7 10 (密码已设置,使用 SHA512 算法。)

让vbird2的帐号失效,观察完毕后再让失效

[root@localhost ~]#  passwd -l bbb
锁定用户 bbb 的密码 。
passwd: 操作成功
[root@localhost ~]# passwd -S bbb
bbb LK 2020-10-27 0 60 7 10 (密码已被锁定。)
#状态变成『 LK, Lock 』了啦!无法登入喔!
[root@localhost ~]# grep bbb /etc/shadow
bbb:!!$6$TS9PFc48$rb/e9sHbP9b8Rff28jm/K36CIffczfkGZhTrYbrhERDycwf6N15DfmoCBHzfIJK4QB5Mat83h4KL8NC2AIg2k0:18562:0:60:7:10:18627:
#其实只是在这里加上!!而已!
[root@localhost ~]# passwd -u bbb
解锁用户 bbb 的密码。
passwd: 操作成功
[root@localhost ~]# grep bbb /etc/shadow
bbb:$6$TS9PFc48$rb/e9sHbP9b8Rff28jm/K36CIffczfkGZhTrYbrhERDycwf6N15DfmoCBHzfIJK4QB5Mat83h4KL8NC2AIg2k0:18562:0:60:7:10:18627:

除了使用passwd -S 之外,有没有更详细的密码参数显示功能呢?有的!那就是chage 了!他的用法如下:

[root@localhost ~]# chage
用法:chage [选项] 登录

选项:
  -d, --lastday 最近日期        将最近一次密码设置时间设为“最近日期”
  -E, --expiredate 过期日期     将帐户过期时间设为“过期日期”
  -h, --help                    显示此帮助信息并推出
  -I, --inactive INACITVE       过期 INACTIVE 天数后,设定密码为失效状态
  -l, --list                    显示帐户年龄信息
  -m, --mindays 最小天数        将两次改变密码之间相距的最小天数设为“最小天数”
  -M, --maxdays MAX_DAYS        set maximum number of days before password
                                change to MAX_DAYS
  -R, --root CHROOT_DIR         chroot 到的目录
  -W, --warndays 警告天数       将过期警告天数设为“警告天数”

[root@localhost ~]# 

范例一:列出bbb的详细密码参数

[root@localhost ~]# chage -l bbb
最近一次密码修改时间					:10月 27, 2020
密码过期时间					:12月 26, 2020
密码失效时间					:1月 05, 2021
帐户过期时间						:12月 31, 2020
两次改变密码之间相距的最小天数		:0
两次改变密码之间相距的最大天数		:60
在密码过期之前警告的天数	:7

范例二:建立一个名为agetest 的帐号,该帐号第一次登入后使用预设密码,但必须要更改过密码后,
使用新密码才能够登入系统使用bash环境

[root@localhost ~]# useradd agetest
[root@localhost ~]#  echo "agetest" | passwd --stdin agetest 
更改用户 agetest 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# chage -d 0 agetest 
[root@localhost ~]# chage -l agetest | head -n 3
最近一次密码修改时间					:密码必须更改
密码过期时间					:密码必须更改
密码失效时间					:密码必须更改

使用者功能(普通用户可以使用的功能:

[root@localhost ~]# id [username]

查阅root自己的相关ID资讯!
[root@localhost ~]# id 
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
# 上面资讯其实是同一行的资料!包括会显示UID/GID 以及支援的所有群组!
# 至于后面那个context=... 则是SELinux 的内容,先不要理会他!

查阅一下aaa
[root@localhost ~]# id aaa
uid=1004(aaa) gid=1004(aaa) 组=1004(aaa)

linux系统用户组的管理

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

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
增加一个新的用户组使用groupadd命令
其格式如下:

groupadd 选项 用户组
可以使用的选项有:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

新建一个群组,名称为group1
[root@localhost ~]# groupadd group1

[root@localhost ~]# groupadd
用法:groupadd [选项] 组

选项:
  -f, --force		如果组已经存在则成功退出
			并且如果 GID 已经存在则取消 -g
  -g, --gid GID                 为新组使用 GID
  -h, --help                    显示此帮助信息并推出
  -K, --key KEY=VALUE           不使用 /etc/login.defs 中的默认值
  -o, --non-unique              允许创建有重复 GID 的组
  -p, --password PASSWORD       为新组使用此加密过的密码
  -r, --system                  创建一个系统账户
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       directory prefix

[root@localhost ~]# 

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

groupadd 选项 用户组
可以使用的选项有:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

新建一个群组,名称为group1
[root@localhost ~]# groupadd group1

[root@localhost ~]# groupdel
用法:groupdel [选项] 组

选项:
  -h, --help                    显示此帮助信息并推出
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
  -f, --force                   delete group even if it is the primary group of a user

[root@localhost ~]# 

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


[root@localhost ~]# groupmod
用法:groupmod [选项] 组

选项:
  -g, --gid GID                 将组 ID 改为 GID
  -h, --help                    显示此帮助信息并推出
  -n, --new-name NEW_GROUP      改名为 NEW_GROUP
  -o, --non-unique              允许使用重复的 GID
  -p, --password PASSWORD	将密码更改为(加密过的) PASSWORD
  -R, --root CHROOT_DIR         chroot 到的目录
  -P, --prefix PREFIX_DIR       prefix directory where are located the /etc/* files
[root@localhost ~]# 
将刚刚上个指令建立的group1名称改为mygroup , GID为201 
[root@localhost ~]# groupmod -g 201 -n mygroup group1
[root@localhost ~]# grep mygroup /etc/group /etc/ gshadow 

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限

[root@localhost ~]# newgrp --help
用法:newgrp [-] [组]
[root@localhost ~]# newgrp root
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值