1.1用户与组的概念
1.理解Linux多用户、多任务的特性
不同用户具有不同的权限,每个用户在权限允许的范围内完成不同的任务,
Linux正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。
2.Linux下用户的角色分类
在Linux下用户是根据角色定义的,具体分为三种角色
每个用户都有一个UID,并且是唯一的,通常UID号的取值范围是0~65535,
a.管理员(超级用户):拥有对系统的最高管理权限 ,默认是root用户【0】
b.系统用户(虚拟用户): 也叫“伪”用户,这类用户最大特点是不能登录系统,
它们的存在主要是为了方便系统管理,满足相应的系统进程对文件属主的要求。
例如,系统默认的bin、adm、nobody用户等,一般运行的web服务,默认使用的就是nobody用户,
但是nobody用户是不能登录系统的【1-499】 (运行后台程序,daemon守护进程)
c.普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限
例如,上面提到的crx用户,A,B用户等【500+】
查看用户信息
- id[用户名] 查看用户UID和GID信息
- who 查看当前所有登录的用户列表
- whoami 查看当前登录用户的帐户名
eg:
id用来查询当前用户的一些信息 对应/etc/group 查看
[crx@master ~]$ id
uid=500(crx) gid=501(crx) groups=501(crx) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@master Desktop]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
3.用户和组的概念
我们知道,Linux是一个多用户多任务的分时操作系统,如果要使用系统资源,就必须向系统管理员
申请一个帐户,然后通过这个帐户进入系统。这个帐户和用户是一个概念。
通过建立不同属性的用户,一方面,可以合理利用和控制系统资源;
另一方面,也可以帮助用户组织文件,提供对用户文件的安全性保护.
每个用户都用一个唯一的用户名和用户密码,在登录系统时,只有正确输入了用户名和密码,
才能进入系统和自己的主目录。
用户组是具有相同特征用户的逻辑集合。
通过定义用户组,在很大程度上简化了管理工作.
eg:查看windows下用户和用户组
■用户和组的关系:
用户和用户组的对应关系有:一对一、一对多、多对一、多对多
一对一:一个用户可以存在一个组中,也可以是组中的唯一成员。
一对多:一个用户可以存在多个用户组中,此用户具有多个组的共同权限
多对一:多个用户可以存在一个组中,这些用户具有和组相同的权限
多对多:多个用户可以存在多个组中,其实就是上面三个对应关系的扩展
为了方便用户管理,提出了“组”的概念,可以给组分配权限,把相同用户的权限放在同一个组中
1.2用户配置文件概述
1.用户和组相关的配置文件
1)/etc/passwd文件
系统用户配置文件,是用户管理中最重要的一个文件,这个文件记录了Linux系统中每个用户的
一些基本属性,并且对所有用户可读。/etc/passwd中每一行记录对应一个用户,每行记录又被
冒号分割。其格式如下:
用户名:密码:用户标识号:组标识号:注释性描述:主目录:默认shell
[root@slave2 Desktop]# cat /etc/passwd
下面是每个字段的详细含义:
用户名:是代表用户帐号的字符串
密码: 存放着加密后的用户密码,虽然这个字段存放的只是用户密码加密串,
不是明文,但是由于/etc/passwd文件是对所有用户都可读的,因此这仍是一个安全隐患。
因此,现在许多linux版本都使用了shadow技术,把真正加密后的用户密码存放到/etc/shadow
文件中,而在/etc/passwd文件的密码字段只存放一个特殊的字符,例如用“x"或者"*"来表示。
用户标识号:就是用户的UID,每个用户都有一个UID,并且是唯一的,
通常UID号的取值范围是065535,0是超级用户的标识号,199由系统保留,作为管理帐号,
普通用户的标识号从100开始。而在Linux系统中,普通用户UID默认从500开始。
UID是Linux下确认用户权限的标志,用户的角色和权限都是通过UID来实现的,因此多个用户公用
一个UID是非常危险的,会造成系统权限和管理的混乱,
例如,将普通用户的UID设置为0后,这个普通用户就具有了root用户的权限,这是极度危险的操作。
因此要尽量保持用户UID的唯一性。
组标识号:就是组的GID,与用户UID类似,这个字段记录了用户所属的用户组,
它对应/etc/group文件中的一条记录.
注释性描述:字段是对用户的描述信息,比如用户的住址,电话,姓名等。
主目录:也就是用户登录系统之后默认所在的目录,也可以叫做用户的主目录,家目录,根目录等。
默认shell:就是用户登录系统后默认使用的命令解释器,shell是用户和Linux内核之间的接口,
用户所做的任何操作,都是通过shell传给系统内核的。Linux下常用的shell用sh、bash、csh等,
管理员可以根据用户的习惯,为每个用户设置不同的shell
2)/etc/shadow文件
由于/etc/passwd文件是所有用户都可读的,因此就导致了用户的密码容易出现泄露,
于是,Linux将用户的密码信息从/etc/passwd中分离出来,单独放到一个文件中,
这个文件就是/etc/shadow。该文件只有root用户拥有读权限,从而保证了用户密码的安全性。
passwd
[crx@master]$ cat /etc/passwd | less
[crx@master]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[root@master Desktop]# cat /etc/shadow
root:
6
6
6ZS2TO4VXvo8kccDY$yhqAEqdWVfvlZc8b0svpqUY4qiQr7z4HFo9aD7IJQT89wSGcFpEoaK3fV6ryPctt9P1B5nyweDkaIhhcJVQ2F0:17769:0:99999:7:::
crx:$6
318
q
d
s
7
X
b
J
T
5
I
N
k
l
318qds7XbJT5INkl
318qds7XbJT5INklR08hARiEfH2sXWAwFyup.JkPXdL5KuTn23oT96LesPxIu1INr4FQKo7aibNjKbHXCBDThHQmwdyJkaq91HHu8/:17769:0:99999:7:::
用户名:与/etc/passwd文件中的用户名有相同的含义
加密密码:存放的是加密后的用户密码字串,如果此字段是“*”“!”“x”等字符,
则对应的用户不能登录系统
最后一次修改时间:表示从某个时间起到用户最近一次修改密码的间隔天数。
可以通过passwd来修改用户的密码,然后查看/etc/passwd中此字段的变化。
最小时间间隔:表示两次修改密码之间的最小时间间隔。
最大时间间隔:表示两次修改密码之间的最大时间间隔,这个设置能增强管理员管理用户的时效性。
警告时间:表示从系统开始警告用户到密码正式失效之间的天数。
不活动时间:表示用户密码作废多少天后,系统会禁用此用户,也就是说,系统不再让此用户登录,
也不会提示用户过期,属于完全禁用。
失效时间:表示该用户账号生存期,超过这个设定时间,帐号失效,用户就无法登录系统了,
如果这个字段的值为空,帐号永久可用。
保留字段:Linux的保留字段,目前为空, 以备Linux日后发展之用。
3)/etc/group文件
组名:密码:组标识号:组内用户列表
[root@slave2 Desktop]# cat /etc/group
linux账户管理
/etc/passwd
#查看账号(如果删除账号这里不存在)
[root@master crx]# head -n 4 /etc/passwd
#more命令查看
[root@master crx]# more /etc/passwd
■用户管理命令【useradd、usermod、userdel】
(1)创建用户useradd
格式:useradd 选项 用户名
-c 描述此用户
-d 指定家目录
-s 指定shell
-u 指定用户的UID
-g 指定私有组
-G 指定附加组
-r 创建系统用户
■添加用户 (root)
useradd hadoop
添加用户后查看
[root@master crx]# useradd aaa
[root@master crx]# more /etc/passwd
也会创建一个相同用户的组
[root@master home]# more /etc/group
#默认会建立用户家目录,/home/crx 且权限为700!这是重点!
#-u 指定用户的UID
[root@master home]# useradd -u 557 crx2
[root@master home]# ls
crx crx2
[root@master home]# more /etc/passwd|grep crx
#-s 指定shell
#shell是你(用户)和Linux(或者更准确的说,是你和Linux内核)之间的接口程序。
#你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。
#查看/bin/ sh和bash不同的shell
[root@master home]# useradd -s /bin/sh crx3
[root@master home]# ls
crx crx2 crx3
[root@master home]# more /etc/passwd|grep crx
创建用户需要指定密码才生效u
su hadoop 需要输入密码(注意:没有设置密码的用户不能使用 切到root下)
■修改用户的密码
passwd 用户名
输入密码123456
■用户切换 (普通用户需要密码登录成功,root用户切换普通用户不需要密码)
普通用户—>root用户 —>密码 —>切换成功
root用户—>普通用户 —>切换成功
普通用户—>普通用户 —>密码 —>切换成功
[crx@master]:su hadoop
[hadoop@master]:su - crx
su命令和su -命令区别就是:
su只是切换了用户身份,但Shell环境仍然是当前用户的Shell;
而su -连用户和Shell环境一起切换成用户的身份了。【su pwd】
■查看都有哪些用户
[hadoop@master home]$ ls
hadoop hello crx
可以通过passwd查看有哪些用户
vim /etc/passwd
$> cat -n /etc/passwd | grep crx
id用来查询当前用户的一些信息
[root@master Desktop]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[crx@master ~]$ id
uid=500(crx) gid=501(crx) groups=501(crx) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
$> id crx
uid=500(crx) gid=500(crx) groups=500(crx)
(2)删除用户userdel
格式:userdel -r 用户名
-r 删除用户家目录
■【userdel 删除账户】
userdel 用户名 删除账户命令
userdel rose 删除rose帐号
userdel -r rose 删除账户登录目录及目录下的文件
删除账户,连同home目录一起删除
[root@master home]# ls
hadoop hello crx
[root@master home]# userdel -r hello
[root@master home]# ls
hadoop crx
[root@master crx]# more /etc/passwd
(3)修改账户usermod
格式:usermod 选项 用户名
-c 注释修改对这个用户的描述
-d 修改家目录 (需要mv 家目录到修改后的路径)
-s 修改shell 【/bin/sh、/bin/bash、/bin/csh】
-u 修改用户的UID,此值必须为唯一的ID
-g 修改私有组
-G 修改附加组
-l 修改用户帐号为新的名称
■【usermod 修改账户】
usermod -l newname oldname
[root@master home]# usermod -l crx1 crx
修改家目录
[root@master home]# usermod -d /home/crx1 crx1
修改家目录, 将原来家目录文件夹修改为新的帐户名
[root@master home]# mv crx crx1
切换用户
su - crx1