Linux运维学习笔记-用户管理
用户分类
超级用户:UID=GID=0的用户,一般为root
普通用户:只有root用户可以创建(UID范围:6.x系统起步为500,7.x系统起步为1000,最大为65535)
系统用户(虚拟用户):不可以登录系统的用户,可以具备密码。(UID范围:6.x系统为1-499,7.x系统为1-999)
文件
/etc/passwd文件:存放系统上所有本地用户
用户名(注册名):密码:UID:GID:用户名(标识现实真实用户信息):家目录:使用的bash解释器
/etc/shadow文件(影子文件):将用户的密码加密保存
1、用户名
2、加密后的密码,如果这一栏为”*”:说明这是一个没有配置密码的系统用户,如果为”!!”:一般情况下这是一个普通用户,而且密码为空
3、最近改动密码的日期
4、密码不可被变更天数:设置了这个值,则表示从变更密码的日期算起,多少天内无法再次修改密码,如果是0的话,则没有限制
5、密码需要重新变更的天数:如果为99999则没有限制
6、密码过期预警天数
7、密码过期的宽恕时间:如果在5中设置的日期过后,用户仍然没有修改密码,则该用户还可以继续使用的天数
8、账号失效日期:过了这个日期账号就无法使用
9、保留
/etc/group文件:存放系统本地组信息
1、组名
2、组密码标志:这里的"x"仅仅是密码标识,真正的加密之后的组密码保存在 /etc/gshadow 文件中。
3、组ID(GID)
4、组中的用户:表示的就是这个用户组中到底包含了哪些用户。需要注意的是,如果该用户组是这个用户的初始组,则该用户不会写入这个字段。也就是说,写入这个字段的用户是这个用户组的附加用户。
/etc/gshadow文件(影子文件):将组密码加密保存(组可以设置密码,但是一般不用)
1、用户组名
2、用户组密码:这个段可以是空的或!,如果是空的或有!,表示没有密码
3、用户组管理员的名称:这个字段也可为空,如果有多个用户组管理者,用,号分割
4、组成员:如果有多个成员,用,号分割
命令
id命令:显示真实有效的用户ID(UID)和组ID(GID)
[[email protected] ~]# id ftd001 uid=1000(ftd001) gid=1000(ftd001) groups=1000(ftd001) [[email protected] ~]#
打印用户的UID、GID以及groups(扩展组),注意:扩展组里一定有他自己的主组
选项:
-g或--group 显示用户所属群组的ID。
-G或--groups 显示用户所属附加群组的ID。
-n或--name 显示用户,所属群组或附加群组的名称。
-r或--real 显示实际ID。
-u或--user 显示用户ID。
-help 显示帮助。
-version 显示版本信息。
su命令:用户切换
[[email protected] ~]# su - ftd001 Last login: Fri Mar 15 11:13:07 EDT 2019 on pts/0 [[email protected] ~]$ [[email protected] ~]$ [[email protected] ~]$ su - Password: Last login: Fri Mar 15 11:13:18 EDT 2019 on pts/0 [[email protected] ~]# [[email protected] ~]#
选项:
-:直接切换到用户家目录
-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;
-f或——fast:适用于csh与tsch,使shell不用去读取启动文件;
-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;
-m,-p或--preserve-environment:变更身份时,不要变更环境变量;
-s<shell>或--shell=<shell>:指定要执行的shell;
--help:显示帮助;
--version;显示版本信息。
useradd命令:增加用户
创建用户,默认创建用户有家目录 [[email protected] ~]# ls -l /home/ total 0 [[email protected] ~]# [[email protected] ~]# useradd ftd001 [[email protected] ~]# [[email protected] ~]# ls -l /home/ total 0 drwx------. 2 ftd001 ftd001 62 Mar 15 11:18 ftd001 [[email protected] ~]# [[email protected] ~]# id ftd001 uid=1000(ftd001) gid=1000(ftd001) groups=1000(ftd001) [[email protected] ~]#
创建系统用户(不创建家目录,不允许登录) [[email protected] ~]# ls -l /home/ total 0 drwx------. 2 ftd001 ftd001 62 Mar 15 11:18 ftd001 [[email protected] ~]# [[email protected] ~]# useradd ftd002 -s /sbin/nologin -M [[email protected] ~]# [[email protected] ~]# ls -l /home/ total 0 drwx------. 2 ftd001 ftd001 62 Mar 15 11:18 ftd001 [[email protected] ~]# [[email protected] ~]# id ftd002 uid=1001(ftd002) gid=1001(ftd002) groups=1001(ftd002) [[email protected] ~]# [[email protected] ~]# su - ftd002 su: warning: cannot change directory to /home/ftd002: No such file or directory This account is currently not available. [[email protected] ~]#
选项
-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;
-d<登入目录>:指定用户登入时的启始目录(指定用户的家目录);
-D:变更预设值;
-e<有效期限>:指定帐号的有效期限(指定用户到期时间,格式为YYYY-MM-DD);
-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;
-g<群组>:指定用户所属的群组;
-G<群组>:指定用户所属的附加群组;
-m:自动建立用户的登入目录;
-M:不要自动建立用户的登入目录(不创建家目录);
-n:取消建立以用户名称为名的群组;
-r:建立系统帐号;
-s<shell>:指定用户登入后所使用的shell(-s /sbin/nologin指定为系统用户);
-u<uid>:指定用户id
passwd命令:设置密码
当前用户直接使用,则直接修改自己的密码 [[email protected] ~]# passwd Changing password for user root. New password:
passwd 用户名 修改指定用户的密码 [[email protected] ~]# passwd ftd001 Changing password for user ftd001. New password:
直接修改密码 [[email protected] ~]# echo "123456" | passwd ftd001 --stdin Changing password for user ftd001. passwd: all authentication tokens updated successfully. [[email protected] ~]#
选项:
-d:删除密码,仅有系统管理者才能使用;
-f:强制执行;
-k:设置只有在密码过期失效后,方能更新;
-l:锁住密码;
-s:列出密码的相关信息,仅有系统管理者才能使用;
-u:解开已上锁的帐号。
chage命令:修改帐号和密码的有效期限
[[email protected] ~]# chage -l root Last password change : never Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7 [[email protected] ~]#
修改账户属性 [[email protected] ~]# chage ftd001 Changing the aging information for ftd001 Enter the new value, or press ENTER for the default Minimum Password Age [0]: Maximum Password Age [99999]: Last Password Change (YYYY-MM-DD) [2019-03-15]: Password Expiration Warning [7]: Password Inactive [-1]: Account Expiration Date (YYYY-MM-DD) [-1]: [[email protected] ~]#
选项:
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期
userdel命令:删除账户
[[email protected] ~]# ls -l /home/ total 0 drwx------. 2 ftd001 ftd001 62 Mar 15 11:30 ftd001 [[email protected] ~]# [[email protected] ~]# userdel ftd001 [[email protected] ~]# [[email protected] ~]# ls -l /home/ total 0 drwx------. 2 1002 1002 62 Mar 15 11:30 ftd001 [[email protected] ~]# [[email protected] ~]# id ftd001 id: ftd001: no such user [[email protected] ~]#
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件。
[[email protected] ~]# ls -l /home/ total 0 drwx------. 2 ftd001 ftd001 62 Mar 15 11:31 ftd001 [[email protected] ~]# [[email protected] ~]# userdel -rf ftd001 [[email protected] ~]# [[email protected] ~]# ls -l /home/ total 0 [[email protected] ~]# [[email protected] ~]# id ftd001 id: ftd001: no such user [[email protected] ~]#
usermod命令:修改用户的基本信息
[[email protected] ~]# id ftd001 uid=1002(ftd001) gid=1002(ftd001) groups=1002(ftd001) [[email protected] ~]# [[email protected] ~]# usermod ftd001 -u 1111 [[email protected] ~]# [[email protected] ~]# id ftd001 uid=1111(ftd001) gid=1002(ftd001) groups=1002(ftd001) [[email protected] ~]#
选项:
-c<备注>:修改用户帐号的备注文字;
-d<登入目录>:修改用户登入时的目录;
-e<有效期限>:修改帐号的有效期限;
-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;
-g<群组>:修改用户所属的群组;
-G<群组>;修改用户所属的附加群组;
-l<帐号名称>:修改用户帐号名称;
-L:锁定用户密码,使密码无效;
-s<shell>:修改用户登入后所使用的shell;
-u<uid>:修改用户ID;
-U:解除密码锁定。
groupadd命令:创建一个新的工作组
groupdel命令:删除指定的工作组
groupmod命令:更改组的GID或名称
chown命令:改变某个文件或目录的所有者和所属的组
修改文件属主: [[email protected] aaa]# ls -l total 0 -rw-r--r--. 1 root root 0 Mar 15 11:39 test001 [[email protected] aaa]# [[email protected] aaa]# chown ftd001 test001 [[email protected] aaa]# [[email protected] aaa]# ls -l total 0 -rw-r--r--. 1 ftd001 root 0 Mar 15 11:39 test001 [[email protected] aaa]#
修改文件属组: [[email protected] aaa]# ls -l total 0 -rw-r--r--. 1 root root 0 Mar 15 11:39 test001 [[email protected] aaa]# [[email protected] aaa]# chown :ftd001 test001 [[email protected] aaa]# [[email protected] aaa]# ls -l total 0 -rw-r--r--. 1 root ftd001 0 Mar 15 11:39 test001 [[email protected] aaa]#
同时修改文件属主与属组: [[email protected] aaa]# ls -l total 0 -rw-r--r--. 1 root root 0 Mar 15 11:39 test001 [[email protected] aaa]# [[email protected] aaa]# chown ftd001:ftd001 test001 [[email protected] aaa]# [[email protected] aaa]# ls -l total 0 -rw-r--r--. 1 ftd001 ftd001 0 Mar 15 11:39 test001 [[email protected] aaa]#
选项:
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quite或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-v或——version:显示指令执行过程;
--dereference:效果和“-h”参数相同;
--help:在线帮助;
--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;
--version:显示版本信息。
chgrp命令:只修改组
[[email protected] aaa]# ls -l total 0 -rw-r--r--. 1 root root 0 Mar 15 11:39 test001 [[email protected] aaa]# [[email protected] aaa]# chgrp ftd001 test001 [[email protected] aaa]# [[email protected] aaa]# ls -l total 0 -rw-r--r--. 1 root ftd001 0 Mar 15 11:39 test001 [[email protected] aaa]#
选项:
-c或——changes:效果类似“-v”参数,但仅回报更改的部分;
-f或--quiet或——silent:不显示错误信息;
-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;
-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;