Linux中一切皆文件
一、账号管理简述
因为linux是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后再以这个账号进行系统的登录。每个用户账号都有唯一的一个用户名和自己的主目录。实现用户账号的管理,主要包括以下几个方面:
-
用户账号的添加、删除和修改
-
用户口令的管理
-
用户组的管理
二、用户账号管理
1. 添加用户命令
useradd - 选项 用户名 :添加用户
-m :自动创建这个用户的主目录
-d :指定用户主目录,如果此目录不存在,可以同时使用-m创建主目录
-g :用户组,指定用户所属的用户组
-G :指定用户所属的附加组
- s :shell文件,指定用户的登录shell
- 添加用户实际上就是在某一个文件中写入用户的信息。可是使用cat查看/etc/password,就可以看到。
2. 删除用户命令
userdel :删除用户
-r :删除用户是,连同用户主目录一起删除
3. 修改用户指令
usermod :修改用户
- 常用的选项包括-c/-d/-g/-G/-m/-s等等,和用户添加的选项是一致的。
- 修改用户实际就是更改用户有关的属性,包括:用户号、主目录、用户组、登录shell等。
4. 切换用户
- su 用户名
- 退出当前,返回root用户,直接输入exit即可
- 通过hostname可以查看主机名,hostname 新主机名可以修改主机名,重启linux系统,即可看到修改之后的名字
5. 用户密码设置
passwd 用户名 :修改某个用户的密码
- linux中,输入密码时,不会显示,但是确实是输入进去了的。
- 超级用户可以指定任意用户的密码,普通用户只能修改自己的,并且密码复杂度必须要高,否则会报错。
6. 用户锁定
passwd -l ajun :锁定之后用户就不能登录
passwd -d ajun :清空密码,设置之后,用户就没有密码了,但也不能登录。
三、用户组管理
1. 用户组概念
- 每个用户都有一个用户组,系统可以对一个用户组中多有用户进行集中管理。
- 组的增加、删除和修改实际上就是对/etc/group文件的更新。
2. 创建用户组
groupadd :用户组的创建
-g :在创建用户时,给定一个自己想要设置的id,如果不指定,会直接自增
- 用户组创建完成后,可以使用 cat etc/group 查看用户组的id。
3. 删除用户组
groupdel :删除用户组
4. 修改用户组
groupmod :修改用户组的一些信息
-g :修改用户组的id
-n :修改用户组的名称
四、 补充
1. /etc/passwd
我们可以看到/etc/passwd中每一行记录都对应着一个用户,使用冒号(:)分割为7个字段,具体分析如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
- "用户名"是代表用户账号的字符串。
- “口令”字段存放的是用户口令的加密串,不是明文,但是/etc/passwd文件对所有用户都可读,所以仍存在安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中。
- “用户标识号”是一个整数,系统内部用它来标识用户。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
- “组标识号”字段记录的是用户所属的用户组。
- “注释性描述”字段记录着用户的一些个人情况。
- “主目录”,也就是用户的起始工作目录。
- “登录shell”用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), bash(Bourne Again Shell)等。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
2. /etc/shadow
/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生
登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
3. /etc/group
主要是用来存放用户组的信息,将用户分组是linux系统对用户进行管理及控制访问权限的一种手段。
组名:口令:组标识号:组内用户列表
- "组名"是用户组的名称,与/etc/passwd中的登录名一样,组名不应重复。
- "口令"存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
- "组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。
- "组内用户列表"是属于这个组的所有用户的列表。