用户管理

2/13/2017来源:经验技巧人气:2221

用户管理

用户管理

groupadd,groupdel,useradd,usermod,userdel,passwd,chage

一、用户/组基本概念 Users and groups: . Every PRocess (running program) on the system runs as a particular user. . Every file is owned by a particular user. . access to files and directories are restricted by user. . The user associated with a running process determines the files and directories accessible to that process. . 系统中每一个运行的进程都需要一个特别的用户 . 每一个文件都有一个特别的拥有者 . 设置文件的访问权限需要针对于用户来设置 . 进程所关联的用户将决定它对文件的访问权限 1、产看当前登录的用户信息 [[email protected] ~]# id uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 2、查看文件的owner: [[email protected] ~]# ll /home/ drwx------. 4 alice alice 4096 2月  11 05:35 alice drwx------. 4 tom   tom   4096 2月  11 05:34 tom 3、查看运行进程的用户 [[email protected] ~]# ps aux USER        PID %CPU %MEM    VSZ   rss TTY      STAT START   TIME COMMAND root          1  0.0  0.1  19364  1260 ?        Ss   Feb10   0:02 /sbin/init root          2  0.0  0.0      0     0 ?        S    Feb10   0:00 [kthreadd] root          3  0.0  0.0      0     0 ?        S    Feb10   0:00 [migration/0] root          4  0.0  0.0      0     0 ?        S    Feb10   0:00 [ksoftirqd/0] 4、和用户组相关的一些文件 [[email protected] ~]# man 5 passwd [[email protected] ~]# man 5 shadow [[email protected] ~]# man 5 group [[email protected] ~]# man 3 crypt /etc/passwd root:x:0:0:root:/root:/bin/bash 第一段:用户名 第二段:密码占位符 第三段:uid 第四段:gid 第五段:描述 第六段:家目录 第七段:用户shell类型 /etc/shadow root:$1$MYG2NDG6$a1wtyr5GDM2esAPjug0YP0:17025:0:99999:7:: : 第一列:用户名 第二列:密码位 (有密码 无密码 !帐号锁定 !!密码锁定 *该用户永久不能登录系统) $id$salt$encrypted 加密算法$id: $1: md5 $5: SHA-256 $6: SHA-512 注释:加密算法就是用明文的密码和一个叫做salt的东西通过函数crypt()完成加密的,salt由a-z A-Z 0-9 . / 组成,用来决定使用4096种不同内建表格的哪一种 第三列:最后一次修改密码时间 # echo $(($(date --date="2017/02/12" +%s)/86400+1)) --date="2017/02/12" 表示2017年2月12号这一天 %s 表示自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数 86400 表示一天的所有的秒数 +1 表示1970年1月1号那一天 echo $(()) echo $[] linux系统中进行运算的语法结构 第四列:密码最短有效天数(即密码至少使用的天数,0无限制) -n 第五列:密码最长有效天数(99999 永久生效) -x 第六列:密码过期前警告时间(默认是7天,在这期间可使用就旧密码) -w 第七列:密码过期后的宽限时间(密码过期后预留给账户修改密码的时间) -i 第八列:帐号失效期 第九列:保留列 /etc/group root:x:0: 第一列:组名 第二列:组密码占位符 第三列:gid 第四列:[用户列表] 系统约定: RHEL6 uid: 0 特权用户 uid: 1~499 系统用户 uid: 500~60000 普通用户 二、用户/组管理 用户组: [[email protected] ~]# groupadd hr [[email protected] ~]# groupadd sale [[email protected] ~]# groupadd it [[email protected] ~]# groupadd fd [[email protected] ~]# groupadd net01 -g 2000 //添加组net01,并指定gid 2000 [[email protected] ~]# grep 'net01' /etc/group //查看/etc/group中组net01信息 [[email protected] ~]# groupdel net01 //删除组net01 用户: useradd creates users 创建用户 未指定选项 [[email protected] ~]# useradd user01 . 未指定该用户的主组 . 未指定该用户的附加组 . 未指定用户的HOME . 未指定用户的SHELL . 未指定用户的UID... [[email protected] ~]# grep 'user01' /etc/passwd /etc/shadow /etc/group /etc/passwd:user01:x:507:512::/home/user01:/bin/bash /etc/shadow:user01:!!:16589:0:99999:7::: /etc/group:user01:x:512: [[email protected] ~]# id user01 uid=507(user01) gid=512(user01) groups=512(user01) 小结: 如果创建一个用户时,未指定任何选项,系统在/home生成和用户同名的文件夹作为用户的家目录,没有指定shell的时候,默认是登陆shell,没有指定uid的时候默认分配一个uid,且分配的uid值时passwd文件中最大的一个普通用户占用的uid值的下一个数字,会自动生成和用户名相同的组作为用户的Primary Group,且一般情况下gid的值和uid的值相同,除非相同的这个gid值被其他的组占用了,他会自动的向下查找,直到找到一个没有被占用的gid作为当前主组的gid 删除用户 userdel deletes users [[email protected] ~]# userdel user10 //删除用户user10,但不删除用户家目录和mail spool [[email protected] ~]# ll -d /home/user10/ drwx------ 3 506 510 4096 05-01 21:14 /home/user10/ [[email protected] ~]# ll /var/spool/mail/user10 -rw-rw---- 1 506 mail 0 05-01 21:14 /var/spool/mail/user10 [[email protected] ~]# userdel -r user2 //删除用户user2,同时删除用户家目录和mail spool 创建用户 指定选项 [[email protected] ~]# useradd user02 -u 503 //创建用户usr02,指定uid [[email protected] ~]# useradd user03 -d /aaa //创建用户user03 指定家目录 [[email protected] ~]# useradd user05 -s /sbin/nologin //创建用户并指定shell [[email protected] ~]# useradd user07 -G hr,it,fd //创建用户,指定附加组 [[email protected] ~]# useradd user10 -u 4000 -s /sbin/nologin [[email protected] ~]# useradd user04 -M //创建用户user04,不创建家目录

