【文件管理、管道、用户及组管理、用户及权限管理】用户及组管理
用户与组管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。每个用户账号都拥有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。实现用户账号的管理,要完成的工作主要有如下几个方面:
1.用户账号的添加、删除与修改。
2.用户口令的管理。
3.用户组的管理。
Linux用户分为两种,分别是管理员(UID:0)和普通用户(UID:1-65535),普通用户又分为系统用户与登录用户。
注:一个程序可以访问哪些内容取决于这个程序的发行者是哪一个的。
linux组可分为管理员组(GID:0)与普通用户组(1-60000)
注:centos6版本与centos7版本的UID与GID略有不同。
此外,用户组还可以划分为基本组(用户在创建时默认创建一个与其名字相同的基本组)与附加组(除了已有的基本组以外,还可以添加其他组,其他组就是此用户附加组)
所以组名通用户名,且只包含一个用户就叫做私有组,而组内包含多个用户叫做公有组
Linux用户和组相关的配置文件
用户和用户组相关的信息都存放在/etc/passwd,/etc/shadow,/etc/group以及/etc/gshadow文件下。下面分别介绍这些文件的具体内容。
1./etc/passwd
此文件下保存了用户及其属性信息。其中每条信息从左到右被冒号分割成了7个部分,username(用户名):x(密码占位符,真正的密码自然不能放在这里了,太不安全了):UID(用户ID):GID(用户组ID):存放用户的注释信息:用户家目录:用户默认使用的shell。
2./etc/shadow
此文件保存了用户密码及其相关属性信息,其中每条信息从左到右被冒号分割成9个部分,用户名:密码(被加密过的,密码中有“!”或者“*”用户已被禁用):最近一次修改密码的日期,自linux元年开始的天数(1970年1月1日开始):密码最短使用时间:密码最长使用时间:密码告警时间(在密码过期前n天进行告警,需要修改密码了):不活动时间(超出警告时间后m天仍可登录):失效时间(到达此时间,用户无法使用):保留位暂不使用。
3./etc/group
此文件保存了用户组及其属性信息,每一行被冒号从左至右分割成了4个部分,组名(创建一个用户就会创建一个同名的组):x组密码占位符(与用户密码一样也是存放在其他位置):GID:以逗号分隔的用户列表,以此组为附加组的用户的用户列表。
4./etc/gshadow
此文件保存了组密码及其相关属性信息,每一行被冒号从左至右分割成了4个部分,组名(创建一个用户就会创建一个同名的组):密文密码(为空时只有该组成员可获得权限,“!”与“*”则不需要密码可直接加入):用户组管理员(是逗号分隔的用户列表,用户组管理员可以修改密码和组成员,也很组里其他成员拥有相同的权限):成员(以此组为附加组的用户的用户列表,应该要和/etc/group下的用户列表一样)
用户与组相关管理常用命令
一、用户创建:useradd
使用方法:useradd [options] login
常用选项:
-u:--uid UID:指定UID,定义在/etc/login.defs
-g:--gid GROUP:指明用户基本组,可为组名也可以是GID
-G: GROUP1[,GROUP2,...[,GROUPN]]]:指定用户所属的附加组,组事先存在
-c:--comment COMMENT:用户注释信息
-d:/PATH/TO/ HOME_DIR:指定的路径为用户的家目录:通过复制/etc/skel此目录并重命名实现,指定的家目录路径如果事先存在,则不会为用户复制环境配置文件
-s:--shell SHELL:指定用户的默认shell,可用列表存放在/etc/shells下
-r:创建系统用户。
注:默认值设定在/etc/default/useradd中。可用 useradd -D命令查看创建用户的默认配置
二、创建组:groupadd
使用方法:groupadd [option]... group_name
常用选项:
-g GID:指明GID号
-r:创建系统组
三、查看用户相关ID信息:id
使用方法:id [OPTION]... [USER]
常用选项:
-u: 仅显示有效的UID
-g: 仅显示用户的基本组ID
-G:仅显示用户所属的所有组的ID
四、切换用户或以其他用户身份执行命令:su
使用方法:su [options...] [-] [user [args...]]
切换用户方式:
非登录式切换,不会读取目的用户的配置文件进行初始化:su USERNAME
登录式切换,会读取目的用户配置文件,完全切换:su - USERNAME或者su -l USERNAME
换身份执行命令:
su [-] username -c 'COMMADN'
五、用户加密:passwd
使用方法:passwd[options]username:修改指定用户密码,仅root用户有权限。
常用选项:
-l:锁定指定用户
-u:解锁指定用户
-n:mindays:指定最短使用期限
-x:maxdays:最大使用期限
-w:warndays:提前告警期限
-i:inactivedays:非活动期限
从标准输入接收用户密码:echo “password” | passwd --stdin username
六、用户属性修改:usermod
使用方法:usermod [options] LOGIN
常用选项:
使用方式:userdel [options] LOGIN
常用选项-r:删除用户时一并删除其家目录,默认不删除
八、组属性修改:groupmod
使用方式:groupmod [options] GROUP
常用选项:
-g GID:新的GID
-n group_name:新组名
九、组删除:groupdel
使用方式:groupdel GROUP
十、组密码:gpasswd
使用方式:gpasswd [option] group
常用选项:
-a USER:将user添加至指定组
-d USER:删除用户以当前组命名的附加组
-A USER1,USER2,...:设置有管理权限的用户列表
十一、修改用户属性:chage
使用方式:chage [options] LOGIN
常用选项:
-d:修改最后一次修改密码的时间
-E:修改用户失效时间
-I:修改密码过期怒限时间
-W:修改告警天数
-m:修改密码最小使用天数
-M:修改密码最长使用天数
通过文件的方式增加用户
在linux中一切皆文件,那么我们操作文件就可以自己创建出一个用户来。当然实际操作时不会这样创建用户只是用来帮助理解。
第一步,在/etc/passwd 中创建一个用户;
rose:x:1003:1003:/home/rose:/bin/bash
第二步,在/etc/shadow增加密码等信息;
rose:!!:17321:0:99999:7:::
第三步,在/etc/group 增加主组;
rose:x:1003:
第四步,在/etc/gshadow 设置组密码信息;
rose:!::
第五步,为用户设置邮箱;
[root@localhost /]# touch /var/spool/mail/rose
第六步,设置家目录,并为家目录中增加一些隐藏文件
[root@localhost /]# mkdir /home/rose [root@localhost /]# cp -r /etc/skel/.[!.]* /home/rose/
[root@localhost /]# id rose uid=1003(rose) gid=1003(rose) groups=1003(rose)
文件的权限
文件权限针对的对象是:
owner:属主,u
group:属组,g
other:其他,o
对于文件而言:
文件可读(r):可以查看其内容。
文件可写(w):可修改文件内容。
文件可执行(x):可以把文件提请内核启动为一个进程。
对于目录而言:
目录可读(r):可以使用ls查看目录中文件列表
目录可写(w):可在此目录中创建或删除文件
目录可执行(x):可以使用ls-l查看目录中文件,可以cd进目录。
权限管理类命令
一、修改文件权限(chmod)
使用方法:
1. chmod [OPTION]... MODE[,MODE]... FILE...
可以直接将rwx直接赋值给相应的用户类型:u为属主,g为属组,o为其他用户,a为所有用户(同ugo=---)
或者直接操作一类用户的一个权限位(u+x,o-r)
查看文件权限 [root@localhost /]# ll -lh /dj total 16K -rw-r--r-- 1 root root 51 Jun 14 10:36 hello_world.py -rw-r--r-- 1 root root 92 Jun 15 10:00 name_daxiaoxie.py -rw-r--r-- 1 root root 84 Jun 15 09:44 name.py -rw-r--r-- 1 root root 359 Jul 23 02:48 test.py 修改权限 [root@localhost /]# chmod 775 /dj/hello_world.py [root@localhost /]# ll -lh /dj total 16K -rwxrwxr-x 1 root root 51 Jun 14 10:36 hello_world.py -rw-r--r-- 1 root root 92 Jun 15 10:00 name_daxiaoxie.py -rw-r--r-- 1 root root 84 Jun 15 09:44 name.py -rw-r--r-- 1 root root 359 Jul 23 02:48 test.py 使用第三种方式 [root@localhost /]# chmod --reference=/dj/hello_world.py /dj/test.py [root@localhost /]# ll -lh /dj total 16K -rwxrwxr-x 1 root root 51 Jun 14 10:36 hello_world.py -rw-r--r-- 1 root root 92 Jun 15 10:00 name_daxiaoxie.py -rw-r--r-- 1 root root 84 Jun 15 09:44 name.py -rwxrwxr-x 1 root root 359 Jul 23 02:48 test.py [root@localhost /]#
二、修改文件的属组属主(仅使用root用户)
1.修改属主(chown)
使用方式:chown[OPTION]...[OWNER][:[GROUP]]FILE...或使用--referrence
chown owner|owner:group|:group file (其中:可用.替换,并且可以使用-R递归更换)
2.修改属组(chgrp)
chgrp[option]...group file或--referrence方式
3.文件或目录创建时的遮罩码:umask
file:666-umask(若某类用户权限减得结果中存在x权限则将其权限+1)
dir:777-umask
umask:查看当前值
umask#:设定值