一. linux 用户和组的基本介绍
1.linux下 有三种用户:
1. root: 权限最大的。
2. 系统用户: UID小于1000的。系统服务管理用户,一般是不允许登录系统的。(比如mysql用户)
3. 普通用户:(UID大于999的,权限比较小,可以登录,只能使用bin目录下的命令)
2. linux 组
组: 一个用来保存用户的容器。用来装不同的用户的,没有其他意义(win中 组可能涉及到权限)
在默认的情况下,新建用户的同时,系统会创建一个同名组,装载这个用户。
在linux中每个用户必须要 属于一个组, 绝对不能够独立于组外。
在linux中,每个文件都有所有者,所在组,其他组的概念。
二。用户管理
su - user01 切换到user01用户
1. useradd 新建用户 - create a new user or update default new user infomation
语法: useradd [option] username
-c, --comment 描述
-d, --home HOME_DIR 家目录 (家目录放在哪里)
-e, expiredate EXPIPE_DATE 过期时间。
-f, --inactice INACTIVE 是否启用过期机制
-g, --gid GROUP 指定组的ID号 (不建同名组,进入到其他组里面)
-G, --groups GROUP1,[GROUP2,...[GROUPN]]] 附加组 (及创建同名组,还附加一些其他组。)
-m, --create-home 建立家目录
-M, 不建立家目录
-N, --no-user-group 不指定用户同名组
-r, --system 指定该账号是 系统账号
-s, --shell SHELL 指定登录shell (-s /sbin/nologin 这个shell就是非交互式的,不允许登录的shell)
-u, --uid UID 指定用户ID
-U, --user-group 指定用户创建用户同名组
-o, 创建用户时可以uid 重复
密码的设置: passwd -update user's authtications tokens
passwd [option] username
-l lock 锁定用户(不准登录了)
-u unlock (解锁)
-d delete a passwd for an account (删除一个用户的密码,就是无密码)
-S this will output a short information about the status of the password given account.(显示给定帐户密码状态的简短信息)
--stdin (标准输入,方式设置密码。)(echo "123" | passwd --stdin user01)
需要注意一点的就是,在对自己进行修改密码时,就不需要 username 的后缀了。直接写passwd就好了
2. userdel 删除用户 --delete a user account and related files(删除用户以及相关的文件,比如家目录和邮箱等, /home/user05 /var/mail/usero5)
userdel [option] username
-f, --force 强制
-r, --remove 删除主目录以及邮箱
3. usermod 修改用户属性
usermod -modify a user acccount
语法: usermod [option] username
-a, --append
-L, --local 锁定
-U, --unlock 解锁
-m, --move-home with -d 移动家目录 ( usermod -m -d /home/user01) 指定家目录到/home/user01 。 这种的有一个要求就是 user01 这个目录不能在登录状态,否则是不准使用的。
其他:
查看用户密码的一些信息。
[root@python ~]# passwd -S python_web
python_web PS 1969-12-31 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
使用change 可以交互的进行设置这些内容。
[root@python ~]# chage python_web
正在为 python_web 修改年龄信息
请输入新值,或直接敲回车键以使用默认值 最小密码年龄 []: 0 # 设置几天之内不能修改代码
最大密码年龄 []: 99999 # 密码的有效期,99999天
最近一次密码修改时间 (YYYY-MM-DD) [-]: 2019-7-02 # 最后一次修改密码的时间
密码过期警告 []: 2 # 过期前2天给与警告
密码失效 [-]: 5 # 密码失效之后,还可以使用几天
帐户过期时间 (YYYY-MM-DD) [-]: --5 # 账号的过期时间。
[root@python ~]# passwd -S python_web
python_web PS 2019-07-02 0 99999 2 5 (密码已设置,使用 SHA512 算法。)
或者不想使用交互式的,可以使用一条命令搞定:
chage [option] username
-h, --help display this help message and exit
-m, 密码可更改的最小天数, 为0时代表任何时候都可以更改密码
-M, 密码保持有效的最大天数。
-W, 用户密码到期前,提前收到警告信息的天数。
-E, 账号到期的日期。
-d, 上一次更改的日期
-I,(这是 i ) 停滞时期, 如果一个密码已过期之后,还可以使用几天。
-l, (这是 L)列出当前的设置。
如果想要一个用户在登录某个账户时,强制的让他修改密码。
只需要将最后一次密码的更改时间修改为 0 也就是 -d 这个命令。这样用户在登录时就会强制行的让他修改密码。
4. /etc/passwd 密码文件
[username]:[password]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell]
5. /etc/shadow 影子文件
用户名:这是用户登陆时使用的用户名,在系统中是唯一的
口令:存放加密的口令
最后一次修改的时间:表示从某一时刻开始到用户最后一次修改口令的天数
最小时间间隔:两次修改口令之间的最小天数
最大时间间隔:口令保持有效的最多天数,就是多少天之后必须修改口令
警告时间:从系统开始警告到正式失效的天数
不活动时间:口令过期多少天后,该账号被禁用
失效时间:指口令失效的绝对天数(从1970.1.1开始算起)
这俩文件 最好不要修改。