linux是一个多用户系统,用于权限管理(权限最小化);linux
相关命令:shell
7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|
useradd | passwd | userdel | groupadd | groupdel | usermod | gpasswd | id | su |
##一、linux系统中主组和附加组bash
在Linux系统中建立每一个用户时,将自动建立一个与其同名的基本用户组,并且这个基本用户组只有该用户一我的。若是该用户之后被概括入其余用户组,则这个其余用户组称之为扩展用户组。一个用户只有一个基本用户组,可是能够有多个扩展用户组;dom
用户的基本组(主组) 用户的附加组:用户额外属于的组,一个用户能够加入多个附加组tcp
##二、Linux中的用户类别post
在linux系统中共有3种用户:ui
管理员用户(root) | uid=0 | 能够登陆系统 | 有管理权限 |
---|---|---|---|
普通用户 | 1000<uid | 可登陆系统 | 没有管理权限 |
系统用户 | 1<uid<999 | 不能够登陆用户 | 没有管理权限 |
注意:是否能够登陆系统由shell类型决定,详见:本文中useradd命令讲解加密
##三、用户管理相关文件3d
文件位置 | 文件信息 |
---|---|
/etc/passwd | 用户基本信息 |
/etc/shadow | 用户密码信息、过时时间等 |
/etc/group | 用户组信息 |
/etc/gshadow | 用户组密码 |
/etc/default/useradd | 建立用户的默认配置信息 |
/etc/skel/ | 用户家目录模板 |
/etc/login.defs | 全局用户设定信息 |
##四、/etc/passwd文件详解 /etc/passwd: 每行是一个用户,用来记录用户的基本信息,每行的格式code
account:password:UID:GID:GECOS:directory:shell 其中: accout:用户名 password:用户密码,密码位置默认是x UID:用户身份id,用来惟一的标识一个用户 GID:用户组id,用来在系统中惟一的标识一个用户组(这里指的是其基本组的组ID) GECOS:用户描述信息,能够空白,也能够随意写(useradd -c ) directory:用户家目录 shell:用户所使用的shell类型 /bin/bash–>能够登陆系统 /sbin/nologin–>该用户必定没法登陆系统
╭─root@localhost.localdomain ~ ╰─➤ cat /etc/passwd root:x:0:0:root:/root:/bin/zsh bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin du:x:1000:1000:du:/home/du:/bin/bash root : x : 0 : 0 : newuser : /root : /bin/bash 用户名 : 密码 : 用户id : 用户所在组的id : 描述信息 : 家目录 : shell类型
##五、/etc/group文件详解
###用户组信息
linux,用户必定是属于一个组的在linux中,建立用户的时候,会自动建立一个组,组名和组id都和所建立的用户相同,并且,该用户会自动加入到这个组中;
groupname:password:GID: [user1, user2…..]
组成: groupname:组名 password:组密码 GID:组id [user1, user2…..]:该组中的用户列表
╭─root@localhost.localdomain ~ ╰─➤ cat /etc/group root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4: mail:x:12:postfix tcpdump:x:72: du:x:1000:du
##六、/etc/shadow文件详解
zxhk: $6$dgnPoZ0s$6xNKEWz : 17729 : 0 : 99999 : 7 : : :
第一段:用户名: 第二段:加密后的密码 第三段:上次修改密码举例元年通过的天数1970年1月1日(若是该字段空,意味着该用户密码被禁用) 第四段:密码最短使用时间(0表示不限制) 第五段:密码最长有效期(99999表示不限制)(若是第5的值小于第四段,那么用户没法修改本身的密码) 第六段:密码到期前几天开始发送告警,提示密码即将过去,请当即修改 第七段:非活动期间,密码到期后的宽限时间(登陆系统的时候必须先修改密码,才能登陆) 第八段:密码过时时间(也是举例计算机元年通过的天数)(这里和前面的几个时间没有联系) 第九段:保留字段
╭─root@localhost.localdomain ~ ╰─➤ cat /etc/shadow root:$6$8.xhQ.jTum4dlHEi$fM.SZ2c7mEx7pfCNRJbOrwGBDM5OUySnv7pXIGrjhDbCWEk8Omba3atvGw8GexM/IhEyxskiPx4sE4beJPVKK.::0:99999:7::: bin:*:17110:0:99999:7::: daemon:*:17110:0:99999:7::: du:$6$0RkDAuAfxyCuINAA$3PokksZIeoqccUXseqJBhhHoQEjT0G97IvztZNupUwBC4cxN3JtZkLlsaExH7Api0GTmDcASMZnCG/mVsa3dJ.::0:99999:7:::
##七、Useradd命令
useradd [options] username options: -d:指定用户家目录 –home
-c:用户说明信息–comment -e: 指的帐号的过时时间–expiredate ;时间格式 YYYY/MM/DD -g:指的用户的基本组的组id –gid #1
-G:指的用户的附加组列表 –groups #2 -u :指的用户的uid #3 -r :建立一个系统用户 #4 不建立家目录,不会复制 /etc/skel 下的文件; -s :指定用户的shell类型(/bin/bash/,/sbin/nologin) #5 /bin/bash–>能够登陆系统 /sbin/nologin–>该用户必定没法登陆系统
useradd -s /sbin/nologin -r user1 #建立一个系统用户user1
##八、passwd 修改用户密码
passwd [[options] username]
options: -l:锁定用户 -u:解锁用户 -d:删除用户密码 -e:让用户密码过时 :若是不指定用户名,那么就是修改当前用户的密码 --stdin
echo “ 123“ | passwd --stdin user1 #表示给user1 用户设置密码123 (user1 用户必须存在)
##九、Userdel命令
userdel [-r] username #-r:在删除用户的时候,连同用户数据一并删除 rm -rf /home/username 删除用户名 rm -rf /var/spool/mail/* 删除邮件mail
##十、 groupadd 建立用户组
groupadd [-g] groupname # -g 指定组ID
##十一、 groupdel 删除用户组
groupdel groupname
##十二、Usermod命令
usermod [options] username options: -g, –gid 基本组组id #1 -G, –groups 附加组组id #2 -u, –uid user的id #3 -s, –shell 更改shell类型 #4 -L, –lock: 锁定用户帐号 -U : 解锁用户帐号 -l, –login变动使用者login时的名称为login_name -e, –expiredate 加上使用者账号中止日期 ,日期格式为MM/DD/YY. -d, –home 更新使用者新的登入目录 -m, –move-home:移动用户家目录至新的位置
╭─root@localhost.localdomain ~ ╰─➤ useradd -s /sbin/nologin test1 ╭─root@localhost.localdomain ~ ╰─➤ usermod -s /bin/bash test1 ╭─root@localhost.localdomain ~ ╰─➤ id test1 uid=1001(test1) gid=1001(test1) group=1001(test1)
##1三、gpasswd 命令
option: -a, --adduser 向名为 group 的组中添加用户 user -d, --deleteuser 从名为 group 的组中移除用户 user
╭─root@localhost.localdomain ~ ╰─➤ usermod -G root du ╭─root@localhost.localdomain ~ ╰─➤ id du uid=1000(du) gid=1000(du) 组=1000(du),0(root) ╭─root@localhost.localdomain ~ ╰─➤ usermod -G du du ╭─root@localhost.localdomain ~ ╰─➤ id du uid=1000(du) gid=1000(du) 组=1000(du) ╭─root@localhost.localdomain ~ ╰─➤ man gpasswd ╭─root@localhost.localdomain ~ ╰─➤ gpasswd -a du root 正在将用户“du”加入到“root”组中 ╭─root@localhost.localdomain ~ ╰─➤ id du uid=1000(du) gid=1000(du) 组=1000(du),0(root) ╭─root@localhost.localdomain ~ ╰─➤ gpasswd -a root du 正在将用户“root”加入到“du”组中 ╭─root@localhost.localdomain ~ ╰─➤ gpasswd -d du root 正在将用户“du”从“root”组中删除 ╭─root@localhost.localdomain ~ ╰─➤ gpasswd -d root du 正在将用户“root”从“du”组中删除
##1四、id命令
###做用:用来查看指定的用户的信息(或判断用户是否存在)
id [-u|-g|-G] username option: -u:仅仅显示用户uid -g:仅仅显示用户gid -G:仅仅显示用户所有组id
##1五、su命令(switch user)
- 做用:进行切换用户
- 格式:su – 目标用户
- su命令和su -命令最大的本质区别就是: 前者只是切换了root身份,但Shell环境仍然是普通用户的Shell;然后者连用户和Shell环境一块儿切换成root身份了;只有切换了Shell环境才不会出现PATH环境变量错误;su切换成root用户之后,pwd一下,发现工做目录仍然是普通用户的工做目录;而用su -命令切换之后,工做目录变成root的工做目录了;用echo $PATH命令看一下su和su -之后的环境变量有何不一样;以此类推,要从当前用户切换到其它用户也同样,应该使用su -命令.
╭─root@localhost.localdomain ~ ╰─➤ su - du 上一次登陆:五 5月 10 20:30:49 CST 2019pts/0 上 [du@localhost ~]$