一、Linux用户及用户组的基本概念
用户:用户是实现能够将有限的资源在多个使用者之间进行分配;、
用户组:用户组是指多个用户的集合,方便对一类需要同样权限的用户授权
Linux是多用户、多任务的操作系统。
多用户指:多人同时使用系统资源;多任务:同时运行多个进程
Linux内核(2.6.x)已经可以支持到2^32 - 1 个标识符。
root : 0普通用户: 1 - 65535 系统用户: 1-499(CentOS 6) ; 1-999(CentOS 7)登录用户: 500 - 60000(CentOS 6) ; 1000 - 60000 (CentOS 7)
3、 用户配置文件
(1) 用户信息库: /etc/passwd
用户帐号 用户密码 用户ID 用户组ID 用户名全称 用户主目录 用户所使用的shell
root x 0 0 root /root /bin/bash由于passwd不再保存密码信息,所以用x占位代表。若要使某个用户账户不能登录linux,只需设置该用户所使用的shell为/sbin/nologin即可。比如,对于FTP 账户,一般只允许登录和访问FTP服务器,不允许登录linux操作系统。若要让某用户没有telnet权限,即不允许该用户利用telnet远程登录和 访问linux操作系统,则设置该用户所使用的shell为/bin/true即可。若要让用户没有telnet和ftp登录权限centos 设置用户组,则可设置该用户的 shell为/bin/false。在/etc/shells文件中,若没有/bin/true或/bin/false,则需要手动添加:[root@localhost ~]# echo "/bin/false">>/etc/shells[root@localhost ~]# echo "/bin/true">>/etc/shells
格式(七段):account:password:UID:GID:GECOS:directory:shell account: 用户名 password:占位符x; UID:用户的ID号 GID:用户所属的主组的ID号; GECOS:注释信息 directory:用户的家目录; shell:用户的默认shell,登录时默认shell程序;
(2)密码存储位置: /etc/shadow 格式(九段):用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期宽限时间:账号失效日期:保留字段
login name:用户名encrypted password:经过编码的密码date of last password change:密码最近一次修改密码的时间minimum password age:密码最短使用期限maximum password age:密码最长使用期限:表示两次修改密码的最长间隔。password warning period:警告时间:表示在密码快要过期之前的多少天开始警告用户修改密码。password inactivity period:过期宽限时间:表示在密码过期以后,还允许用户登录的时间,只不过在这段时间里登录系统以后就必须要修改密码才能使用系统。account expiration date:账号失效日期,该账号被禁用reserved field:保留字段
(3)创建新用户默认属性: /etc/default/useradd # useradd defaults file GROUP=100 # 创建组 HOME=/home # 默认家目录 INACTIVE=-1 EXPIRE= SHELL=/bin/bash # 默认shell SKEL=/etc/skel # 默认家目录的文件 CREATE_MAIL_SPOOL=yes # 自动创建mail
二、用户组 1. 用户组(用户容器)的分类 组标识:GroupID, GID 16bits二进制数字:0-65535 (1)系统视角:管理员用户组&普通用户组 管理员组:0 普通用户组:1-65635 系统用户组:1-499(CentOS6), 1-999(CentOS7) 登录用户组:500-60000(CentOS6), 1000-60000(CentOS7) (2)用户视角:基本组&附加组 用户的基本组:用户本身所属组 用户的附加组:用户额外所支持的组
三、权限的生效机制
进程的运行者:
是否与文件的属主相同,如果是,则以文件属主的身份来访问此文件;否则
是否属于文件的属组,如果是,则以文件属组的身份来访问此文件;否则
以文件的其它用户的身份来访问此文件;
管理账户:useradd ,usermod,userdel等常见命令使用
useradd命令:添加用户 最后为用户名
useradd [选项] 登录名
-c, --comment COMMENT:注释信息,一般为Full Name;
-d, --home /PATH/TO/HOME_DIR:家目录路径;目标路径不能事先存在,否则会有警告,不会复制skel相关的文件给用户;
-g, --gid GROUP:用户的基本组组名或GID;
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:用户所属的附加组列表,彼此间用逗号隔开,中间没有空格;
123#useradd-c"testuser"-d/home/testuser-gtestgrp-Gtestgrp1testuser#idtestuseruid=5011(testuser)gid=5011(testgrp)groups=5011(testgrp),985(testgrp1)
-m, --create-home:强制创建家目录;
一般指当CREATE_HOME变量为设置时必须使用此参数
-M:不创建用户主目录centos 设置用户组,即使系统在 /etc/login.defs 中的设置 (CREATE_HOME) 为 yes;
1234#useradd-Mtestuser2#ls/home/centosgentoonologintest1test3fedoramageeduslackwaretest2testuser
-r, --system:创建一个系统账户
创建系统用的UID在0-999之内。且不创建家目录
123456#useradd-rtestuser3#idtestuser3uid=990(testuser3)gid=984(testuser3)groups=984(testuser3)#ls/home/centosgentoonologintest1test3fedoramageeduslackwaretest2testuser
-s, --shell SHELL:用户的登录 shell 名,默认为留空,让系统根据 /etc/default/useradd 中的 SHELL 变量选择默认的登录shell;
-u, --uid UID:用户 ID 的数字值。此值必须为唯一的,除非使用了 -o 选项。此值必须非负,默认使用大于等于UID_MIN,且大于任何其他用户 ID 最小值。
1112#cat/etc/shells/bin/sh/bin/bash/sbin/nologin/usr/bin/sh/usr/bin/bash/usr/sbin/nologin/bin/tcsh/bin/csh#useradd-s/bin/bash-u3001testuser4#grep"testuser4>"/etc/passwdtestuser4:x:3001:3001::/home/testuser4:/bin/bash
注意:创建登录用户时,为其自定义的shell程序必须为可登录shell,且要位于/etc/shells文件中;
useradd -D:显示创建用户时的默认设置;
useradd -D 选项:设置某默认选项;
-e, --expiredate EXPIRE_DATE:用户账号的过期期限;过期后会被锁定;日期以 YYYY-MM-DD 格式指定
-f, --inactive INACTIVE:密码过期后,账户被彻底禁用之前的天数。0 表示立即禁用,-1 表示禁用这个功能。
#useradd-DGROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skelCREATE_MAIL_SPOOL=yes#useradd-e2020-03-08testuser5#useradd-f3testuser6
为用户提供默认配置的配置文件:
/etc/login.defs, /etc/default/useradd
影子口令文件:/etc/shadow
/etc/shadow每个字段的意思:
登录名:密码:最近一次的修改时间:密码的最短使用期限:密码最长使用期限:提前警告的天数:非活动期限:账号的禁用日期:保留字段
usermod命令:修改账号信息
-c, --comment COMMENT
-d, --home HOME_DIR:修改家目录为新的位置,但一般应该同时使用-m选项以保证原家目录中的文件会移动到新目录中;
-g, --gid GROUP
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:修改时会覆盖原有的附加组;一同使用-a选项,表示为用户添加新的附加组;
-l, --login NEW_LOGIN:修改当前用户的用户名;
-s, --shell SHELL
-u, --uid UID
1234567#grep"mageedu"/etc/passwdmageedu:x:5015:5015:mageedu:/home/mageedu:/bin/bash#usermod-c"thisismageedu"-m-d/opt/mageedu-g5000-G6000-lmageedugood-u3000mageedu#grep"mageedu"/etc/passwdmageedugood:x:3000:5000:thisismageedu:/opt/mageedu:/bin/bash#idmageedugooduid=3000(mageedugood)gid=5000(mage)groups=5000(mage),6000(xueba)
-L, --lock:锁定用户的密码。这会在用户加密的密码之前放置一个“!”
-U, --unlock:解锁用户的密码。这将移除加密的密码之前的“!”
12345678#grep"mageedu"/etc/shadowmageedugood:$6$MKpxQ.kL$o6IBhP9uXHlccwXLUubV.Xp.k4KVJ5mTEtPtDeyoz4O38FRq1wuiyH1vyYlHEy9uqRt7a1Mzzf0bCnCKrtxHL/:16868:0:99999:7:::#usermod-Lmageedugood#grep"mageedu"/etc/shadow#此处可以看到锁定后在密码前面有一个!号mageedugood:!$6$MKpxQ.kL$o6IBhP9uXHlccwXLUubV.Xp.k4KVJ5mTEtPtDeyoz4O38FRq1wuiyH1vyYlHEy9uqRt7a1Mzzf0bCnCKrtxHL/:16868:0:99999:7:::#usermod-Umageedugood#grep"mageedu"/etc/shadowmageedugood:$6$MKpxQ.kL$o6IBhP9uXHlccwXLUubV.Xp.k4KVJ5mTEtPtDeyoz4O38FRq1wuiyH1vyYlHEy9uqRt7a1Mzzf0bCnCKrtxHL/:16868:0:99999:7:::
userdel命令:删除用户账号
userdel [选项] 登录名
-r, --remove:用户主目录中的文件将随用户主目录和用户邮箱一起删除
1112#userdel-rmageedugood#idmageedugoodid:mageedugood:nosuchuser#ls/home/#加上-r选项后同时删除用户的家目录以及用户邮箱centosgentooslackwaretest2testusertestuser5fedoranologintest1test3testuser4testuser6#userdeltest1#ls/home/#未加-r可以找到test1用户的家目录centosgentooslackwaretest2testusertestuser5fedoranologintest1test3testuser4testuser6#idtest1id:test1:nosuchuser
passwd命令:密码管理命令
(1) passwd:修改自己的密码;
(2) passwd username:修改其它用户的密码,仅root有此权限;
密码复杂度:
(1) 不能少于8个字符;
(2) 不能使用与过去的密码太相似的密码;
(3) 应该使用四类字符中的至少三类;
123456#passwdtest2Changingpasswordforusertest2.Newpassword:BADPASSWORD:Thepasswordisshorterthan8charactersRetypenewpassword:passwd:allauthenticationtokensupdatedsuccessfully.
选项:
-l:锁定密码
-u:解锁解密
-d:清除密码
617#grep"test2"/etc/shadowtest2:$6$9E3j7rHK$XBRQVO0SVqivKXi7gHTadSjAkjpZz72YsGa60xHK.uUQlnHhsD8w4ttT466ADR9AuXz8KrBWhxRfnGHeFGXiZ/:16868:0:99999:7:::#passwd-ltest2Lockingpasswordforusertest2.passwd:Success#grep"test2"/etc/shadowtest2:!!$6$9E3j7rHK$XBRQVO0SVqivKXi7gHTadSjAkjpZz72YsGa60xHK.uUQlnHhsD8w4ttT466ADR9AuXz8KrBWhxRfnGHeFGXiZ/:16868:0:99999:7:::#passwd-utest2Unlockingpasswordforusertest2.passwd:Success#grep"test2"/etc/shadowtest2:$6$9E3j7rHK$XBRQVO0SVqivKXi7gHTadSjAkjpZz72YsGa60xHK.uUQlnHhsD8w4ttT466ADR9AuXz8KrBWhxRfnGHeFGXiZ/:16868:0:99999:7:::#passwd-dtest2Removingpasswordforusertest2.passwd:Success#grep"test2"/etc/shadowtest2::16868:0:99999:7:::
与usermod不同的是,passwd在锁定时密码前面有两个!!号
特殊用法:可以避免交互式
--stdin:从标准输入接收密码;
echo "PASSWORD" | passwd --stdin USERNAME
123#echo"mageedu"|passwd--stdintest2Changingpasswordforusertest2.passwd:allauthenticationtokensupdatedsuccessfully.
组管理操作:groupadd,groupmod,groupdel常见命令
groupadd命令:添加组
groupadd [options] group
-g GID:指明GID;
123#groupadd-g2000testgrp#grep"testgrp"/etc/grouptestgrp:x:2000:
-r, --system:系统组;
123#groupadd-rtestgrp1#grep"testgrp1"/etc/grouptestgrp1:x:985:
groupmod命令:修改组信息
groupmod [选项] GROUP
-g GID
-n NEW_NAME:修改组名;
12345#grep"testgrp>"/etc/grouptestgrp:x:2000:#groupmod-g300-ngrptesttestgrp#grep"grptest"/etc/groupgrptest:x:300:
groupdel命令:删除组
groupdel [选项] GROUP
1234#grep"grptest"/etc/groupgrptest:x:300:#groupdelgrptest#grep"grptest"/etc/group
gpasswd命令:为组添加密码
组密码文件:/etc/gshadow
gpasswd [选项] group
-a USERNAME:把用户添加至组中;
-d USERNAME:从此组中移除此用户;
12345678#gpasswd-atest3xuebaAddingusertest3togroupxueba#grep"xueba"/etc/gshadowxueba:$6$bxtP5/lZt$umET9D6NeQrdWDGNG0LfpUQiJ5Poq8Xa0GoaDQqJFvqLVm3GWrCxOtDnCXbGjZngS4S7lumQE9hW18DgWPBrm.::test2,test3#gpasswd-dtest2xuebaRemovingusertest2fromgroupxueba#grep"xueba"/etc/gshadowxueba:$6$bxtP5/lZt$umET9D6NeQrdWDGNG0LfpUQiJ5Poq8Xa0GoaDQqJFvqLVm3GWrCxOtDnCXbGjZngS4S7lu切换用户:
su username
如果继续使用自己的环境变量和配置文件()
如果使用新用户的环境:
su - username
sudo(superuser do) :sudo -l 列出sudo 运行的所有命令
用户和组信息查询: who
who命令用于显示谁登录了系统(show who is logged on),who am i与之相同。另外一个叫whoami的命令,只输出用户账号。而who或者who am i不仅显示账号,还显示终端文件名、时间、来源IP等。
常用方式
格式:who
格式:who am i
简单显示当前登录系统用户的信息永久免费linux服务器,可以轻松的获取当前登录系统的用户列表,包含使用终端登录。
格式:who -a
格式:who -aH
显示所有用户的所有信息(The -a argument of the who command lists all available output for each user on your system.)
-H参数表明显示表头(显示列标题)。
使用示例 示例一
[root@ root]# who root pts/7 Apr 8 20:37 (124.15.246.23)(分别是:登录名 终端 登陆时间 运城主机或x显示 这个是远程主机) [root@ root]# who am i root pts/7 Apr 8 20:37 (124.15.246.23) [root@ root]# whoami root (只输出用户账号) [root@ root]# who -m root pts/7 Apr 8 20:37 (124.15.246.23) [root@ root]#
示例二
who -a或who -aH的输出信息,没有-H参数不输出表头。
USER 用户登陆 LINE 用户登陆使用终端 TIME 用户登陆时间 LDIE 用户空闲时间linux操作系统培训,即至进行操作的时间 PID 用户登陆shell的进程ID
[root@ root]# who -aH NAME LINE TIME IDLE PID COMMENT EXIT Sep 10 16:45 14 id=si term=0 exit=0 system boot Sep 10 16:45 run-level 3 Sep 10 16:45 last=S Sep 10 16:46 1591 id=l3 term=0 exit=0 LOGIN tty3 Jun 23 12:53 29564 id=3
id 显示登陆的用户以及组的相关信息
groups 显示用户或所属的组