一、用户与UID
1.用户(User)分为管理员与普通用户
2.对于Linux系统而言,通过UID来界定某用户是属于哪个用户,而不是用户名
3.查看某用户的UID可以通过id命令实现,Centos6.8与7.2系统上的UID部分起始数值有所不同
Centos7.2
[root@localhost home]# id root uid=0(root) gid=0(root) groups=0(root) [root@localhost home]# id admin uid=1000(admin) gid=1000(admin) groups=1000(admin),10(wheel) [root@localhost home]# id user1 uid=1004(user1) gid=1005(user1) groups=1005(user1) [root@localhost home]# id ftp uid=14(ftp) gid=50(ftp) groups=50(ftp)
Centos6.8
[root@localhost ~]# id root uid=0(root) gid=0(root) groups=0(root) [root@localhost ~]# id admin02 uid=501(admin02) gid=502(admin02) groups=502(admin02) [root@localhost ~]# id admin03 uid=502(admin03) gid=503(admin03) groups=503(admin03) [root@localhost ~]# id ftp uid=14(ftp) gid=50(ftp) groups=50(ftp)
4.无论Centos6.8还是7.2,管理员的UID都为0,普通用户的UID编号为1-65535
5.普通用户可以分为:
系统用户:即系统本身存在的一些用户,但仍然只是属于普通用户,用于支持系统进程及一些服务的启用
UID:1-499(Centos6.8),1-999(Centos7.2)
登录用户:系统使用者后天创建的用户,用于供系统使用者登录,来与操作系统进行交互
UID:500开始(Cetnos6.8),1000开始(Centos7.2)
二、用户与发起进程间的关系
通常我们把运行中的程序称之为进程,某一项进程被用户发起运行后,其所能够访问的资源的权限取决于进程的运行者的身份。
范例:以root用户与admin用户为例,对/etc/shadow文件进行操作。
root用户通过nano命令对/etc/passwd文件进行查看
此时通过ps aux命令查看系统进程,可以发现此时nano程序的发起者为root
admin用户通过nano命令对/etc/passwd文件进行查看
此时通过ps aux命令查看系统进程,可以发现此时nano程序的发起者为admin
由此可以发现,对于/etc/shadow这个文件而言,root与admin用户能否对其进行访问,取决于root与admin自身的身份,而与发起的进程并无关系。
三、组与GID
1.组(Group)分为管理员组与普通组
2.对于Linux系统而言,通过GID来判断某用户属于哪个组,而不是组名
3.Linux中组的类别:
3.1主组(用户的主要组)
3.1.1用户必须属于一个并且只能属于一个主组
3.1.2新用户在建立的时候,如果没有指定主组的话,默认主组为私有组(即组名与用户名相同的组),私有组有且只有一个用户(即新用户自身)
3.2辅助组(即用户的附加组)
3.2.一个用户可以不属于辅助组,也可以属于多个辅助组
4.普通用户组可以分为:
系统用户组:即系统用户的所属组,
GID:1-499(Centos6.8),1-999(Centos7.2)
登陆用户组:即登录用户的所属组,
GID:500开始(Cetnos6.8),1000开始(Centos7.2)
四、用户和组的配置文件
用户配置文件:/etc/passwd
用户密码配置文件:/etc/shadow
组配置文件:/etc/group
组密码文件:/etc/gshadow
1.用户配置文件:/etc/passwd中的字段信息如下:
[root@localhost ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash
该字段由冒号(:)分隔,共7个字段,自左向右解释如下:
用户名:密码:UID:GID:注释;家目录:默认Shell类型
2.用户密码配置文件:/etc/shadow中的字段信息如下:
[root@localhost ~]# cat /etc/shadow root:$6$xdjdqJdXTfOk30W3$3YfvEL9rzNK6c1qYKSAv0anQXQkt/glZw7mPqE3FyHnQH/nswRqMGFmXeVbO1OJ1xkyB8cwEabuvaDOWaYCH3/::0:99999:7:::
该字段由冒号(:)分隔,共8个字段,自左向右解释如下:
登录用户:用户密码:密码最近一次被更改的时间(从1970.1.1开始算起的天数):密码再过几天允许变更:密码再过几天必须更改:密码到期前几天提醒用户:密码过期几天后帐号将被锁定:帐号几天后失效(从1970.1.1开始算起的天数)
3./etc/passwd中对于用户的密码,加密算法默认为sha512,可以被手动更改,命令为authconfig –passalgo=算法 –update
例如:更改默认的sha512加密算法为md5
[root@localhost ~]# authconfig --passalgo=md5 --update [root@localhost ~]# useradd user15 [root@localhost ~]# passwd user15 Changing password for user user15. New password: BAD PASSWORD: The password is shorter than 8 characters Retype new password: passwd: all authentication tokens updated successfully.
admin:$6$tQtyCgrqniIA7HIo$yaAYYO5FNueKteRV2o1csx4u.1gAY6pQuRAiwR63Ur0Q4.8/SuJ4TwKaorA/NRzS3eC4PwzRzGbALz1sUlnwG0:17001:0:99999:7::: gentoo:!!:14244:0:99999:7::: 111:!!:14245:0:99999:7::: 1111:!!:14245:0:99999:7::: user1:!!:17021:0:99999:7::: centos:!!:17021:0:99999:7::: user12:!!:17021:0:99999:7::: root1:!!:17021:0:99999:7::: centos1:!!:17021:0:99999:7::: user13:$1$XNtmO.u2$W/nMXJY8lNGWdREiEJjbY0:17021:0:99999:7::: user15:$1$s91Vy80O$aEtCQFYMRqMkZXEn3MdZW/:17021:0:99999:7:::
可以看到,用户密码的加密方式由sha512更改为md5,此时新建一个新用户user15,为其设置密码后,查看/etc/shadow文件,user15的密码密文为$1开头,并且密文长度大幅缩短,而更改密码加密方式之前所创建的admin用户的密码密文为$6开头,且密文长度较长。
4.组配置文件:/etc/group中的字段信息如下:
[root@localhost ~]# cat /etc/group root:x:0:gentoo
该字段由冒号(:)分隔,共4个字段,自左向右解释如下:
组名称:组密码:GID:以当前组为辅助组的用户列表(通过逗号隔开)
5.组密码文件:/etc/gshadow中的字段信息如下:
[root@localhost ~]# cat /etc/gshadow root:::gentoo
该字段由冒号(:)分隔,共4个字段,自左向右解释如下:
组名:组密码:组管理员列表:以当前组为辅助组的用户列表(分隔符为逗号)
五、用户管理命令
1.useradd 新建用户
选项:
-u 指定新建用户的UID
-g 指定新建用户的主组
-c 指定新建用户的注释信息
-d 指定新建用户的家目录
-s 指定新建用户的默认shell
-G 指定新建用户的辅助组
语法格式:useradd 选项 用户名
示例:新建一个用户,用户名为user50,且uid为1050,主组为testgroup,注释信息为testuser,家目录为/home/user50,默认shell为/bin/bash,辅助组为root
[root@localhost ~]# useradd -u 1050 -g testgroup -c testuser -d /home/user50 -s /bin/bash -G root user50 [root@localhost ~]# id user50 uid=1050(user50) gid=1022(testgroup) groups=1022(testgroup),0(root) [root@localhost ~]# cat /etc/passwd user50:x:1050:1022:testuser:/home/user50:/bin/bash
-N 不创建与用户名同名的私用组作为新建用户的主组,而是用user组作为主组
示例:新建一个用户user51,将user组作为其主组
[root@localhost ~]# useradd -N user51 [root@localhost ~]# id user51 uid=1051(user51) gid=100(users) groups=100(users)
-r 创建系统用户(即UID小于500-Centos6,UID小于1000-Centos-7)
示例:新建一个用户user52,将其创建为系统用户
Centos7.2
[root@localhost ~]# useradd -r user52 [root@localhost ~]# id user52 uid=988(user52) gid=983(user52) groups=983(user52)
Centos6.8
[root@localhost ~]# useradd -r user52 [root@localhost ~]# id user52 uid=495(user52) gid=492(user52) groups=492(user52)
2.系统对于新创建用户的各项设置有默认值设定,其存储路径为/etc/default/useradd文件
使用cat /etc/default/useradd 或useradd -D都可查看默认设置
[root@localhost ~]# cat /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes [root@localhost ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
修改默认设置如下:
范例:修改默认设置中的默认SHELL类型为/bin/csh
[root@localhost ~]# useradd -D -s /bin/csh [root@localhost ~]# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/csh SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
3.usermod 修改用户
语法格式:usermod 选项 用户名
选项:
-u 修改已经存在的用户的UID
-g 修改已经存在的用户的主组
-c 修改已经存在的用户的注释信息
-d 修改已经存在的用户的家目录
-s 修改已经存在的用户的默认shell
-G 修改已经存在的用户的辅助组
-l 修改已经存在的用户的用户名
范例:修改user52的用户名为user53
[root@localhost ~]# usermod -l user53 user52 [root@localhost ~]# cat /etc/passwd user53:x:988:983::/home/user52:/bin/bash
-L 锁定该用户,在其/etc/shadow的对应条目上的密码字段中增加!
范例:将用户user51锁定
[root@localhost ~]# usermod -L user51 [root@localhost ~]# cat /etc/shadow user51:!$1$rJvOIJUh$kX1vLz5NVLWcHcoOzK8xW0:17021:0:99999:7:::
-U 解锁该用户,在其/etc/shadow的对应条目上的密码字段中减少!
范例:将用户user51解锁
[root@localhost ~]# usermod -U user51 [root@localhost ~]# cat /etc/shadow user51:$1$rJvOIJUh$kX1vLz5NVLWcHcoOzK8xW0:17021:0:99999:7:::
4.userdel 删除用户
语法格式:userdel 选项 用户名
选项:
-f 强制删除某用户(即使目标用户仍在登录,也将被强制删除,包括家目录与邮箱目录)
-r 移除某用户(此操作将会导致家目录和邮箱目录等目标用户的有关信息都被移除)
5.id命令 查看用户相关ID信息
语法格式:id 选项 用户名
选项:
-u 查看指定用户的UID
-g 查看指定用户的起作用的GID
-G 查看指定用户的所有GID
-n 通常结合-G、-g来使用,输出指定ID的名字
6.passwd命令 设置用户密码
语法格式:passwd 选项 用户名
注意:
1.修改自身密码,只需切换到目标用户,直接执行passwd即可
2.修改其他用户密码,只有root用户有权限,普通用户没有权限修改非自身的密码
选项:
-l 锁定指定用户
范例:锁定user51用户
[root@localhost ~]# passwd -l user51 [root@localhost ~]# cat /etc/shadow user51:!!$1$rJvOIJUh$kX1vLz5NVLWcHcoOzK8xW0:17021:0:99999:7:::
-u 解锁指定用户
范例:解锁user51用户
[root@localhost ~]# passwd -u user51 [root@localhost ~]# cat /etc/shadow user51:$1$rJvOIJUh$kX1vLz5NVLWcHcoOzK8xW0:17021:0:99999:7:::
注意:锁定的意思即为
-e 强制该用户下次登陆时必须修改密码
范例:指定admin用户在下次登陆时必须修改密码
[root@192 ~]# passwd -e admin Expiring password for user admin. passwd: Success WARNING! The remote SSH server rejected X11 forwarding request. You are required to change your password immediately (root enforced) Last failed login: Mon Aug 8 21:23:58 CST 2016 from 192.168.211.1 on ssh:notty There was 1 failed login attempt since the last successful login. Last login: Mon Aug 8 21:23:05 2016 WARNING: Your password has expired. You must change your password now and login again! Changing password for user admin. Changing password for admin. (current) UNIX password:
-n 指定某用户密码的最短使用期限
-x 指定某用户密码的最大使用期限
-w 指定某用户的密码过期前提前多少天进行警告
六、组管理命令
1.groupadd:创建新组
语法格式:groupadd 选项 组名
选项:
-g 指定GID
-r 创建系统组(即GID<500-Centos6,GID<1000-Centos7)
2.groupmod:修改已存在的组
语法格式:groupmod 选项 组名
选项:
-n 修改已存在组的名字
-g 修改已存在组的GID
3.groupdel:删除组
语法格式:groupdel 选项 组名
4.gpasswd 更改组密码
语法格式:gpasswd 选项 组名
选项:
-a 将指定用户添加至指定组中
-d 从指定组中移除指定用户
-A 将指定用户加入到组管理员列表中
5.newgrp命令 临时将指定组作为当前用户的主组
语法格式:newgrp 组名
注意:如果用户本不属于此组,则需要输入组密码
6.groupmems 更改与查看组成员
语法格式:groupmems 选项 行为
选项:
-g 指定某组
行为:
-a 指定用户加入某组
-d 从组中删除指定用户
-p 从组中清除所有成员
-l 显示组成员列表
7.groups 用户 该命令可以查看用户所属组的列表
七、用户切换命令
通过su命令的两种方式来实现
-
su 用户名:非登陆式切换,不会读取用户的配置文件,不改变当前工作目录
-
su – 用户名:登录式切换,读取目标用户的配置文件,并切换至家目录,属于完全切换
注意:su命令在使用时由root用户切换至其他用户无需密码,普通用户互相切换时需要密码
原创文章,作者:Koinlers,如若转载,请注明出处:http://www.178linux.com/31257