码迷,mamicode.com
首页 > 系统相关 > 详细

Linux用户管理

时间:2018-08-13 22:06:47      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:根据   邮箱   用户名   var   目录   改密码   add   负数   1.2   

用户相关命令

1.1 useradd 命令创建用户
语法格式:useradd [options] [login]
useradd [选项] [用户名]
选项:
-n 不创建以用户名为名的组
-c 创建用户时,添加个人信息
-u 用户ID值,这个值必须是唯一的
-s 用户登录后使用的shell
-g 指定用户对应的组,对应的组必须在系统中存在
范例1:useradd命令不使用任何选项
[root@localhost ~]# useradd agan
[root@localhost ~]# grep -w "agan" /etc/passwd
agan:x:504:504::/home/agan:/bin/bash
[root@localhost ~]# grep -w "agan" /etc/group
agan:x:504:
注:创建用户的同时,并创建了一个以自己为名的组
范例2:-n 选项
[root@localhost ~]# useradd -n agan1
[root@localhost ~]# grep -w "agan1" /etc/passwd
agan1:x:505:100::/home/agan1:/bin/bash
[root@localhost ~]# grep -w "agan1" /etc/group
[root@localhost ~]#
注:创建用户时,使用-n参数,不创建以自己为名的组
范例3:-c 选项
[root@localhost ~]# useradd -c oldboy,15810516499,河北 agan2
[root@localhost ~]# grep -w "agan2" /etc/passwd
agan2:x:506:506:oldboy,15810516499,河北:/home/agan2:/bin/bash
注:创建用户的同时,添加agan2用户的个人信息,个人信息使用逗号隔开。
范例4:-u 选项
[root@localhost ~]# useradd -u 888 agan3
[root@localhost ~]# grep -w "agan3" /etc/passwd
agan3:x:888:888::/home/agan3:/bin/bash
注:创建用户的同时,修改用户默认的UID
范例5: -s选项
[root@localhost ~]# useradd -s /sbinlogin tian
[root@localhost ~]# grep -w "tian" /etc/passwd
tian:x:8892:8892::/home/tian:/sbinlogin
注:-s指定用户登录后的shell,/sbinlogin 表示禁止登录,此例在企业中部署nginx、mysql等服务时经常用到。
范例6:-g选项
[root@localhost ~]# groupadd edu
[root@localhost ~]# useradd -g edu agan6
[root@localhost ~]# grep -w "agan6" /etc/passwd
agan6:x:8893:8893::/home/agan6:/bin/bash
[root@localhost ~]# id agan6
uid=8893(agan6) gid=8893(edu) groups=8893(edu)
注:让agan6用户,隶属于到edu组,这里通过id 命令来查看用户,所属于的组。因为使用-g 组信息记录在/etc/passwd中。事实上系统确认一个用户的所属组的时候是根据/etc/passwd的组ID。 因此,"useradd -g"仅仅修改/etc/passwd,而不会修改/etc/group。 加"-G"参数会把修改记录在/etc/group
1.2 usermod 修改系统已经存在的用户信息

语法:usermod   [options]    [login]
     usermod    [选项]       [用户名]
选项:
-c   修改用户的个人信息,同useradd 的-c功能  
-g   修改用户对应的用户组,同  useradd的-d功能
-s   修改用户登录后使用的shell名称,同useradd的-s功能
-u   修改用户的uid ,同useradd 的-u功能
-l    修改用户的名称

 范例1:-l选项,把agan6的用户名改为u1
[root@localhost ~]# usermod   -l   u1   agan6
                                                     新名   已存在的名

1.3 userdel 删除用户
语法:userdel [options] [login]
userdel [选项] [用户名]

  选项:
  -f     强制删除用户
  -r     删除用户的同时,删除与用户相关的所有文件(包含邮箱信息)

 范例1:不加参数删除用户
  userdel 用户名

只删除用户的个人信息,不能删除用户的邮箱信息,在/home下还可以看到用户名
注: 如果忘记添加-r参数时,想彻底删除用户 ,就要进入到邮箱所存在的路径,删除邮箱信息
[root@localhost home]# cd /var/spool/mail/
[root@localhost mail]# ls
agan11 agan8 tian u11 u3
agan6 agan9 u1 u2 u6

