学习linux—— 帐号的管理
原创
©著作权归作者所有:来自51CTO博客作者pdc2011的原创作品,请联系作者获取转载授权,否则将追究法律责任
(一)帐号管理的四个关键文件
/etc/passwd //用户信息存放点
/etc/shadow //用户信息存放点,加密
/etc/group //组信息存放点
/etc/gshadow //组信息存放点,加密
1、 /etc/passwd文件详解
每一行代表一个用户帐号。
每列用“:”号分隔,意思分别为:
用户名:密码:用户ID:组ID:用户备注信息:用户宿主目录(home文件)路径:用户指定的shell程序
密码列:X,表示加密,密码记录在/etc/shadow中。
用户ID:0号ID为系统管理ID,1~499为保留给系统的ID,500~65535为分配给用户的ID.
例:
root:x:0:0:root:/root:/bin/bash //用户名为root,密码加密,用户ID和组ID均为0表示系统管理ID,备注为root,home目录为 /root ,使用/bin/bash作为shell程序。
khp:x:500:500:khp:/home/khp:/bin/bash
2、 /etc/shadow 详解
每一行代表一个用户帐号。
每列用“:”号分隔,意思分别为:
用户名:加密口令:上次口令变更时间(从1970.1.1日算起天数):在多长时间内不能更改口令(天数):多长时间后必须更改口令(天数):口令到期前多久发送改密码的警告信息:口令到期后多久失效:帐号失效时间:保留
例:
khp:$1$CUcFhZc0$mi2fq5I5FhFKbDWcwnABO/:14587:0:99999:7:::
用户名:khp
密码: $1$CUcFhZc0$mi2fq5I5FhFKbDWcwnABO/
上次更改口令时的时间:从1970年1月1日算起后的14587天,即2009年。
在多长时间内不能更改口令:0,即随时可以更改口令
多长时间后必须更改口令:999,即无限期,可以一直不更改
口令到期前多久发送改密码的警告信息:7,即口令到期的前7天发送警告信息
口令到期多久后失效:此处为空,即不设定。假如我设定的口令是2009年12月31日失效,此处值设为2,则到2010年1月2日后密码就失效。
帐号失效时间:此处为空,假如我设定为2010年1月30日帐号失效,不管你有没有改密码,到2010年1月30日这个帐号都失效。
保留:留作以后新增其他用途。
因/etc/shadow是只读文件,编辑后保存需要用 :wq! 保存。
3、 /etc/group详解
每一行代表一个组ID,每列的意思分别为:
用户组名称:组密码:组ID:组用户名(即组包含哪些用户)
例:
khp:x:500:
4、 /etc/gshadow 详解
用户组名称:组密码:用户组管理员帐号:组用户名(该组的所属帐号,即包含哪些用户)
组密码:当为空或为“!"时,表示为法登录
组管理帐号:有多个管理帐号,用“,”分开。
组用户名:可以有多个组用户,用“,”分开。
例:bin:::root,bin,daemon //组名为bin,密码为空,用户组管理员帐号为空,组用户为root,bin,daemon
(二)初始化组和有效用户组
初始化组:每个用户新建立时就拥有了一个初始化组。/etc/passwd里面的第四列的组名就是各用户的初始化组。
例:khp:x:500:500:khp:/home/khp:/bin/bash //khp用户的初始化组即为khp
有效用户组:一个用户可以加入到多个组中。
在/etc/group中,找到想加入的组名,然后在最后一列添加用户,即可把这一用户加入这一组。
例:vi /etc/group 找到 pla:x:501:khp 即把khp用户加入到了pla组中。
这样khp就属于了khp 和pla两个组了。当khp创建一个新的文件时,这个文件属于哪个组呢?应该属于有效用户组。
groups命令查看有效用户组,排在第一个的组,就是有效用户组。
例:groups
khp pla //khp属于有效用户组
newgroup 组名 //更改有效用户组
newgroup pla 就可以把有效用户组名改为pla
(三) 新增与删除用户
新增与删除用户有两种方法,一种为用命令,一种是手工修改方法
1、手工修改方法
新增用用户:
(1)用vi 编辑器打开 /etc/passwd
(2)增加一行,复制一行当前用户信息,然后更改用户名和用户ID,以及组ID即可。
(3)打开/etc/shadow 用同样的方法增加加一行,更改用户名。也可以在设置完/etc/passwd之后直接用 pwconv命令转换即可。
(4)打开 /etc/group 和 /etc/gshadow,增加一行。最好的方法就是复制上面的一行,然后更改第一列的用户名和第三列的组ID.
也可以在设置完/etc/group之后直接用 grpconv命令,生成相应用户组在/etc/gshadow中的项目。
(5)设置新用户的主目录。用mkdir命令在/home目录下建一个与用户名相同的文件夹
(6)用password 用户名 命令指定新用户的密码
(7)复制基本初始化文件到新用户目录下。初始化文件一般都在/etc/skel下。
例:cp /etc/skel/.* /home/khp 即把/etc/skel下的所有文件复制到新用户目录/home/khp下面
(8)用chown命令和chgrp命令让新用户拥有访问新建主目录的权限,指定所有权
注:/etc/skel文件,即用户的基本初始化文件。如windows中的docements and setting 中的all users文件夹一样,新建一个用户,会把/etc/skel中的一些公用方件复制到新用户目录中,可以把一个新用户的公司策略放于此资料夹中,新建 用户时,新用户目录中会自动包含这引起公共文件。
删除新用户:
打开/etc/passwd /etc/shadow /etc/group /etc/gshadow 把相关的用户和组信息删除,然后把相应的用户主目录删除即可。
2、命令方法
(1) 新增用户
useradd [-u UID] [-g init_group] [-G other_group] [-c 说明内容] [-mM] [-d name] [-r] [-s shell] username
-u:后面接UID,是一组数字。给这个帐号指定一个UID
-g:后面接初始用户组
-G:后面接支持的用户组,即有效用户组
-c:后面接说明内容。/etc/passwd的第五列。
-m:要建立用户目录
-M:不要建立用户目录
-r:建立一个系统帐号。
-s:指定一个shell。默认是/bin/bash
如果不跟参数直接用 useradd username命令:
默认会建一个与用户名相同的初始用户组。但如SUSE版本的就不会建立新用户组,而以/etc/default/useradd内的GROUP设置值作为用户的初始用户组。
其他相关设置参照文件/etc/default/useradd文件
用户UID/GID的设置,则是参照/etc/login.defs文件。生成新用户时的基本参数来自/etc/login.defs配置文件中,包含了:口令寿命,用户ID,组ID。生成主目录的设置等。可以通过其他配置文件调整这一默认配置参数。
例:useradd khp
passwd khp //新增用户并设定密码
(2) 删除用户 userdel username 即可删除用户名
(3)修改用户 usermod username 可以修改用户设置。 参数和 useradd中的差不多。
(4)查看用户参数 finger username 可查看用户的参数。因为这个参数比较危险,一般不装
(5) 查看ID号 id username 查看ID号。
(6)groupadd [-g gid][-r] groupname //增加组名
-g :后面接某个特定的GID,用来直接给予某个GID
-r:建立系统用户组。
(7) groupdel groupname //删除组名
(8) groupmod [-g gid][-n groupname] //修改组参数
(9) gpasswd groupname //给组设密码,还有以下功能:
gpasswd [-ad] user groupname
-a:将某用户加入到groupname用户组中
-d:将某用户从groupname用户组中删除
gpasswd [-AMRr] groupname
-A: 设定组管理员帐号,该用户管理该组
-M:将某些帐号加入这个用户组中
-r:将groupname的密码删除
-R:让groupname的密码栏失效,所以newgrp命令就不能用了。
gpasswd -A khp -M khp,pla elitekgroup //把khp pla两个帐号加入elitekgroup组中,且让khp用户管理这个组。
(四)阴影口令组
管理linux用户与组的所有命令。主要有/etc/passwd与/etc/group相结合。使口令更安全。
1、pwck //检查/etc/passwd帐号设置文件内容的信息
2、转换用户口令
pwconv //转换现有/etc/passwd文件中的所有用户口令到加密文件/etc/shadow中。让密码变成“X”。即变成加密口令。
pwunconv //把/etc/shadow中的密码重新写回到/etc/passwd中,并且把/etc/shadow文件删除。最好不要用这个命令。
3、 转换组口令
grpconv:转换现有 /etc/group文件相关信息到 /etc/gshadow
grpunconv:把/etc/shadow中的信息转换到 /etc/group中,并删除 /etc/gshadow文件,最好不要用。
(五) 切换用户
1、su命令
su [-lcm] username
su:切换成其他用户身份,但变量环境仍是现在用户名的。如果后面不加用户名,则是变换成root身份。
su-:变化成其他用户身份,同时变换到要变换用户名的环境变量。如果后面不加用户名,就是变换成root身份。
su -l :与 su -用法一样,变换用户身份的同时,变换变量环境。
su -m :与 su 用法一样,变换用户身份,但不变换变量环境。
su -c :即变换用户身份后,在新用户身份下执行一次命令。所以后面要接命令,一起使用。
例: su //会提示输入root密码,即变换成root身份,但不更改变量环境。
su - // 会提示输入root密码,输入root密码后变换成root身份,同时更改成root身份的变量环境。
su - khp //会提示输入密码,输入khp用户的密码后变换成khp的身份,同时更改成khp身份的变量环境。
su - khp -c ls //变换到khp 用户身份,并且更改到khp环境,然后执行ls命令,列出khp目录下面的文件。
2、sudo命令
执行su命令时需要知道变换用户身份的密码,输入密码正确才可以变换身份。这样做会不安全。
sudo 在变换用户身份时,只输入自已本身的密码,而不是准备变换用户身份的密码。如:我在khp用户下,准备变换到root用户身份,则输入khp自已的密码即可,而不是输入root的密码。
但使用sudo命令是有条件的,并不是所有用户都可以执行这个命令。用户执行sudo命令时,会查找/etc/sudoer文件,判断该用户是否有执行sudo命令的权限,有权限时输入自已密码就可以变换身份了。
root用户执行sudo命令时不需要输入密码。默认只有root用户可以执行sudo命令。
此处的关键是/etc/sudoer文件。用visudo 命令编这个文件。
(1)/etc/sudoer文件
/etc/sudoer文件的授权:
用户帐号 登录的主机 = (可变换的用户或组)[NOPASSWD:] 可以执行的命令
例:khp ALL=(ALL) ALL //即khp用户可以变换成任何身份,可以执行任何令。 最好不要这样设定,很不安全。
khp ALL= ALL //如果忘了输入变换的身份,则表示只能变换成root身份。
%khp ALL = (ALL) NOPASSWD: ALL //即khp用户组的所有用户在变换身份时都不需要输入密码,就加上NOPASSWD:参数。用户组则在前面加%.
/etc/sudoer文件的别名规则:
上例中全用ALL表示的有的登录主机,所有的可变换身份,所有的可执行命令,这样很不安全,但如果给一批用户授权相同的命令,且命令很多时,就会输入很久。
可以先用别名定义好,然后在规则中套用别名即可以,就不用重复工作。
别名类型有:
Host_Alias:定义主机别名
User_Alias:定义用户别名
Runas_Alias:定义变换身份别名
Cmnd_Alias:定义命令别名
例:我想授权khp用户可切换成root,pla身份,且可以执行命令 shutdown,rm,ls命令。
Runas_Alias ad = root,pla
Cmnd_Alias down = /sbin/shutdown,/sbin/rm,/sbin/ls //命令别名必须用绝对路径。取消某个命令的执行时,在前面加!。
khp ALL = (ad) down //授权khp用户可切换成root,pla身份,且可以执行命令 shutdown,rm,ls命令
sudo -l命令可以查看用户可以执行哪些sudo命令。
上一篇:学习linux—— 网络基础设置
下一篇:学习linux—— 软件的安装
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【Linux】学习Linux,需要借助具象化的思维
【Linux】指令与图形化界面详细介绍命令行与图形化界面的相关内容……
图形化界面 命令行 Windows Linux -
linux高级管理
web服务器
centos 配置文件 Apache -
linux系统中的帐号和权限管理
linux怎样创建和管理用户以及修改用户密码;文件和权限的管理,以及高级权限位、umask码和acl规则
linux 权限 用户 修改密码 acl规则 -
linux帐号管理常用命令
linux账号管理
linux账号管理 -
Linux--用户帐号与组管理
Linux用户帐号与组管理
Linux 管理 用户 帐号 组管理