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 14 15 16 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 不建立家目录 # 自定义家目录 useradd -d /home/dog nuser
修改用户信息 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 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 把用户移出组
切换用户组