范例2:加-r参数 删除用户
  userdel -r 用户名 

删除用户(删除用户的个人信息和邮箱信息,也就是删除所有信息)
备注:当使用-r 也无法彻底清空用户内容时,把这两个配置文件中与要删除的用户相关的信息,注释或删除掉。
/etc/passwd /etc/group

1.4 修改用户密码命令 passwd
语法:passwd [option] [username]
passwd [选项] [用户名]
选项:
--stdin //从标准输入读取密码字符串

 范例1:修改当前用户的密码

[root@localhost ~]# passwd
Changing password for user root.
New password:
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.
? 注:普通用户使用passwd 修改密码时,必须满足密码复杂性要求;root 修改密码不需要满足密码复杂性。

范例2:修改普通用户的密码

[root@localhost ~]# useradd u1
[root@localhost ~]# passwd u1
Changing password for user u1.
New password:
BAD PASSWORD: it is WAY too short
BAD PASSWORD: is too simple
Retype new password:
passwd: all authentication tokens updated successfully.

范例3:一条命令非人工交互设置密码(企业使用技巧)
[root@localhost ~]# echo "123456" | passwd --stdin u1
Changing password for user u1.
passwd: all authentication tokens updated successfully.
? 注:这个命令在工作中批量设置密码时很有用

范例4:批量更新用户的密码
[root@localhost gj]# chpasswd //命令输入完,直接回车
root:123456 //格式 用户名:密码,用户必须存在才可以,一行一个用户
u1:123456
u2:654321 //输入完成后,直接ctrl+D 结束输入
? 注:此命令有一个bagel,当一行输入错误后,不能返回修改。
当使用useradd 命令批量创建用户后,可以使用chpasswd 命令批量设置密码或批量修改密码。

范例5:把用户和密码字符串放到文件里执行批量改密码
[root@localhost gj]# cat passwd.txt
u1:123
u2:321
u3:123
[root@localhost gj]# chpasswd < passwd.txt
1.5 su sudo
su的作用是变更为其它使用者的身份,超级用户除外,需要键入该使用者的密码。
su 切换用户却不切换工作环境 , su - 同时切换用户与工作环境

注:
su的缺点造就了sudo的诞生
由于用户通过 su root 命令直接获取root权限,从而造成用户的权限太大,也就可能给系统造成危险。
为了既保证系统的安全又可以执行相应命令,sudo 也就以此诞生。

1.6 sudo作用:
通过配置文件来限制用户的权限 ,可以让普通用户在执行指定的命令或程序时,拥有超级用户的权限。
sudo的工作过程如下:
1,当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限
2,确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认
3,若密码输入成功,则开始执行sudo后续的命令
4,root执行sudo时不需要输入密码(因为sudoers文件中有配置root ALL=(ALL) ALL这样一条规则)

范例1:给普通用户u1提权,让普通用户可以查看root用户的家目录;普通用户可以使用useradd命令,创建新用户
范例分析步骤:
1) useradd u1
2) visudo=vi打开/etc/sudoers文件 或 vim /etc/sudoers
? 注:visudo会检查内部语法,避免用户输入错误信息,所以我们一般使用visudo,编辑此文件要用root权限
3) 编辑文件的第98行,编辑完成后,wq! 强制保存退出
root ALL=(ALL) ALL
u1 ALL=(ALL) /bin/ls,/usr/sbin/useradd

4)使用u1 用户登录测试
sudo useradd u11 //可成功创建用户,证明提权成功
sudo ls /root //可查看root的家,证明提权成功
5) sudo -l //-l 参数是列出当前用户可执行的命令,但只有在sudoers文件里的用户才能使用该选项。
第2章 用户查询命令
2.1 w命令
w命令用于显示目前登入系统的用户信息。
执行这项指令可得知目前登入系统的用户有哪些人,以及他们正在执行的程序。

