Linux用户分为:属主、属组(Group)、其他(other),Linux系统中,预设的情況下,系统中所有的帐号与一般身份使用者,以及root的相关信息,都是记录在/etc/passwd
文件中。每个人的密码则是记录在/etc/shadow
文件下。 此外,所有的组群名称记录在/etc/group
內!
linux文件的用户权限的分析图
例:rwx rw- r— // 值 764
- r 读取属性 // 值=4
- w 写入属性 // 值=2
- x 执行属性 // 值=1
第一个字符意义
- - 普通文件
- d 目录
- l 软链接
- b 块设备文件
- c 字符设备文件
- p 管道文件
例: lrwxrwxrwx. 1 root root 1 Apr 1 01:18 d -> b
用户特征码
操作系统时通过用户特征码来识别用户的。对于人类,我们识别用户是通过用户名,因为用户名(字符串)好记。而计算机觉得数字更好记一些,于是在创建用户时系统会为其分配一个唯一的特征码,用以识别该用户,这个特征码也叫UID。同样的,用户组也有特征码,叫做GID。
Linux 系统中,UID以如下的方式划分:
- 0 表示管理员(root)
- 1 - 999 表示系统用户
- 1000 - 65535 表示普通用户
注:不同的 Linux 发行版,这些数字可能不一样
UID是不能冲突的,而且管理员创建的普通用户的UID默认是从1000开始的(即使前面有闲置的号码)。
创建用户
adduser username
添加用户
在Linux系统中创建每个用户时,将自动创建一个与其同名的基本用户组,而且这个基本用户组只有该用户一个人。如果该用户以后被归纳入其他用户组,则这个其他用户组称之为扩展用户组。一个用户只有一个基本用户组,但是可以有多个扩展用户组,从而满足日常的工作需要。
在创建用户的时候, 可以指定用户目录、UID以及Shell解释器:
useradd -d /home/admin -u 8888 -s /sbin/nologin linuxprobe
:::info
/sbin/nologin
是终端解释器中的一员,与Bash解释器有着天壤之别。一旦用户的解释器被设置为nologin,则代表该用户不能登录到系统中
:::
使用 id 命令查看用户的uid及所属的组:
$ id admin
uid=1000(admin) gid=1000(admin) groups=1000(admin)
删除用户
userdel
命令用于删除用户,格式为 userdel [选项] 用户名
。
参数如下:
- -f 强制删除用户
- -r 同时删除用户及用户家目录
userdel -r username # 删除一个用户 ( '-r' 排除主目录)
设置登录密码
passwd
命令用于修改用户密码、过期时间、认证信息等,格式为 passwd [选项] [用户名]
。
普通用户只能使用passwd命令修改自身的系统密码,而root管理员则有权限修改其他所有人的密码。更酷的是,root管理员在Linux系统中修改自己或他人的密码时不需要验证旧密码,这一点特别方便。既然root管理员可以修改其他用户的密码,就表示完全拥有该用户的管理权限。
参数如下:
- -l 锁定用户,禁止其登录
- -u 解除锁定,允许用户登录
- —stdin 允许通过标准输入修改用户密码,如
echo "NewPassWord" | passwd --stdin Username
- -d 使该用户可用空密码登录系统
- -e 强制用户在下次登录时修改密码
- -S 显示用户的密码是否被锁定,以及密码所采用的加密算法名称
在修改用户密码时,通常都需要输入两次密码以进行确认,这在编写自动化脚本时将成为一个非常致命的缺陷。通过把管道符和passwd命令的—stdin参数相结合,我们可以用一条命令来完成密码重置操作:
$ echo "root" | passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.
更改用户设置
usermod
命令用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。当usermod命令用来改变user id,必须确认这名user没在电脑上执行任何程序。
修改用户名
我们可以用 -l
参数修改用户帐号名称, 格式为
usermod -l newUserName userName
修改组信息
我们可以用 -g
参数修改用户的基本组ID,用 -G
参数修改用户扩展组ID。
usermod -G admins admin
$ id admin
uid=1000(admin) gid=1000(admin) groups=1000(admin),1002(admins)
以上命令, 将用户 admin 添加到组 admins 中, 使用 id 查看其修改后的状态
锁定/解锁账号
- -L 锁定用户,禁止其登录系统
- -U 解锁用户,允许其登录系统
usermod -L userName
usermod -U userName
修改用户的shell
-s
参数用于修改用户登入后所使用的shell
usermod -s /sbin/nologin ftpuser
群组
使用 groupadd groupname
添加一个群组