Linux篇之用户管理

一、用户帐号管理

1.添加用户

添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。刚添加的账号是被锁定的,无法使用。

使用useradd指令

[root@localhost ~]# useradd newuser -g mygroup -G minorgroup -d /mnt/userhome/ -p imapasswd

其中:
-g 指定该用户的首要组
-G 指定该用户的次要组
-d 指定该用户的Home 目录
-p 指定该用户的密码

2.删除用户

如果一个用户账号不再使用,能从系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还要删除用户的主目录。删除一个已有的用户账号使用userdel命令,格式如下:

代码:
userdel 选项 用户名
常用的选项是-r,他的作用是把用户的主目录一起删除。
例如:

[root@localhost ~]# userdel -r newuser 

此命令删除用户sam在系统文件(主要是/etc/passwd,/etc/shadow,/etc/group等)中的记录,同时删除用户的主目录。

3.更改用户帐号

修改用户账号就是根据实际情况更改用户(chgrp是针对文件而言)的有关属性,如用户号、主目录、用户组、登录Shell等。

修改已有用户的信息使用usermod命令,格式如下:
代码:
usermod 选项 用户名[只有超级管理员才有权限修改帐号名]

代码:
-l 新用户名
这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
例如:

[root@foundation79 ~]# usermod -s /bin/csh -d /home -g newgroup sam

此命令将用户sam的登录Shell修改为csh,主目录改为/home/z,用户组改为developer。

[root@foundation79 ~]# usermod sam -g group2

#此命令是改动用户sam所属的组为group2这个组

4.查看帐号信息

(1)查看uid,gid.所属组

 格式: id sam

显示sam的uid和gid ,缺省为当前用户的id信息

[root@foundation79 ~]# id sam
uid=1002(sam) gid=1003(newgroup) groups=1003(newgroup)

(2)查看所属组

         格式:  groups       

groups sam 显示用户user1所在的组,缺省为当前用户所在的组信息

[root@foundation79 ~]# groups sam
sam : newgroup

二、用户组管理

每个用户都有一个用户组,系统能对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于和他同名的用户组,这个用户组在创建用户时同时创建。用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就对/etc/group文件的更新。
用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的;

1.添加组

增加一个新的用户组使用groupadd命令。格式如下:
代码:
groupadd 选项 用户组[用户组添加后,将用户进行组赋予用chown和chgrp指令]
常用的选项有:
-g GID 指定新用户组的组标识号(GID)。
-o 一般和-g选项同时使用,表示新用户组的GID能和系统已有用户组的GID相同。

[root@foundation79 ~]# groupadd group1

此命令向系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。

[root@foundation79 ~]# groupadd -g 101 group

此命令向系统中增加了一个新组group2,同时指定新组的组标识号是101。

2.删除组

使用groupdel命令,格式如下:

                groupdel 用户组
[root@foundation79 ~]# groupdel group1

此命令从系统中删除组group1。
使用groupmod命令。其语法如下:

                       groupmod 选项 用户组

常用的选项有:
-g GID 为用户组指定新的组标识号。
-o 和-g选项同时使用,用户组的新GID能和系统已有用户组的GID相同。
-n 新用户组 将用户组的名字改为新名字

[root@foundation79 ~]# groupmod -g 102 group2

此命令将组group2的组标识号修改为102。

3.用户组文件

用户组的所有信息都存放在/etc/group文件中。
每个用户都属于某个用户组;一个组中能有多个用户,一个用户也能属于不同的组。当 一个用户同时是多个组中的成员时,在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。用户要访问属于附加组的文件时,必须首先使用newgrp命令使自己成为所要访问的组中的成员。

