用户管理
2024-06-28 16:04:54
供稿:网友
用户管理
用户管理
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、产看当前登录的用户信息[root@Server ~]# iduid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c10232、查看文件的owner:[root@Server ~]# ll /home/drwx------. 4 alice alice 4096 2月 11 05:35 alicedrwx------. 4 tom tom 4096 2月 11 05:34 tom3、查看运行进程的用户[root@Server ~]# ps auxUSER PID %CPU %MEM VSZ rss TTY STAT START TIME COMMANDroot 1 0.0 0.1 19364 1260 ? Ss Feb10 0:02 /sbin/initroot 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、和用户组相关的一些文件[root@localhost ~]# man 5 passwd[root@localhost ~]# man 5 shadow[root@localhost ~]# man 5 group[root@localhost ~]# 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第四列:[用户列表]系统约定: RHEL6uid: 0 特权用户uid: 1~499 系统用户uid: 500~60000 普通用户二、用户/组管理用户组:[root@localhost ~]# groupadd hr[root@localhost ~]# groupadd sale[root@localhost ~]# groupadd it[root@localhost ~]# groupadd fd[root@localhost ~]# groupadd net01 -g 2000 //添加组net01,并指定gid 2000[root@localhost ~]# grep 'net01' /etc/group //查看/etc/group中组net01信息[root@localhost ~]# groupdel net01 //删除组net01用户:useradd creates users创建用户 未指定选项[root@localhost ~]# useradd user01 . 未指定该用户的主组. 未指定该用户的附加组. 未指定用户的HOME. 未指定用户的SHELL. 未指定用户的UID...[root@localhost ~]# 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:[root@localhost ~]# 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[root@localhost ~]# userdel user10 //删除用户user10,但不删除用户家目录和mail spool[root@localhost ~]# ll -d /home/user10/drwx------ 3 506 510 4096 05-01 21:14 /home/user10/[root@localhost ~]# ll /var/spool/mail/user10 -rw-rw---- 1 506 mail 0 05-01 21:14 /var/spool/mail/user10[root@localhost ~]# userdel -r user2 //删除用户user2,同时删除用户家目录和mail spool创建用户 指定选项[root@localhost ~]# useradd user02 -u 503 //创建用户usr02,指定uid[root@localhost ~]# useradd user03 -d /aaa //创建用户user03 指定家目录[root@localhost ~]# useradd user05 -s /sbin/nologin //创建用户并指定shell[root@localhost ~]# useradd user07 -G hr,it,fd //创建用户,指定附加组[root@localhost ~]# useradd user10 -u 4000 -s /sbin/nologin[root@localhost ~]# useradd user04 -M //创建用户user04,不创建家目录创建用户时-g选项的相关注意事项
[root@localhost ~]# useradd user01[root@localhost ~]# 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:::[root@localhost ~]# id user01uid=500(user01) gid=500(user01) 组=500(user01)[root@localhost ~]# useradd user02 -g 500[root@localhost ~]# id user02uid=501(user02) gid=500(user01) 组=500(user01)[root@localhost ~]# grep user02 --color /etc/passwd /etc/group/etc/passwd:user02:x:501:500::/home/user02:/bin/bash[root@localhost ~]# userdel -r user01userdel: group user01 is the primary group of another user and is not removed.[root@localhost ~]# userdel -r user02[root@localhost ~]# grep user01 /etc/groupuser01:x:500:[root@localhost ~]# groupdel user01[root@localhost ~]# grep user01 /etc/group创建用户时-G选项相关的注意事项
[root@localhost ~]# useradd user01[root@localhost ~]# grep user01 /etc/passwd /etc/group/etc/passwd:user01:x:500:500::/home/user01:/bin/bash/etc/group:user01:x:500:[root@localhost ~]# useradd user02 -G user01[root@localhost ~]# 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:[root@localhost ~]# id user02uid=501(user02) gid=501(user02) 组=501(user02),500(user01)[root@localhost ~]# userdel -r user01[root@localhost ~]# grep user01 /etc/passwd /etc/group/etc/group:user01:x:500:user02[root@localhost ~]# 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:[root@localhost ~]# userdel -r user02[root@localhost ~]# grep user02 /etc/passwd /etc/group[root@localhost ~]# [root@localhost ~]# grep user01 /etc/passwd /etc/group/etc/group:user01:x:500:[root@localhost ~]# groupdel user01=====================================================================================================创建相同uid的帐号[root@localhost ~]# useradd -o -u 0 admin组成员管理注意:gpasswd将用户添加到组或从组中删除,只针对已存在的用户[root@localhost ~]# gpasswd -a user07 it //将某个用户加入到某个组[root@localhost ~]# gpasswd -M user01,user02 it //将某些成员添加到某个组[root@localhost ~]# gpasswd -d user07 it //删除用户usr07从it组用户密码[root@localhost ~]# passwd alice[alice@localhost ~]$ 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 查看用户密码信息修改用户的信息 usermodusermod modifies existing users==修改UID,SHELL==[root@localhost ~]# usermod --help[root@localhost ~]# useradd user10[root@localhost ~]# grep 'user10' /etc/passwduser10:x:509:509::/home/user10:/bin/bash[root@localhost ~]# usermod -u 2000 user10 //修改用户uid[root@localhost ~]# usermod -s /sbin/nologin user10 //修改用户shell[root@localhost ~]# usermod -G hr,it,fd user10 //直接覆盖附加组[root@localhost ~]# usermod -a -G yw,kf user10 //在原有基础上添加附加组帐号锁定,解锁[root@localhost ~]# useradd user1000[root@localhost ~]# passwd user1000[root@localhost ~]# grep 'user1000' /etc/shadowuser1000:$1$Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7:::[root@localhost ~]# usermod -L user1000[root@localhost ~]# grep 'user1000' /etc/shadowuser1000:!$1$Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7:::登录测试,帐号锁定之后,普通用户登录不上[root@localhost ~]# usermod -U user1000[root@localhost ~]# grep 'user1000' /etc/shadowuser1000:$1$Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:15775:0:99999:7:::登录测试设置账号过期[root@localhost ~]# date 2017年 02月 12日 星期日 1:22:20 CST[root@localhost ~]# usermod -e 2017-02-12 user1000[root@localhost ~]# grep 'user1000' /etc/shadowuser1000:$1$Hw2wCJoe$FU91eSBsBx1W0CGdIhTwh/:17025:0:99999:7::16415:登录测试[root@localhost ~]$ su - user1000PassWord: Your account has expired; please contact your system administratorsu: incorrect password修改用户名[root@localhost ~]# usermod -l tomm tom[root@localhost ~]# id tomid: tom:无此用户[root@localhost ~]# id tommuid=502(tomm) gid=503(tom) 组=503(tom)三、批量导入用户[root@localhost tmp]# cat user.txt (用户名,uid,家目录不可以重复)abc1:x:1000:1000::/home/abc1:/bin/bashabc2:x:1001:1001::/home/abc2:/bin/bash[root@localhost tmp]# newusers < user.txt [root@localhost tmp]# cat passwd.txt abc1:123abc2:123[root@localhost tmp]# chpasswd < passwd.txt [root@localhost ~]# su - aaa1-bash-4.1$导入用户的家目录中的.bash环境[root@localhost ~]# 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[root@localhost ~]# su - aaa1[aaa1@localhost ~]$ useradd 命令参考的文件1. /etc/login.defs2. /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 全局登录级别环境配置文件 加载顺序[root@localhost robin]# su - robin/etc/profile.bash_profile.bashrc/etc/bashrcsu - robin 和 su robinsu - robin 登录级别切换用户su robin shell级别切换用户四、给普通用户提权以下两种方式都可以将普通用户提升为root1. Switching users with su[alice@localhost ~]$ useradd u1-bash: /usr/sbin/useradd: 权限不够[alice@localhost ~]$ su - rootpassword:[root@localhost ~]# 2. Running commands as root with sudo以root身份授权普通用户[root@localhost ~]# vim /etc/sudoers%wheel ALL=(ALL) NOPASSWD: ALL或[root@localhost ~]# visudo //可以验证sudoers文件是否有语法错误[root@localhost ~]# useradd lusu -G wheel[root@localhost ~]# 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 gougou10uid=505(gougou10) gid=505(gougou10) 组=505(gougou10)