0%

linux用户管理

linux用户管理

linux中的用户一般分为两类:系统管理员和一般用户,系统管理员名称为root,具有对系统完全的控制权,可以对系统做任何设置以及修改,其主目录为/root;而对于一般用户,默认的主目录为/home/用户名称,仅能对于具有相应权限的文件/目录进行读取/修改/执行

用户管理

用户信息文件

在linux中的/etc/passwd文件中保存着linux的所有用户信息

1
2
3
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin

以冒号分隔分为七个字段

第一个字段为用户名
第二个字段为密码标志 x表示有密码,密码存在/etc/shadow文件中
第三个字段为用户ID 0是超级用户 1-499是系统用户 500-65535是普通用户
第四个字段为组id 对应着/etc/group文件中的记录
第五个字段为用户说明
第六个字段为用户家目录
第七个字段为登录shell

密码文件

用户的密码存在/etc/shadow文件中

1
2
3
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
adm:*:15980:0:99999:7:::

以冒号分隔分为九个字段

第一个字段 用户名
第二个字段 加密后的密码
第三个字段 密码最近修改时间 (距离1970年1月1日的天数)
第四个字段 两次密码的修改间隔时间
第五个字段 密码有效期
第六个字段 密码到期前多少天进行警告
第七个字段 密码到期后的宽限天数
第八个字段 密码失效时间
第九个字段 保留字段

用户命令

添加用户

添加用户使用useradd命令

1
2
3
4
5
6
7
8
9
10
11
12
13
useradd [option] 用户名

-c, --comment COMMENT 说明
-d, --home-dir HOME_DIR 指定用户的家目录
-m 自动创建家目录,同时把/etc/skel中的文件复制一份到用户的家目录中
-g, --gid 指定用户组,初始组id或组名,默认是与用户名相同
-G, --groups GROUPS 指定用户的附加组,多个组,用逗号分隔
-p, --password PASSWORD 用户密码
-r, --system 创建一个系统用户
-s, --shell SHELL 登录shell,默认是bin/bash
-u, --uid UID 指定用户的 UID 值
-M 不建立家目录

修改用户信息
1
2
3
4
5
6
7
8
9
10
usermod [options] 用户名

-c, --comment COMMENT 说明
-d, --home-dir HOME_DIR home directory of the new account 家目录
-g, --gid GROUP 初始组id或组名,默认是与用户名相同
-G, --groups GROUPS 附加组
-p, --password PASSWORD encrypted password of the new account 密码
-r, --system create a system account 创建一个系统用户
-s, --shell SHELL login shell of the new account 登录shell,默认是bin/bash
-u, --uid UID user ID of the new account 用户id
删除用户
1
2
3
userdel [-r] 用户名

-r 表示删除用户的同时删除家目录
切换用户
1
2
3
4
5
# 直接使用su,不指定用户名,默认会切换到root用户
su - 用户名

-m 保留环境变量不变
-c 执行完该次命令后用户切换回来

由于su的权限是没有限制的,所以此时用到了sudo命令,通过 sudo,我们能把某些 root 有针对性的下放,并且无需普通用户知道 root 密码,所以 sudo 相对于权限无限制性的 su 来说,还是比较安全的,所以 sudo 也能被称为受限制的 su ;另外 sudo 是需要授 权许可的,所以也被称为授权许可的 su;

sudo 执行命令的流程是当前用户转换到 root(或其他指定转换到的用户),然后以 root(或其他指定的转换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过 sudo 的 配置文档/etc/sudoers 来进行授权;

1
2
3
4
5
6
sudo 命令

# 列出用户在主机上可用的和被禁止的命令
sudo -l
# 以便经常的实行一些只能非常用户才可以实行的权限,而无需每一次键入密码,能够应用该命令。提醒键入密码时该密码为当今帐户的密码
sudo -i
查看当前用户
1
2
3
4
5
6
#显示当前用户
whoami
#当前系统所登陆的用户,以及所登录的控制台
who
#当前系统所登陆的用户,以及所登录的控制台的详细信息
w
密码设置修改
1
2
3
4
5
6
7
8
9
10
11
#密码设置
passwd 用户名

#对于普通用户来说,只可以修改当前用户密码,不需要指定用户名
passwd
--------------------
-l 使密码失效,停止账号使用
-u 用户解锁,与-l相对
-d 删除密码
-f 强制执行下次登陆时更改密码
-S 显示密码信息
查看用户信息
1
2
3
id

uid=501(zhanghe) gid=20(staff) groups=20(staff),12(everyone)

组管理

组信息文件

组信息存在/etc/group文件中

1
2
3
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon

以冒号分隔分为四个字段

第一个字段 组名
第二个字段 组密码
第三个字段 组ID
第四个字段 用户列表,每个用户之间用,号分割

组密码文件

1
groupname:password:admin,admin,...:member,member,...

第 1 字段:用户组
第 2 字段:用户组密码,这个段可以是空的或!,如果是空的或!,表示没有密码
第 3 字段:用户组管理者,这个字段也可为空,如果有多个用户组管理者,用,号分割;
第 4 字段:组成员,如果有多个成员,用,号分割;

组命令

添加组
1
2
3
4
groupadd 组名

-g 指定 GID,0~499留给系统使用,从500开始,如果省略该参数,系统会自动指定GID
-o 一般和 g 选项同时使用,可以与已有组的 GID 相同
删除组

再删除组前,要执行find / -group 组名称来检查系统中隶属于改组的目录及文件,并利用chown命令改变所属组

1
groupdel 组名
修改组
1
2
3
4
5
6
groupmod [options] 组名


-g 指定新的 GID
-o 与-g 配合使用同 groupadd 的-o
-n 修改组名
把用户加入组或者删除组
1
2
3
4
5
gpasswd [options] 组名

-a, --add USER add USER to GROUP 把用户加入组
-d, --delete USER remove USER from GROUP 把用户移出组

切换用户组
1
newgrp 组名

欢迎关注我的其它发布渠道