Linux系统用户和用户组管理

  • /etc/passwd
#cat /etc/passwd | head    // “|”称为管道符,head查看文件内容前10行
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin

/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:家目录:登录Shell

用户名(login_name):是代表用户账号的字符串。用户名中的字符可以是大小写字母、数字、减号(不能出现在首位)、点或下划线,其他字符不合法。
口令(passwd):出于安全,现在把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
用户标识号(UID):是一个整数,系统内部用它来标识用户。一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。取值范围是0-65535(实际现在已经可以支持到429 496 729 4)。0是超级用户root的标识号,1-99由系统保留,作为管理账号,CentOS7的普通用户的标识号从500开始。
组标识号(GID):字段记录的是用户所属的用户组。它对应着/etc/group文件中的一条记录。
注释性描述(users):字段记录着用户的一些个人情况,例如用户的真实姓名、电话、地址等.可以用chfn命令来更改这些信息。
家目录(home_directory):也就是用户的起始工作目录,它是用户在登录到系统之后所处的目录。例如root的家目录就是/root,普通用户的家目录为/home/username,用户家目录可以自定义。
登录Shell(Shell):用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用sh(BourneShell),csh(CShell),ksh(KornShell),tcsh(TENEX/TOPS-20typeCShell),bash(BourneAgainShell)等。系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/bash。CentOS的shell就是bash。/sbin/nologin表示不允许该账号登陆。

  • /etc/shadow
#cat /etc/shadow| head -n 3
root:!:17043:0:99999:7:::
daemon:*:16652:0:99999:7:::
bin:*:16652:0:99999:7:::

分割为9个字段,每个字段含义:

1、 用户名:是与/etc/passwd文件中的登录名相一致的用户账号
2、用户密码:是该账号的真正密码。
星号代表帐号被锁定;
双叹号表示这个密码已经过期了;
3、上次更改密码的日期:表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。在Linux中,这个时间起点是1970年1月1日。
4、最小时间间隔:指的是两次修改口令之间所需的最小天数。默认是0,即不受限制。
5、最大时间间隔:指的是口令保持有效的最大天数。默认99999,可以理解为永远不需要更改。
6、警告时间:为密码到期前的警告期限。若设置为7,则表示当7天后密码过期时,系统就会发出警告,提醒用户他的密码将在7天后到期。
7、账号失效期限:表示的是用户没有登录活动但账号仍能保持有效的最大天数。
8、账号的生命周期:这个周期是按距离1970年1月1日多少天算的。含义是账号在这个日期前可以使用,到期后账号将作废。
9、最后一个字段作为保留用的,没有什么意义。

用户和用户组

  • groupadd命令:添加用户组

格式:groupadd [-g GID] groupname
如果不加-g选项,会按照系统默认的gid创建组,gid是从500开始的。我们也可以自定义gid

# groupadd grptest1
# tail -n1 /etc/group
grptest1:x:503:
# groupadd -g 508 grptest2
# tail -n1 /etc/group
grptest1:x:503:
grptest2:x:508:
  • groupdel命令:删除用户组
# groupdel grptest2
# tail -n2 /etc/group
user1:x:502:
grptest1:x:503:
# groupdel user1
groupddel: 不能移除用户“user1”的主组

因为user1组中包含user1账户,只有删除user1账户后才可以删除该组。

  • useradd命令:增加用户

格式:
useradd [-u UID] [-g GID] [-d HOME] [-M] [-s]

-u:表示自定义UID
-g:表示使新增用户属于已存在的某个 组,后面可以跟组id,也可以跟组名
-d:表示自定义用户的家目录
-M:表示不建立家目录
-s:表示自定义shell
如果useradd不加任何选项,直接跟用户名,则会创建跟用户同名的组。

  • userdel命令:删除用户

格式:
userdel [-r] username
-r选项的作用是,当删除用户时,一并删除该用户的家目录。不加-r时,直接删除用户,但保留其家目录

  • chfn命令:用于更改用户的finger(change finger)
# chfn user11
Changing finger information for user11.
名称 []:user11
办公 []:user11's office
办公电话 []:123456789
住宅电话 []:987654321

Finger information changed.
# grep 'user11' /etc/passwd
user11:x:1005:1004:user11,user11's office,123456789,987654321:/home/user11:/sbin/nologin

grep命令是用来过滤制定关键词的行

用户密码管理

  • passwd命令设置密码

格式:passwd 【username】
命令后面不加用户名字,则是为自己设定密码
只有root可以修改其他账户的密码,普通用户只能修改自己的密码

1、长度大于10个字符
2、密码中包含大小写字母、数字以及特殊符号*、&、%等
3、不规则性(不要出现happy love 7758520 111111等单次或者数字)
4、密码中不要带自己名字,电话以及公司名字等

  • mkpasswd命令:用于生成密码
    我们安装的Linux默认没有mkpasswd命令,需要安装expect软件包
# yum install -y expect
# mkpasswd -l 12  // 生成12位长度的密码
# mkpasswd -l 12 -s 0 -d 3 // -s指定特殊符号的个数,-d指定数字的个数

用户身份切换

  • su命令

格式:su [-] username
不加-切换到root账户时,当前目录没有变化,是普通用户的目录
加-会回到root账户的家目录,初始化当前用户的各种环境变量
可以用whoami查看当前用户

普通用户的su命令不加username时,就是切换到root用户。普通用户和root用户的shell提示符号有些区别,root账户是#,普通用户是$。

  • sudo命令
    在普通用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人)。
    默认情况下,只有root用户才能使用sudo命令,普通用户想要使用sudo,是需要root预先设定的。可以使用visudo命令编辑相关配置文件/etc/sudoers(必须要使用root用户)。
# yum install -y sudo  //安装visudo命令
## Allow root to run any commands anywhere
root  ALL=(ALL)      ALL
test  ALL=(ALL)      ALL   //添加后,test用户拥有root的特权
  • 不允许root远程登陆Linux
    修改sshd服务的配置文件/etc/ssh/sshd_config,在文件中查找#PermitRootLogin yes并修改为PermitRootLogin no。保存配置文件后,需要重启sshd服务。
# systemctl restart sshd.service  //重启sshd服务

你可能感兴趣的:(笔记,linux)