创建用户时-g选项的相关注意事项

[[email protected] ~]# useradd user01 [[email protected] ~]# grep user01 /etc/passwd /etc/group /etc/shadow /etc/passwd:user01:x:500:500::/home/user01:/bin/bash /etc/group:user01:x:500: /etc/shadow:user01:!!:17003:0:99999:7::: [[email protected] ~]# id user01 uid=500(user01) gid=500(user01) 组=500(user01) [[email protected] ~]# useradd user02 -g 500 [[email protected] ~]# id user02 uid=501(user02) gid=500(user01) 组=500(user01) [[email protected] ~]# grep user02 --color /etc/passwd /etc/group /etc/passwd:user02:x:501:500::/home/user02:/bin/bash [[email protected] ~]# userdel -r user01 userdel: group user01 is the primary group of another user and is not removed. [[email protected] ~]# userdel -r user02 [[email protected] ~]# grep user01 /etc/group user01:x:500: [[email protected] ~]# groupdel user01 [[email protected] ~]# grep user01 /etc/group

创建用户时-G选项相关的注意事项

[[email protected] ~]# useradd user01 [[email protected] ~]# grep user01 /etc/passwd /etc/group /etc/passwd:user01:x:500:500::/home/user01:/bin/bash /etc/group:user01:x:500: [[email protected] ~]# useradd user02 -G user01 [[email protected] ~]# grep user02 /etc/passwd /etc/group /etc/passwd:user02:x:501:501::/home/user02:/bin/bash /etc/group:user01:x:500:user02 /etc/group:user02:x:501: [[email protected] ~]# id user02 uid=501(user02) gid=501(user02) 组=501(user02),500(user01) [[email protected] ~]# userdel -r user01 [[email protected] ~]# grep user01 /etc/passwd /etc/group /etc/group:user01:x:500:user02 [[email protected] ~]# grep user02 /etc/passwd /etc/group /etc/passwd:user02:x:501:501::/home/user02:/bin/bash /etc/group:user01:x:500:user02 /etc/group:user02:x:501: [[email protected] ~]# userdel -r user02 [[email protected] ~]# grep user02 /etc/passwd /etc/group [[email protected] ~]# [[email protected] ~]# grep user01 /etc/passwd /etc/group /etc/group:user01:x:500: [[email protected] ~]# groupdel user01 ===================================================================================================== 创建相同uid的帐号 [[email protected] ~]# useradd -o -u 0 admin 组成员管理 注意:gpasswd将用户添加到组或从组中删除,只针对已存在的用户 [[email protected] ~]# gpasswd -a user07 it //将某个用户加入到某个组 [[email protected] ~]# gpasswd -M user01,user02 it //将某些成员添加到某个组 [[email protected] ~]# gpasswd -d user07 it //删除用户usr07从it组 用户密码 [[email protected] ~]# passwd alice [[email protected] ~]$ passwd 更改用户 alice 的密码 。 为 alice 更改 STRESS 密码。 (当前)UNIX 密码: //输入的是alice刚刚设置过的密码 新的 密码: //输入的是alice新的密码,不可以是简单的数字,也不可以是基于字典的单词 passwd: 所有的身份验证令牌已经成功更新。 修改密码信息 passwd -l jim 锁定密码 passwd -u jim 解锁密码 passwd -S robin 查看密码状态 passwd -d user01 删除已命名帐号的密码(只有根用户才能进行此操作) chage -d 0 alice 强制用户在下一次登录时修改密码 chage -l alice 查看用户密码信息 修改用户的信息 usermod usermod modifies existing users ==修改UID,SHELL== [[email protected] ~]# usermod --help [[email protected] ~]# useradd user10 [[email protected] ~]# grep 'user10' /etc/passwd user10:x:509:509::/home/user10:/bin/bash [[email protected] ~]# usermod -u 2000 user10 //修改用户uid [[email protected] ~]# usermod -s /sbin/nologin user10 //修改用户shell [[email protected] ~]# usermod -G hr,it,fd user10 //直接覆盖附加组 [[email protected] ~]# usermod -a -G yw,kf user10 //在原有基础上添加附加组 帐号锁定,解锁 [[email protected] ~]# useradd user1000 [[email protected] ~]# passwd user1000 [[email protected] ~]# grep 'user1000' /etc/shadow user1000:$1$Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7::: [[email protected] ~]# usermod -L user1000 [[email protected] ~]# grep 'user1000' /etc/shadow user1000:!$1$Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7::: 登录测试,帐号锁定之后,普通用户登录不上 [[email protected] ~]# usermod -U user1000 [[email protected] ~]# grep 'user1000' /etc/shadow user1000:$1$Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7::: 登录测试 设置账号过期 [[email protected] ~]# date  2017年 02月 12日 星期日 1:22:20 CST [[email protected] ~]# usermod -e 2017-02-12 user1000 [[email protected] ~]# grep 'user1000' /etc/shadow user1000:$1$Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:17025:0:99999:7::16415: 登录测试 [[email protected] ~]$ su - user1000 PassWord: Your account has expired; please contact your system administrator su: incorrect password 修改用户名 [[email protected] ~]# usermod -l tomm tom [[email protected] ~]# id tom id: tom:无此用户 [[email protected] ~]# id tomm uid=502(tomm) gid=503(tom) 组=503(tom) 三、批量导入用户 [[email protected] tmp]# cat user.txt (用户名,uid,家目录不可以重复) abc1:x:1000:1000::/home/abc1:/bin/bash abc2:x:1001:1001::/home/abc2:/bin/bash [[email protected] tmp]# newusers < user.txt [[email protected] tmp]# cat passwd.txt abc1:123 abc2:123 [[email protected] tmp]# chpasswd < passwd.txt [[email protected] ~]# su - aaa1 -bash-4.1$ 导入用户的家目录中的.bash环境 [[email protected] ~]# su - aaa1 -bash-4.1$ ls -a . .. -bash-4.1$ cp /etc/skel/.bash* . -bash-4.1$ ls -a . .. .bash_history .bash_logout .bash_profile .bashrc -bash-4.1$ logout [[email protected] ~]# su - aaa1 [[email protected] ~]$ useradd 命令参考的文件 1. /etc/login.defs 2. /etc/default/useradd //可以使用命令 useradd -D查看 3. /etc/skel/* //用户的初始配置文件 .bashrc .bash_profile .bash_logout 环境变量配置文件 .bash_history 保存用户执行的历史命令,当用户退出时写入该文件. .bash_logout 保存当用户退出时,执行的命令 .bashrc 保存用户定义的别名和函数 .bash_profile 保存用户搜索命令的路径 .bashrc shell级别环境配置文件 .bash_profile 登录级别环境配置文件 /etc/bashrc 全局shell级别环境配置文件 /etc/profile 全局登录级别环境配置文件 加载顺序 [[email protected] robin]# su - robin /etc/profile .bash_profile .bashrc /etc/bashrc su - robin 和 su robin su - robin 登录级别切换用户 su robin shell级别切换用户 四、给普通用户提权 以下两种方式都可以将普通用户提升为root 1. Switching users with su [[email protected] ~]$ useradd u1 -bash: /usr/sbin/useradd: 权限不够 [[email protected] ~]$ su - root password: [[email protected]  ~]# 2. Running commands as root with sudo 以root身份授权普通用户 [[email protected] ~]# vim /etc/sudoers %wheel ALL=(ALL) NOPASSWD: ALL 或 [[email protected] ~]# visudo //可以验证sudoers文件是否有语法错误 [[email protected] ~]# useradd lusu -G wheel [[email protected] ~]# id lusu  uid=504(lusu ) gid=504(lusu ) 组=504(lusu ),10(wheel) [lusu @localhost ~]$ useradd gougou10 -bash: /usr/sbin/useradd: 权限不够 [lusu @localhost ~]$ sudo useradd gougou10 [lusu @localhost ~]$ id gougou10 uid=505(gougou10) gid=505(gougou10) 组=505(gougou10)