Linux 常用用户管理
正文:
作为一个使用
Linux
的必然要会基本的用户的管理,对于涉及有关用户管理方面的主要文件有:
/etc/passwd:
记录该系统的
root
,系统帐号和一般帐号
/etc/shadow
:记录该系统每个帐号所对应的密码
/etc/group
:记录该系统中的所有用户组,
/etc/gshadow
:
用户登录以及对文件的操作,都是首先查看
UID
和
GID
,然后将其对应的名称显示出来。 在用户登录系统输入帐号与密码后:
首先,判断帐号,就是要判断
/etc/passwd
是否有你的输入的帐号,如果有则要将其中的
UID
和
GID
读出来,并且该帐号的主文件夹和相应的默认
shell
也要读出来,这些基本信息都包括在
/etc/passwd
。
其次,判断密码,
/etc/shadow
1 几种文件结构
1.1 /etc/passwd文件结构
该文件有多少行,就代表此系统一共有多少个帐号。
实例:apple:x:1000:1000:apple,lab4:/home/apple:/bin/bash
一共
7
个字段,
第
1
个字段:帐号名称
第
2
个字段:帐号密码,由于密码单独放在
shadow
中,这里以
x
显示
第
3
个字段:
UID
UID
为
0
,则代表是系统管理员,所以如果想要让一个用户成为系统管理员,则就要使其
UID
为
0. UID=1
~
499
为系统帐号,
500
以上为登录帐号
第
4
个字段:
GID,
该帐号所属的用户组,它主要与
/etc/group
第
5
个字段:该帐号的基本说明
第
6
个字段:用户的主文件夹,用于用户登录后进入的默认文件夹
第
7
个字段:用户登录后所取得的默认
shell
1.2 /etc/shadow文件结构
实例:xiaolong:Qz9:15708:0:99999:7:::
一共9个字段
第1个字段:帐号名称
第2个字段:经过加密后的密码,倘若该字段前有!或者*代表密码”暂时失效“
第3个字段:最近更改密码的日期
第4个字段:在最近更改密码日期后的多少天内,不需再次更改密码
第5个字段:在最近更改密码日期后的多少天内,需要再次更改密码,即密码重新更改天数
第6个字段:在密码快要被重新设置前的多少天进行提示警告
第7个字段:密码过期后,多少天允许该帐号再次登录
第8个字段:该帐号在此日期之后,将无法使用登录系统
第9个字段:预留字段
1.3 /etc/group 文件结构
实例:root:x:0:root
一共4个字段
第1个字段:用户组名
第2个字段:用户组名的密码
第3个字段:用户组的GID
第4个字段:该用户组所支持的帐号名称。如果想要将一个帐号加入一个用户组,就要在该字段里加入该帐号名称,不过一般采用usermod -G groupname username
小注:
当一个帐号在某目录下,创建文件的时候,生成的文件的默认用户组为该帐号的有效用户组,可以用groups来查看当前该帐号的用户组,第一个为有效用户组,可以通过
newgrp groupname来更换该帐号的有效用户组,使用newgrp只是在当前shell中创建了一个子shell来运行,运行完毕后,再使用exit'返回原来的环境。在项目开发的过程中,如果想要使一个目录仅仅给几个帐号使用,协同工作的话,那么要使用
1,chgrp groupname dirname
2,chmod 2770 dirname
解释:1主要是为了将该目录的所属用户组改为你需要的用户组,但是如果在2的操作中,只是770,没有加上2的话,那么每个帐号所生的文件的用户组都是由该帐号当前的有效用户组所决定的,一般一个帐号的有效用户组为该帐号名称的本身。这里加上2,主要是运用了SGID。出现在第二字段中的x为s。SGID可以针对文件或者目录来使用,当对目录使用后,它将具有如下功能:
1)用户只有对于该目录有r与x权限才可以进入
2)用户在该目录下的有效用户组为该目录的用户组
3)用户在该目录下创建的文件,该文件的用户组与此目录的用户组相同。
注:改变文件属性和权限
chgrp [R]:改变文件所属用户组
chgrp [-R] 用户组名 文件或目录
chown:改变文件所有者:
chown [-R] 账号名 文件或目录 chown [-R] 账号名:组名 文件或目录
-R代表进行递归更改一般用于更改目录下的所有子目录或文件
chmod:改变文件的权限:
r:4,w:2,x:1;
chmod [-R] [rwx][777] 文件或目录
2 帐号管理:仅root才可以使用
对于帐号的管理主要是新增,删除,修改用户,新增,删除,修改用户组
2.1 帐号新增
useradd [-u UID] [-g 初始用户组] [-G 次要用户组][-Mm] [-c 说明栏]
[-d 主文件夹绝对路径] [-s shell] 用户帐号
-r 创建一个系统帐号
-m:强制!为一般帐号创建用户主文件夹
-M:强制!不要创建用户主文件夹,主要是针对管理员
会修改/etc/passwd,/etc/shadow,/etc/group,/etc/gshadow,/home/帐号名称
所参考文件是,/etc/default/useradd,可以通过useradd -D查看,该文件预设有默认主文件夹所在目录,默认shell等
UID/GID以及密码参数会参考/etc/login.defs,里面有关于密码字段默认的值
注:
在ubuntu下创建用户的时候,要至少加上useradd -ms /bin/bash username,
倘若没有加上-m后,创建用户会一直出现问题,说无法进入主目录处
利用useradd创建用户后,该用户的初始用户组为该帐号名称,系统并且也会以帐号名称产生一个用户组名
注意:useradd和adduser的区别
在使用adduser命令的时候,系统会添加这个用户名,并且还会自动地创建与这个用户名名字一样的用户组作为这个用户的初始用户组。此外,还会自动地在/home目录下面创建一个与用户同名的目录,接着执行"cp /etc/skel /home/用户名"的操作,实现新增用户的主目录的初始化。
passwd [-l] [-u] [-S] username
-l 将密码失效
-u 将密码解锁
-S 列出与密码对应的相关参数
当passwd后面不接帐号名称的时候,代表只是修改当前帐号的密码,root可以修改任何人的密码
chage [-ldEImMW] 帐号名
chage -l username 列出该帐号密码的详细参数
注:想要让用户第一次登录的时候强制他们修改密码后才使用资源,那么就使用
chage -d 0 uername
2.2 帐号修改
usermod [-cdegGlsuLU] username
用户和useradd差不多,一般在这里主要经常会用到
-l ,修改帐号的名称,usermod -l newname oldname
-g 修改帐号的初始化用户组
-G 修改帐号的次要用户组
-L 暂时将用户的密码冻结
2.3 帐号删除
userdel [-r] username
-r 连同用户的主文件夹一起删除
2.4 用户组新增
用户组关联的文件:/etc/group,/etc/gshadow
groupadd [-g gid] [-r] 用户组名
-g 新建用户组指定了特定的GID
-r 新建系统用户组
2.5 用户组删除
groupdel groupname
2.6用户组管理员
gpasswd ,主要来管理该用户组的成员增加或者删除
系统管理员(root)的动作
gpasswd groupname
gpasswd [-A user1,...] [-M user3,...] groupname
gpasswd [-rR] groupname
-A ,将后面的用户组交给后续的该用户组的管理员的帐号
-M,将某些帐号加入该用户组中
-r ,将groupname的密码删除
-R,让groupname的密码栏失效
用户组管理人员的动作
gpasswd [-ad] user groupname
2.7 用户角色切换
su, su [-] [username]切换用户
如果省略- username,则代表直接将普通用户切换为root用户,但是需要root密码
su -代表切换的时候将工作路径也自动切换,而su -p代表切换的时候不将工作路径切换
利用exit来离开某一个用户的环境
sudo,该命令仅仅有/etc/sudoers内的用户才能执行sudo这个命令
sudo [-u 切换用户账号],这里需要当前sudo执行者自己的密码
sudo -s切换到root账号
3 用户功能
这里主要是针对普通用户所能够使用的基本命令
3.1 finger
可以查阅很多与用户有关的信息
finger [-s] username
-s 仅仅列出用户的帐号,全名,终端号,若不加该参数,会列出该用户许多相关信息
常用法:
finger -s username:
finger username
finger :找出该系统目前登录的用户
3.2 chsh
修改用户的shell
chsh [-ls] -l:列出该系统的合法shell,-s更改shell
3.3 id
id可以查阅与某帐号有关的UID和GID
3.4 w 或者who
都是查阅 目前已经登录在系统上面的用户.
W,可以显示目前的时间,开机多久,
who 简单显示目前登录的用户以及登录时间和终端机
3.5 last 或者lastlog
lastlog会从/var/log/lastlog文件读取每个帐号最近登录时间
last 读取系统到现在所有的登录信息
3.6 write ,mesg
write 用户帐号 [用户所在终端机]
最后以crtl+d来结束
mesg主要用户信息的接受,
mesg,查看当前mesg状态
mesg n ,拒绝接受任何消息
mesg y,接受任何消息