管理用户账号和组账号
账号和权限管理
- 管理用户账号和组账号
- 用户账号和组账号概述
- linux基于用户身份对资源访问进行控制
- 用户账号
- 组账号
- UID和GID
- 用户账号文件
- 用户账号文件/etc/passwd
- 保存文件名称、宿主目录、登录shell等基本信息
- 用户账号文件/etc/shadow(影子文件)
- 保存用户的密码、账号有效期等信息
- 用户信息9段:
- chage命令
- 添加用户账号useadd
- 删除用户账户userdel
- 设置/更改用户口令passwd
- 用户账号的初始配置文件
- 组账号文件
- 添加组账号groupadd
- 删除组账号groupdel
- 查询账号信息
- 设置/更改组gpasswd
- 管理目录和文件的属性
- 文件/目录的权限和归属
- 设置文件和目录的权限chmod
- 设置文件和目录的归属chown
- 权限掩码umask
- 本章总结
管理用户账号和组账号
用户账号和组账号概述
linux基于用户身份对资源访问进行控制
用户账号
- 超级用户、普通用户、程序用户
- 超级用户:root用户时linux操作系统中默认的超级用户账号,对本机拥有至高无上的权限,类似于windows操作系统中的administrator用户。只有当进行系统股那里维护任务时,才建议使用root用户登录系统,日常事务处理建议只是用普通用户账户。
root拥有对系统的最高的管理权限 ID=0 - 普通用户:普通用户账号是由root用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限
系统用户UID:1-999(centos7版本)1-499 (centos6版本)UID:即每个用户的身份标示,类似于每个人的身份证号码. - 程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行,如
bin、daemon、ftp、mail等伪用户一般不会用来登录系统的,它主要是用于维持某个服务的正常运行.如: ftp,apache
组账号
基本组(私有组)
附加组(公共组)
基本组:基于某种特定联系(如都需要访问FTP服务)将多个用户集合在一起,即构成一个用户组,表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组):
附加组:若该用户同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)。
UID:即每个用户的身份标示,类似于每个人的身份证号码.
管理员组:root, 0
普通组:GID
- 系统组:1-499 ( centos6) , 1-999 (CENTOS7)
- 普通组:500+ ( Centos6) , 1000+ (CENTOS7)
表示该账户需要密码才能登录,为空时,账户无须密码即可登录组账号
UID和GID
- UID(User IDentity,用户标识号)
- GID(Group IDentify,组标识号)
用户账号文件
- /etc/passwd:保存文件名称、宿主目录、登录shell等基本信息
- /etc/shadow:保存用户的密码、账号有效期等信息
用户账号文件/etc/passwd
保存文件名称、宿主目录、登录shell等基本信息
- 文件位置:etc/passwd
- 每一行对应一个用户的账号记录
[root@localhost ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologinroot:x:0:0:root:/root:/bin/bash
root:用户账号
x:密码占位符 x表示无密码
第一个0:用户账号ID
第二个0:组账号ID
第一个root:用户说明
第二个root:宿主目录
/bin/bash:登录shell
这里的每个字符不代表实际操作上就是这个字符 x、0和root只是替代
root:x:0:0:root:/root:/bin/bash详解如下:
- root:用户名,用户名仅是为了方便用户记忆。Linux系统是通过UID来识别用户身份,分配用户权限。
- x:表示此用户设有密码,但不是真正的密码,真正的密码保存在/etc/shadow文件
- Linux系统把真正的加密密码串放置在/etc/shadow文件中,此文件只有root用户可以浏览和操作,最大限度地保证了密码的安全。
- 补充:注意! ! !,虽然"x"并不表示真正的密码,但也不能删除,如果删除了"x",那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆(只能在使用无密码登录,远程是不可以)。
- 0:用户账号的UID 号。
- 0:所属基本组账号的GID号
- root:描述性信息,此字段只是用来解释这个用户的意义而已
- /root:宿主目录,即该用户登录后所在的默认工作目录
注:通常称为用户的主(家)目录。例如: root主目录为/root,普通用户odysee的主目录为/home/odysee/bin/bash录 shell等信息,用户完成登录后使用的
用户账号文件/etc/shadow(影子文件)
保存用户的密码、账号有效期等信息
- 文件位置:/etc/shadow
- 每一行对应一个用户的的密码记录
[root@localhost ~]# head -2 /etc/shadow
root:$1$55HB4pbx$acHqk4IZiHTZ9cwOZJe8f0:14374:0:99999:7:::
bin:*:14374:0:99999:7:::
[root@localhost ~]# tail -1 /etc/shadow
teacher:$1$BT7teaYX$s2sr6uFUwKhtU.8/8VpzB1:14374:0:99999:7:::
- /etc/shadow文件只有root
- 用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性
- 和/etc/passwd文件一样,文件中每行代表一个用户,同样使用“:”作为分隔符,不用之处在于,每行用户信息被划分为9个字段
用户信息9段:
- 第一列:账户名
- 第二列:存在真正加密的密码,采用SHA512散列算法,更加安全,加密原来用MD5或DES !!和**表示没有密码泵登录,新创建用户也是!!,如果密码前面显示双感叹号表示账户被锁定了
- 第三列:上一次修改密码的时间,从1970年1月1日开始算的,应为1970年时linux诞生日,date -d “1970-01-01 18983 days”可以查看那一天改过
- 第四列:多久之后才可以修改密码,如果是0,则密码可以随时修改 最小修改时间,也就是说该字段规定了从第三个字段(最后一次修改密码的日期)起,此字段是为了针对某些人频繁更改账号密码而设计的
- 第五列:密码有效期,默认99999(273年),表示永久生效
- 第六列:密码到期前的第几天发出告警信息,默认是7天,每次登录系统都会向该账户发出“修改密码”的告警信息
- 第七列:密码过期的宽限天数,过期后的几天还是可以登录的,如果过了宽限天数,系统将不再让此账户登录,也不是提示账户过期,是完全禁用 比如说,此字段规定的宽限天数是10,则代表密码过期10天后失效;如果是0 则代表密码过期后立即失效;如果是-1 则代表密码永远不会失效
- 第八列:账号失效时间,使用自1970年1月1日以来的总天数作为账户失效时间
- 第九列:保留,未使用
chage命令
1、用来修改账号和密码的有效期限,针对目前系统已经存在的用户
chage [选项] 用户名
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码
-M:密码保持有效的最大天数。chage -M 60 root
-w:用户密码到期前,提前收到警告信息的天数
-E:账号到期的日期。过了这天,此账号将不可用
-d:上一次更改的日期
-i:停滞时期。如果一个密码已过期这些天,那么此账号将不可用
-l:列出当前的位置。由非特权用户来确定他们的密码或账号何时过期
2、总结:
第三个字段为:密码最后一次修改的时间 (chage -d)
第四个字段为:密码最小修改间隔时间 (chage -m)
第五个字段为:密码的有效期 (chage -M)
第六个字段为:密码需要变更前的警告天数 (chage -w)
第七个字段为:密码过期后的宽限天贰 (chage -I)
第八个字段为:账号失效时间 (chage -E)
例:
chage -E 2019-04-29 test ##其中,test为用户,用户将在2019年4月29日失效(不可登录)
chage -d 2019-06-30 test ##设置test用户最后一次修改密码的日期为2019年6月30日
chage -d 0 test ##则代表改test用户需立即修改密码
date -d “+45 day” -u ##如果不知道时间可以用date查看
-u:UTC时间
添加用户账号useadd
1、useradd命令
useradd [选项]... 用户名
2、常用选项
- -u、-d、-e、-g、-G、-M、-s
[root@localhost ~]# useradd -d /ftphome/mike -g mike -G ftpuser -s /sbin/nologin mike
-u:指定用户的UID号,要求该UID号码未被其他用户使用(后面要跟UID)
-d:指定用户的宿主目录位置(当与-M一起使用时,不生效 后面要跟宿主目录)
-e:指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式
-g:指定用户的基本组名(或使用GID号)
-G:指定用户的附加组名(或使用GID号)
-M:不建立宿主目录,即使/etc/login.defs系统配置中已设定要建立宿主目录
-s:指定用户的登录shell(-s /sbin/nologin 用户)
例:
useradd zhangsan
id zhagnsan
tail -1 /etc/passwd
tail -1 /etc/shadow
ls /home
3、创建一个辅助管理员账号
- admin,将其基本组指定为“wheel”,附加组指定为“root”,宿主目录指定为“/admin”
useradd -d /admin -g wheel -G root admin
id admin
在账号管理工作中,有时候会希望在新建账号的同时指定该账号的有效期限,或者要求新建的账号不能登录系统(如仅用于访问ftp服务),这时可以分别使用“-e”和“-s”选项。
例如,执行以下操作可以创建一个名 为lisi的ftp账号(禁止中端登录),该账号将于2021-12-31失效
useradd -e 2021-07-04 -s /sbin/nologin lisi
删除用户账户userdel
1、userdel命令
userdel [-r] 用户名
2、添加-r选项时,表示连用户的宿主目录一并删除
[root@localhost ~]# useradd stu01
[root@localhost ~]# ls -ld /homelstu01/
drwx------ 2 stu01 stu01 4096 09-09 12:38 /homelstu01/
[root@localhost ~]# userdel -r stu01 删除用户帐号stu01
[root@localhost ~]# ls -ld /homelstu01/
ls: /homelstu01/:没有那个文件或目录
3、当用户被删除时却显示主目录依然存在
[root@localhost ~]# useradd -u 1402 -g oinstall -G dba,asmdba oracle
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
正在创建信箱文件: 文件已存在解决:
[root@localhost ~]# userdel -rf grid
设置/更改用户口令passwd
1、passwd命令
passwd [选项]... 用户名
2、常用选项
- -d、-l、-S、-u
不指定用户名时,修改当前账号的密码
-d:清空指定用户的密码,金使用用户名即可登录系统
-l:锁定用户账户
-S:查看用户账户状态(是否被锁定)
-u:解锁用户账户passwd -d zhang
passwd -l zhang
passwd -S zhang
passwd -u zhang
3、批量添加密码
调用管道符,给zhangsan用户设置密码“123”,为了方便系统管理,passwd命令提供了 --stdin选项,用于批量给用户设置初始密码
echo “123” | passwd --stdin zhangsan
4、usermod命令
-l、-L、-U、-u、-d、-e、-g、-G、-s
-l:更改用户账号的登录名称(Login Name)
-L:锁定用户账户
-U:解锁用户账户
-u:修改用户的UID
-d:修改用户的宿主目录位置
-e:修改用户的账户失效时间,课使用YYYY-MM-DD的日期格式
-g:修改用户的基本组名(或使用GID号)
-G:修改用户的附加组名(或使用GID号)
-s:指定用户的登陆shell
用户账号的初始配置文件
1、文件来源
- 新建用户账户时,从/etc/skel目录中复制而来
2、主要的用户初始配置文件
- ~/.bash_profile
- ~/.bashrc
- ~/.bash_logout
添加一个新的用户账号后,useradd命令会在该用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel,几倍呢上都是隐藏文件,较常用的初始配置文件包括“.bash_logout”、“.bash_profile”和".bashrc"。其中,“.bash_profile”文件中的命令将在该用户每次登录时被执行;“.bashrc”文件中的命令会在每次加载“/bin/bash”程序(当然也包括登录系统)时执行;而“.bash_logout”文件中的命令将在用户每次退出登录时执行。理解这些文件的作用,可以方便我们安排一些自动运行的后套管理任务。在“.bashrc”等文件中,可以添加用户自己的设置可执行语句(如linux命令行、脚本控制语句等),以便自动完成相应的任务。
- ~/.bash_profile
示例代码中为用户添加了2个环境变量(JAVA_HOME和CLASSPATH),并修改了已有环境变量PATH的值(PATH的查找是从以前开始查找,找到就返回)CLASSPATH环境变量的值实在JAVA运行时查找加载类的默认CLASSPATH
- .bashrc
例子中定义了路径,语言,命令别名(使用rm删除命令时总是加上-i参数需要用户确认,使用ls命令列出文件列表时加上颜色显示)。每次修改.bashrc后,使用source ~/.bashrc(或者 . ~/ .bashrc)就可以立刻加载修改后的设置,使之生效。
一般会在.bash_profile文件中显示调用.bahsrc。登录linux启动bash时首先会先去读取~/ .bash_profile文件,这样~/ .bashrc也就得到执行了,你的个性化设置也就生效了
关于环境变量的读取顺序:
用户登录 --> 加载~/ .bash_profile --> bash_profile中配置了首先时使~/ .bashrc生效
- .bash_logout
用途:用户登出时执行的命令
#~/ .bash_logout
#在当前用户登出时,打印出Logout和当前的时间
echo "Logout,'data'"
例:
如果需要每个用户登出时都清除输入的命令历史记录,可以在/etc/skel/.bash_logout文件中添加下面这行
rm -f $HOME/.bash_history
这样,当用户每次注销时,.bash_history文件都会被删除
组账号文件
1、与用户账号文件相类似
- /etc/group:保存组账号基本信息
- /etc/gshadow:保存组账号的密码信息
[root@localhost~]#grep"adm" /etc/group
sys:3:root,bin,adm
adm:x:4:root,adm,daemon
adm:组账号名daemon:组成员列表
与组账号相关的配置文件也有两个,分别是/etc/group和/etc/gshadow。前者用于保存组账号名称、GID号、组成员等基本信息,后者用于保存组账号的加密密码字串等信息(但是很少使用到)。某一个组账号包含哪些用户成员,将会在group文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用“,”(逗号)分隔开。
grep "^root" /etc/group #//检索root组包括那些用户
grep "root" /etc/group #//检索那些组包括root用户
添加组账号groupadd
1、groupadd命令
groupadd [-g GID] 组账号名
2、示例
[root@localhost~]#groupadd -g 1000 market
[root@localhost~]#tail -1 /etc/group
market:x:1000:
删除组账号groupdel
1、groupdel命令
groupdel 组账号名
2、示例
[root@localhost~]#groupdel market #删除组账号market
[root@localhost~]#grep "market" /etc/gourp
查询账号信息
1、finger命令
- 查询用户账号的详细信息
finger [用户名]
2、w、who、users命令
- 查询已登录到主机的用户信息
w、who、users #查询已登录到主机的用户信息通常使用tty来简称各种类型的终端设备,Centos7系统,tty1表示图形界面,tty2-tty6表示文字界面,可以用Ctrl+Alt+F1-F6切换。
按ctrl+A1t+F2登陆,执行w命令,查看使用的终端就是tty2
- User:登录用户名
- TTY:登录后系统分配的终端号
- From:远程主机名,即从哪登录的login@:何时登录
- IDLE:用户空闲时间。这是个计时器,一旦用户执行任何操作,改计时器就会被重置。
- JCPU:和终端连接的所有进程占用时间。包括当前正在运行的后台作业占用时间
- PCPU:当前进程所占用时间
- WHAT:当前正在运行进程的命令行
pts说明是用远程工具连接的,比如1xshell,后面的数字代表登录的时间顺序,越小证明登录的越早
设置/更改组gpasswd
1、gpasswd命令
- 设置组账号密码(极少用)、添加/删除组成员
gpasswd [选项]... 组账号名
2、常用选项
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入组
例:
useradd mike
gpasswd -a mike root #确认mike用户已加入root组
groups mike
管理目录和文件的属性
文件/目录的权限和归属
1、访问权限:
- 读取r:允许查看文件内容、显示i目录列表
- 写入w:允许修改文件内容,允许在目录中新建、移动删除文件或子目录
- 可执行x:允许运行程序、切换目录
2、归属(所有权)
- 属主:拥有该文件或目录的用户账户
- 属组:拥有该文件或目录的组账户
查看文件/目录的权限和归属
[root@localhost~]#ls-l install.log
-rw-r--r-- 1 root root 34298 04-02 00:23 install.log
文件类型、权限 属主 属组
权限项 | 读 | 写 | 执行 | 读 | 写 | 执行 | 读 | 写 | 执行 |
---|---|---|---|---|---|---|---|---|---|
字符表示 | r | w | x | r | w | x | r | w | x |
数字表示 | 4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
权限分配 | 文件所有者 | 文件所属组 | 其他用户 |
root用户、 root组
如"drwxr-xr-x”和"-rw-r–r--"。权限字段由四部分组成,各自的含义如下所述。
- 第1个字符:表示该文件的类型,可以是 d(目录)、b(块设备文件)、c(字符设备文件)、"-”(普通文件)、字母"l”(链接文件)等。
- 第2~4个字符:表示该文件的属主用户(User)对该文件的访问权限。
- 第5~7个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限。
- 第8~10 个字符:表示其他任何用户 (other)对该文件的访问权限。
- 第11 个字符:这里的"."与 SELinux有关,目前不必关注
设置文件和目录的权限chmod
1、chmod命令
chmod [ugoa] [+ - =] [rwx] 文件或目录...
u、g、o、a分别表示属主、属组、其他用户、所有用户
+ - =分别表示增加、去除、设置权限
r、w、x分别表示读、写、运行权限
或
chmod nnn 文件或目录...
nnn表示三位八进制数
2、常用选项
-R:递归修改指定目录下所有子项的权限
- 上述格式中,字符组合"[ugoa…] [±=] [rwx ]"或数字组合"nnn"的形式表示要设置的权限模式。其中,"nnn"为需要设置的具体权限值,如"755""644”等;而“[ugoa…] [±=] [rwx]"的形式中,三个组成部分的含义及用法如下所述。
- "ugoa"表示该权限设置所针对的用户类别。"u"代表文件属主,"g"代表文件属组内的用户,"o"代表其他任何用户,"a"代表所有用户 (u、g、o 的总和)。
- "±=“表示设置权限的操作动作。”+“代表增加相应权限,”-“代表减少相应权限,”=”代表仅设置对应的权限。
- “rwx"是权限的字符组合形式,也可以拆分使用,如"r”"rx”等。
设置文件和目录的归属chown
1、chown命令
chown 属主 文件或目录
chown :属主 文件或目录
chown 属主:属主 文件或目录
2、常用选项
-R:递归修改指定目录下所有文件、子目录的归属
权限掩码umask
1、umask作用:
- 控制新建的文件或者目录的权限
- 默认权限去除umask的权限为新建的文件或者目录的权限
2、umask设置:umask 022
2、umask查看:umask
3、示例
- 将umask设为000,新建目录或者文件,查看权限
- 将umask设为022,新建目录或者文件,再查看权限
[root@localhost ~] # umask 000
[root@localhost ~]# mkdir /umask1
[root@localhost ~]# ls -ld /umask1/
drwxrwxrwx 2 root root 4096 3 月13 17:02 /umask1/
[root@localhost ~] # umask 022
[root@localhost ~] # mkdir /umask2
[root@localhost ~]# ls -ld / umask2/
drwxr-xr-x 2 root root 40963月13 17:03 /umask2/
本章总结
- 用户账号管理(useradd,passwd、usermod、userdel)
- 组账号管理(groupadd、gpasswd、groupdel)
- 用户账号文件与组账号文件
- 查询账号相关信息的命令(groups、id、finger、w)
- 设置目录与文件权限(chmod)
- 设置目录与文件归属(chown)
管理用户账号和组账号相关推荐
- 账号和权限管理之管理用户账号和组账号
账号和权限管理之管理用户账号和组账号 前言 1.用户介绍 2.组的分类 3.UID和GID 4.用户账号文件 5.添加用户账号 6.设置/更改用户口令 7.修改用户的账户属性 八.passwd与use ...
- 账号和权限管理——管理用户账号和组账号(一)
一.用户账号和组账号概述 1.用户账号 在 Linux 操作系统中,根据系统管理的需要将用户账号分为不同的类型,主要包括超级用户.普通用户和程序用户,各类型拥有的权限.担任的角色也各不相同. 超级用 ...
- Linux--账号和权限管理(用户账号和组账号,用户账号和组帐号管理,文件和目录的权限和归属)
文章目录 前言 一.用户账号和组账号 1.1用户账号 1.2组账号 1.3UID号和GID号 1.4用户账号文件 1.4.1用户账号文件/etc/passwd 1.4.2用户账号文件/etc/shad ...
- 用户账号和组账号概述
Linux用户及权限管理 文章目录 Linux用户及权限管理 1用户账号和组账号概述 2用户账号文件/etc/passwd 3影子文件/etc/shadow/ 3.1针对系统已存在的用户修改账号和密码 ...
- Linux中用户账号和组账号的介绍
用户账号和组账号概述: 众所周知,Linux是基于用户身份对资源进行访问控制的. 用户账号: 超级用户:root 普通用户:普通用户账号一般只能在自己的宿主目录 ...
- 【Linux】——用户账号和组账号
文章目录 1.UID and GID 1.1 用户账号和组账号概述 1.2 用户账号文件/etc/passwd 1.3 用户账号文件/etc/shadow 2. UID 2.1 添加用户账号 2.2 ...
- linux如何标识用户账号和组账号,linux管理用户和组
唯一标识: UID GID (管理员root的UID为0) 组的分类: 基本组 附加组(从属组) 基本组:Linux自己创建的组,与用户同名,系统自动将用户加入 附加组(从属组):管理员自建创建,管 ...
- linux怎么查看组用户名和密码,Linux基础命令(十一)——用户和组账号管理
注:文档有点长,前面部分说的是一些比较概念的东西,看命令的话可以直接看后面部分. 一.用户账号和组账号概述 与Windows操作系统对比,Linux系统中的用户账号和组账号的作用在本质上是一样的,同样 ...
- 深入理解Linux系统中的用户和组账号
为什么80%的码农都做不了架构师?>>> 一.Linux中的用户和组账号概述 与Windows操作系统相比,Linux系统中的用户和组账号的作用本质上是一样的,同样都是 ...
最新文章
- 【BZOJ1015】【JSOI2008】星球大战 并查集
- 文件bookDetails.html,查看源码: BookShopping.rar_bookdetails.jsp - VerySource
- 30行代码消费腾讯人工智能开放平台提供的自然语言处理API
- WINCE6开机进度条
- python运算符重载
- 使用 HTML5 canvas 进行 Web 绘图
- 读书笔记——Accelerated C++ Chapter 12 使类对象获得数值功能
- SVN共享链接时,避免使用服务器地址,要使用根目录(^)
- C语言实例第7期:实现投票统计功能
- 3DMax游戏建模常用基本命令
- 软件系统服务器改造方案,并实施系统软件国产化改造方案 审计署.doc
- kubernetes基础环境安装
- 【C语言】飞翔的小鸟游戏
- Redis学习之scard命令
- 大数据权限管理-Security和hue案例操作(3)
- 只需三步!使用3DCG软件Blender制作时尚图片
- 云原生会统领SaaS服务的原因
- 终于可以向重复的鉴权代码说byebye 了 -- (玩转 AOP和Annotation )
- 技巧】利用chromg浏览器自动翻译外文网页的设置方法---电脑版
- 网络协议TCPIP、IPXSPX、NETBEUI简介