用户与组:
一 简介
登陆Linux主机,系统识别的不是账号,而是ID,也就是一组数字号码。ID与账号的对应
关系在/etc/passwd中。
每一个用户都具有拥有者和拥有者用户组的属性。所以每个用户登录时至少要取得两个ID,
一个是用户ID(UID),一个是用户组ID(GID)。
每一个文件都会有拥有者ID和拥有用户组ID.由于每个程序都需要取得UID和GID来判断权限
问题,所以/etc/passwd的权限必须要设置为:-rw-r--r--,这样所有的人就可以看到用户密
码了,即使文件内的密码栏是加密的,也有可能有人利用***手段尝试找出密码
用户登录过程:
1 先找寻 /etc/passwd 里面是否有这个帐号,没有则跳出,有的话则将该帐号对应的
UID 与 GID 读出,该帐号的家目录与 shell 设定也一并读出;
2 再来则是核对密码表! Linux 会进入 /etc/shadow 里面找出对应的帐号与 UID,
然后核对一下你刚刚输入的密码与里头的密码是否相符? 如果一切都 OK 的话,就进入
Shell 控管的阶段
========================================================================================
二 /etc/passwd文件的构造格式
默认权限是 -rw-r--r--
cat /etc/passwd |sort -t ":" -n -k 3
如: root:x:0:0:root:/root:/bin/bash
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
1 每一行代表一个账号,很多账号是系统中必须要的,称为系统账号,如:bin,daemon,
adm,nobody等,这些是系统运行所需要的,不能随便删除
2 每一行使用:号分隔开,共有7部分
7部分详解:
(1)账号名称,与UID对应
(2)密码:一般为x,表示为了安全密码文件已经移植到/etc/shadow中了
(3)UID:具体的用户识别码。
UID范围:
0 代表系统管理员,可以修改为0来把一个账户提升为管理员,不建议有多个0账号
1--499 500以前的UID保留给系统使用。1--99系统默认账号,如named为25
500--65535 给一般用户使用
(4)GID: 与/etc/group有关,代表用户组
(5)用户信息栏说明:没什么重要用途,只是用来解释这个账号的意义而已
(6) 家目录:用户的家目录,也就是当用户登陆后第一个进入的目录,可以把此路径
进行修改以定位到别处
(7)shell:通常使用/bin/bash来执行命令 /sbin/nologin
----------------------------------------------------------------------------------------
三 系统密码文件--/etc/shadow
权限是默认是-r--------,即只有root可以读写。注意不要更改这个文件的属性
每一行使用:号分隔开,共有9部分
如:root:$1$tilydN4J$sejiQoHijURSxth0pJNz31:14469:0:99999:7:::
wp1:$1$tuCw026B$80plkA56xlirtmYKtIbOW/:14469:0:99999:7:::
shutdown:*:14469:0:99999:7:::
sshd:!!:14469:0:99999:7:::
名称:密码:密码不可更改天数:密码需要重新修改的天数:密码更改期限前的警告期限:
密码过期后的宽限时间:账号失效日期:保留
1 账号名称
2 密码:真正的密码,经过编译后的密码,如果密码栏第一个字符为*或者!,表示这个
账号并不会用来登陆,相当于是禁用状态,所以在这里可以用此方法来禁用某
个账户
3 最近更改密码的日期 以1970年1月1日作为1
4 密码不可更改的天数:代表这个账号的密码需要经过几天才可以更改,如设置为0的话
表示密码可以随时更改,如设置为20的话,那么代表设置了密码后,20天之内是无法更
改这个密码的
5 密码需要重新更改的天数:也就是说必须要在这个时间之内更改新的密码,否则这个账
号将会暂时失效,如果设置为99999的话,那么表示密码不需要重新修改长久有效
6 密码更改期限前的警告期限:当账号的的密码失效期限快到的时候,系统会根据这个字
段的设置给这个账号发出警告信息,提醒它再过n天,密码就要失效了,请提前重新设置
7 密码过期后的宽限时间:在必须变更密码的期限前,并没有变更你的密码, 那么该组密
码就称为『失效的密码』, 这里设置当密码失效后,还可以用这个密码在 n 天内进行
登入的意思。 而如果在这个天数后还是没有变更密码,帐号就失效了!无法登入!
8 账号失效日期:这个帐号在此栏规定的日期之后,将无法再使用。也是1970年以后总日数
9 保留
------------------------------------------------------------------------------------------
四 用户组文件-----/etc/group
默认权限是: -rw-r--r--
每一行使用:号分隔开,共有4部分
用户组名:用户组密码:GID:组内包含的用户名(多个用户名用冒号隔开)
2 有效用户组与初始用户组:
GID 就是初始组(initial group)了!当使用者一登入系统,立刻就拥有这个组的相关
权限的意思。不需要在 /etc/group 的第四个栏位写入该帐号
# grep 'wp1' /etc/passwd /etc/shadow- /etc/group /etc/gshadow
/etc/passwd: wp1:$1$tuCw026B$80plkA56xlirtmYKtIbOW/:500:500::/home/wp1:/bin/bash
/etc/shadow-: wp1:$1$tuCw026B$80plkA56xlirtmYKtIbOW/:14469:0:99999:7:::
/etc/group: wp1:x:500:
/etc/gshadow: wp1:!::
加入组:
一各用户要属于多个组,那么就要把这个账号加入/etc/group /etc/gshadow
两个文件中的其它组中
权限:
一个用户属于多个组,那么就具有这多个组的权限,不过这是针对已经存在的文件而言!
新建的文件或目录的拥有者和所属组,是建立这个文件或目录的用户和这个用户的有效组
相关操作:
查看当前用户有效组:groups 第一个为有效组
切换有效组: newgrp 组名 exit 退出组
----------------------------------------------------------------------------------
五 用户组密码文件-----/etc/gshadow
默认权限: -r--------
每一行使用:号分隔开,共有4部分
用户组名:用户组密码:用户组管理员账号:组内包含的用户名
用户组密码往往弃之不用,! 表示无法登陆
---------------------------------------------------------------------------------------
六 命令管理:
1. useradd 添加用户或更新新创建用户的默认信息
格式: useradd 选项 username
-s 具体shell路径 预设是 /bin/bash ,/sbin/nologin则无法登陆系统
-c 自定义描述字符串 描述新用户帐号,就是/etc/passwd第5栏的说明内容。
-d home_dir 自定义用户家目录
-g 初始用户组名称 自定义初始用户组,该组的GID将放在/etc/passwd第4栏
-G 其它组的名称 还可以支持的其他组,这个参数会修改 /etc/group 内的相关资料
-M 强制!不要建立使用者家目录
-m 强制!要建立使用者家目录!
-u user_id数字 自定义用户ID。
这个指令至少可能会更动到的地方有∶
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/home/username
grep 'wp1' /etc/passwd /etc/shadow /etc/group /etc/gshadow
创建用户相关的配置文件:
vi /etc/default/useradd
HOME=/home <==预设的家目录所在目录
SHELL=/bin/bash <==预设的 shell
SKEL=/etc/skel <==使用者家目录的内容资料参考目录,
ll -a /etc/skel 新建用户的内容都由这里复制过去
vim /etc/login.defs
MAIL_DIR /var/spool/mail <==使用者预设邮件信箱放置目录
PASS_MAX_DAYS 99999 <==/etc/shadow 内的第 5 栏
PASS_MIN_DAYS 0 <==/etc/shadow 内的第 4 栏
PASS_MIN_LEN 5 <==密码最短的字符长度,建议可以改到 6 以上
PASS_WARN_AGE 7 <==/etc/shadow 内的第 6 栏
UID_MIN 500 <==使用者最小的 UID,意即小于 500 的 UID 为系统保留
UID_MAX 60000 <==使用者能够用的最大 UID
GID_MIN 500 <==使用者自订群组的最小 GID,小于 500 为系统保留
GID_MAX 60000 <==使用者自订群组的最大 GID
CREATE_HOME yes <==在不加 -M 及 -m 时,是否主动建立使用者家目录?
useradd 建立 帐号时,至少会参考∶
/etc/default/useradd
/etc/login.defs
/etc/skel/*
------------------------------------------------------
2. userdel 删除用户帐号
语法:userdel [-r] username
-r 删除帐号时连同帐号主目录一起删除。
注意:删除用户帐号时非用户主目录下的用户文件并不会被删除,管理员必须以find
命令搜索删除这些文件。下面这条命令删除bugboy用户的所有文件:
find / -user bugboy -exec rm {} \;
---------------------------------------------------
3 passwd 修改用户相关信息
只有root才能修改别的用户的密码!
passwd 选项 用户名
passwd 用户名
passwd 自己修改自己
-l 将 username 这个帐号的密码锁住 (lock),在 /etc/shadow 内的密码栏修改
-u 将 -l 的 lock 解开!
-S 显示目前这个 username 的相关信息
-n 后面接天数 (数字) ,最短天数;亦即是 /etc/shadow 内的第四栏;
-x 后面接天数 (数字) ,最长天数;亦即是 /etc/shadow 内的第五栏;
-w 后面接天数 (数字) ,警告天数;亦即是 /etc/shadow 内的第六栏;
------------------------------------------------------
4 usermod [-cdegGlsuLU] username 修改用户相关信息
-l ∶后面接帐号名称。亦即是修改帐号名称, /etc/passwd 的第一栏!
-s ∶后面接 Shell 的实际文件,例如 /bin/bash 或 /bin/csh 等等。
-c ∶后面接帐号的说明,即 /etc/passwd 第五栏的说明栏
-L ∶暂时将使用者的密码冻结,让他无法登入。其实仅改 /etc/shadow 的密码栏。
-U ∶将 /etc/shadow 密码栏的 ! 拿掉,解冻
-d ∶后面接帐号的家目录,即修改 /etc/passwd 的第六栏;
-e ∶后面接日期,格式是 YYYY-MM-DD 也就是在 /etc/shadow 内的第八个栏位信息
-g ∶后面接 group name,修改 /etc/passwd 的第四个栏位,即是 GID 的栏位!
-G ∶后面接 group name,修改这个用户能够支援的群组,修改的是 /etc/group
-u ∶后面接 UID 数字,即 /etc/passwd 第三栏的信息
------------------------------------------------------
5 finger 查看登录系统的用户信息
finger username 查看用户相关信息
----------------------------------------------------
6 id wp2 查看用户相关 UID/GID
-----------------------------------------------------
7 groupadd [-g gid] groupname 创建组
-g ∶后面接某个特定的 GID ,用来直接给予某个 GID
组的相关信息
/etc/group
/etc/gshadow
groupadd 新增的帐号,默认都不能使用密码的方式登入
-------------------------------------------------------
8 groupmod 修改组相关信息
groupmod [-g gid] [-n group_name] 组名称
-n ∶修改已有的组名称
-g ∶修改已有的 GID 数字;
groupmod -g 103 -n wpgroupxin wpgroup
grep wpgroupxin /etc/group /etc/gshadow
------------------------------------------------------
9 groupdel groupname 删除组
-----------------------------------------------------
10 gpasswd 组管理
系统管理员(root)做的动作∶
gpasswd groupname
gpasswd [-A user1,...] [-M user3,user4...] groupname
gpasswd [-rR] groupname
参数∶
∶若没有任何参数时,表示给予 groupname 一个密码(/etc/gshadow)
注意:最好不要设置组密码
-A ∶自定义一个组的管理员
-M ∶将某些帐号加入这个一个指定组当中!
-r ∶将 groupname 的密码移除
-R ∶让 groupname 的密码栏失效,所以 newgrp 就不能使用了
组管理员(Group administrator)做的动作∶
$ gpasswd [-ad] user groupname
参数∶
-a ∶将某位用户加入到 groupname 这个组当中
-d ∶将某位用户移除出 groupname 这个组当中。
groupadd testgroup
gpasswd testgroup
gpasswd -A wp1 -M wp1,wp2,wp3 testgroup
grep testgroup /etc/group /etc/gshadow
-------------------------------------------------
11 su 切换用户
su [-l] [username]
参数∶
- ∶如果执行 su - 时,表示该用户想要变换身份成为 root ,且使用 root 的
环境设定参数档,如 /root/.bash_profile 等等。
-l ∶后面可以接用户,如 su -l wp1 ,所有相关环境设定档跟着改变为wp1的。
-c + "仅执行一次的完整命令"
[wp1@centos1 wp]$ cat /etc/shadow
cat: /etc/shadow: Permission denied
[wp1@centos1 wp]$ su - -c "cat /etc/shadow"
Password:
root:$1$B5apNmoX$LE2lVJjDeLfqq55lHUtC2/:14501:0:99999:7:::
---------------------------------------------------
12 who am i 查看当前用户是谁
---------------------------------------------------
13 who 查看当前登录的用户
---------------------------------------------------
14 last 最近一个月内成功登录系统的用户的记录
lastb 查看登录失败的用户的记录
----------------------------------------------------
15 lastlog 每个用户最近登录的时间 查看的是/var/log/lastlog
----------------------------------------------------
16 w 查看当前登录用户及其进行的操作
[root@centos1 ~]# w
10:33:07 up 5 min, 2 users, load average: 0.05, 0.26, 0.15
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/1 192.168.0.254 10:29 3:31 0.09s 0.09s -bash
root pts/2 192.168.0.254 10:29 0.00s 0.13s 0.02s w
JCPU :显示与终端相关的所有进程所消耗的时间
PCPU :表示cpu执行程序所消耗的时间
w root 只显示指定用户的信息
-------------------------------------------------------
17 [wp2@wp4 ~]# write username 给指定用户发送消息
------------------------------------------------------
18 [wp1@wp4 ~]$ mesg n/y 禁止接收别人给自己发的消息
-----------------------------------------------------
19 wall "字符串" 对系统上所有登录用户发送消息
------------------------------------------------------
20 mail 用户系统内置邮箱
/var/mail/用户名
mail 用户名 -s "邮件标题"
mail -s "邮件标题" 接收邮件的用户名 < /mail.txt
mail 查看当前用户邮件
h 将信件的标题列出来。如要查阅 40 封信件左右处的所有信件标头,可以输入 h 40
d 删除 删除第10封信,d10,删除 20-40 封信,d20-40,不过,这个动作要生效的话,
必须要配合 q 这个指令才行
s 将信件储存成为文件案。举例来说,将第 5 封信件的内容存成 ~/mail.file 的话,
可以∶ s 5 ~/mail.file
x 或者输入 exit 都可以。不作任何动作退出,所有刚才执行的动作都失效
q q 则会进行两项动作∶ 1. 将刚刚删除的信件移出 mailbox 之外; 2. 将刚刚有
阅读过的信件存入 ~/mbox ,且移出 mailbox 之外。
--------------------------------------------------
21 pwck 检查密码文件
pwck /etc/passwd
pwck /etc/shadow
----------------------------------------------
22 vlock ---锁定命令行终端
rpm -ivh vlock-1.3-23.i386.rpm
vlock 锁定当前终端
vlock -a 锁定所有终端
----------------------------------------------
23 chage 查看账号密码有效期
chage -l wp1
-----------------------------------------------
24 ac 统计用户总的登录系统的时间
ac -d 按每一天列出统计结果
ac -p 按每一个用户列出统计结果
-----------------------------------------------
25 touch /etc/nologin
只要创建了这个空文件,系统中普通用户就无法登录系统了。一直要等到这个文件被删除才能
登录系统
对root没有效果!
vi /etc/nologin
ni buneng denglu xitong ! 文件的内容就是普通用户登录时显示的内容
转载于:https://blog.51cto.com/zhangshijie/596858