用户组的所有信息都存放在/etc/group文件中。此文件的格式也 类似于/etc/passwd文件,由冒号隔开若干个字段,这些字段有:
组名:口令:组标识号:组内用户列表
(1)“组名”是用户组的名称,由字母或数字构成。和/etc/passwd中的登录名相同,组名不应重复。
(2)“口令”字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或是*。
(3)“组标识号”和用户标识号类似,也是个整数,被系统内部用来标识组。
(4)“组内用户列表”是属于这个组的所有用户的列表,不同用户之间用逗号“,”分隔。这个用户组可能是用户的主组,也可能是附加组。
/etc/group文件的一个例子如下:

[root@foundation79 ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:

权力下放

在Linux系统中,管理员创建一些普通用户,分配一部分系统管理工作给他们。通过sudo,我们能把某些终极权限有针对性的下放,并且不必普通用户知道root密码,所以相对于权限无限制性的su来说,会比较安全。另外sudo 是需要授权许可的,执行命令的流程是当前用户转换到root(或其他指定转换到的用户),然后以root(或其他指定的转换到的用户)身份执行命令,执行完成后,直接退回到当前用户;而这些的前提是要通过sudo的设置文件/etc/sudoers来进行授权;
sudo 通过维护一个特权到用户名映射的数据库将特权分配给不同的用户,这些特权可由数据库中所列的一些不同的命令来识别。为了获得某一特权项,有资格的用户只需简单地在命令行输入sudo和命令名之后,按照提示再次输入口令。例如,sudo允许普通用户格式化磁盘,不过却没有赋予其他的root用户特权。

1.定位需要配置给sudo用户的命令文件

以usermod为例:

[root@foundation79 ~]# whereis usermod
usermod: /usr/sbin/usermod /usr/share/man/man8/usermod.8.gz
2.查询主机名
[root@localhost ~]# hostname
localhost
2.用visudo编辑sudoers文件

用visudo而不用vim工具的好处是在添加规则有误时,保存退出会提示给我们错误信息
sudo工具由文件/etc/sudoers进行设置,该文件包含所有能访问sudo工具的用户列表并定义了他们的特权。
例:

[root@foundation79 ~]# visudo -f /etc/sudoers

root ALL=(ALL) ALL
vincent localhost=(root) NOPASSWD: /usr/sbin/usermod

若需要改为可执行所有命令:
vincent ALL=(ALL:ALL) ALL
这个条目使得用户vincent作为终极用户访问所有应用程式。

3.在sudoer用户检测

由于vincet被下放了执行usermod的权力,所以可以更改其他用户模式。

[vincent@localhost ~]$ sudo usermod -u 666 newuser
[vincent@localhost ~]$ id newuser
uid=666(newuser) gid=1004(newuser) groups=1004(newuser)

同时,执行其他超户命令显然就不可以了。

[vincent@localhost ~]$ sudo useradd impossible
Sorry, user vincent is not allowed to execute '/sbin/useradd impossible' as root on localhost.
5.sudo其他命令

sudo命令还能加上一些参数,完成一些辅助的功能,如:

-V 显示版本编号。
-h 显示sudo命令的使用参数。
-v 因为sudo在第一次执行时或是在N分钟内没有执行(N预设为5)会询问密码。这个参数是重新做一次确认,如果超过N分钟,也会问密码。
-k 将会强迫使用者在下一次执行sudo时询问密码(不论有没有超过N分钟)。
-b 将要执行的命令放在背景执行。
-p prompt 能更改问密码的提示语,其中%u会替换为使用者的账号名称,%h会显示主机名称。
-u username/#uid 不加此参数,代表要以root的身份执行命令,而加了此参数,能以username的身份执行命令(#uid为该username的UID)。
-s 执行环境变量中的SHELL所指定的Shell,或是/etc/passwd里所指定的Shell。
-H 将环境变量中的HOME(宿主目录)指定为要变更身份的使用者的宿主目录。(如不加-u参数就是系统管理者root。)
要以系统管理者身份(或以-u更改为其他人)执行的命令。

猜你喜欢

转载自blog.csdn.net/qq_36747237/article/details/80451940