范例1:
单独执行 w 指令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

2.2 id命令 查看用户的UID 、GID
[root@bogon /]# id user6
uid=8897(user6) gid=8899(z11) groups=8899(z11)
[root@bogon /]# id -g user6
8899
[root@bogon /]# id -G user6
8899
[root@bogon /]# id -u user6
8897
2.3 last命令用了显示用户登录情况,以下是直接显示固定行数的记录:
2.4 lastlog 命令 显示linux中所有用户最近一次远程登录的信息
第3章 组的相关命令
3.1 添加用户组命令 groupadd

  语法:groupadd  [options]   [group]
            groupadd   [选项]      [用户组]
  选项:
  -g   gid         指定用户组的GID,GID唯一不能为负数,如果不指定GID从500开始
  -f                  新增一个组,强制覆盖一个已存在的组,GID、组成员不会改变。

 范例1:添加组z11,查看添加后的组信息
[root@bogon ~]# groupadd z11
[root@bogon ~]# grep "z11" /etc/group
z11:x:8895:
[root@bogon ~]# tail -1 /etc/group
z11:x:8895:

3.2 gpasswd户加入到组中的命令
将已存在的用户加入到组中的命令
语法:gpasswd [options] [user] [group]
gpasswd [选项] [用户名] [组名]
选项:
-a:添加一个用户到组,可以追加到组
-M:添加多个用户到组,覆盖之前的组成员
-d:从组删除用户

范例1:把user1用户添加到z1,并且查看是否添加成功
[root@bogon gj]# groupadd z1
[root@bogon gj]# useradd user1
[root@bogon gj]# gpasswd -a user1 z1
Adding user user1 to group z1
[root@bogon gj]# grep "z1" /etc/group
z1:x:8896:user1
注:-a选项只能添加一个用户,需要同时添加多用户时,使用-M参数
范例2:同时添加user2、user3用户到z1组(先创建user2、user3用户)
[root@bogon gj]# gpasswd -M user2,user3 z1
[root@bogon gj]# grep "z1" /etc/group
z1:x:8896:user2,user3
注:使用-M参数添加多个用户时,多用户之间使用逗号分割;添加批量用户时,先使用-a参数,在使用-M参数,就会覆盖之前添加过的用户;所以添加多用户时,先使用-M 参数。
范例3:将user2用户从组中删除
[root@bogon gj]# gpasswd -d user2 z1
Removing user user2 from group z1
[root@bogon gj]# grep "z1" /etc/group
z1:x:8896:user3

3.3 groupmod修改组信息的命令
语法:groupmod [options] [group]
groupmod [选项] [组名]

           groupmod  -n  新名  旧名
           groupmod  -g  8888  dir
 选项:
 -n        修改组名
 -g       修改GID
 范例1:修改z1组的GID

[root@bogon gj]# grep "z1" /etc/group
z1:x:8896:user3
[root@bogon gj]# groupmod -g 8888 z1
[root@bogon gj]# grep "z1" /etc/group
z1:x:8888:user3

范例2:修改z1组的组名为newz1
[root@bogon gj]# grep "z1" /etc/group
z1:x:8888:user3
[root@bogon gj]# groupmod -n z1new z1
[root@bogon gj]# grep "z1" /etc/group
z1new:x:8888:user3
3.4 groupdel删除组的命令

 语法:groupdel   [group]
           groupdel   [组名]

范例1:
groupdel 组名
删除组,删除组后,用户名依然存在
附加命令: 查看用户属于到哪些组,使用命令:groups
语法:groups [user]
groups 用户名
范例1:
[root@bogon gj]# groups user1
user1 : user1 z2
第4章 批量创建用户:脚本
1、创建一个文件,此文件的扩展名必须为*.sh
vim aa.sh
#!/bin/bash
for ((i=1;i<=10;i++));
{
useradd gj$i

}
echo "批量用户成功创建完成啦!!!"

Linux用户管理

标签:根据   邮箱   用户名   var   目录   改密码   add   负数   1.2   

原文地址:http://blog.51cto.com/13855748/2159447

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!