本章结构
管理用户账号和组账号
管理目录和文件的属性
用户账号和组账号概述
- Linux基于用户身份对资源访问进行控制
- 用户帐号
- 超级用户、普通用户、程序用户
组帐号
- 基本组(私有组)
- 附加组(公共组)
oUID和GID
- UID (User IDentity,用户标识号)
- GID (Group lDentify,组标识号)
用户账号文件letclpasswd
保存用户名称、宿主目录、登录Shell等基本信息
- 文件位置:letc/passwd
- 每一行对应一个用户的帐号记录
[root@localhost ~]# head -2 letc/passwd
root:x:0:O:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
root:用户账号 0:用户账号id :root:用户说明 /root:宿主目录 bash:登录shell :0::组账号id :密码占位符
用户账号文件/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:…:
添加用户账号
useradd命令
useradd [选项].…用户名
常用选项
- -u、-d、-e、-g、-G、-M、-s
[root@localhost ~]# useradd -d /ftphomelmike -g mike -G
ftpuser -s /sbin/nologin mike
chage命令:_用来修改帐号和密码的有效期限,针对目前系统已经存在的
chage[选项]用户名
-m:密码可便改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。chage -M60 root
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
例: chage -E 2019-04-29 test //其中,test为用户,用户将在201
chage -d 2019-06-30 test //设置test用户最后一次修改密码的日期为2019年6月30日
chage -d 0 test //则代表该test用户需立即修改密码
date -d "+45 days" -u //如果不知道时间可以用date查看
-u : UTc时间
passwd又件账亏记采评细说明
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/ bin/ bash录 shell等信息,用户完成登录后使用的
/etc/ shadow(影子文件)
/etc/shadow文件只有root
用户拥有读权限,其他用户没有任何权限,这样就保证了用户密码的安全性
和/etc/passwd 文件一样,文件中每行代表一个用户,同样使用":"
作为分隔符,不同之处在于,每行用户信息被划分为9个字段
第一列:账户名
第二列:存放真正加密的密码,采用SHA512散列算法,更加安全!!和*表示没有密码不能登陆,新创建用户也是!!,如果密码前面显示双感叹号表示该账户被锁定了
第三列:上一次修改密码的时间,从1970年1月1日开始算的,因为1970年是linux的诞生日,date -d"1970-01-01 15775 days”可以查看哪一天改过
第四列:多久之后才可以修改密码,如果是0,则密码可以随时修改
第五列:密码有效期,默认99999,表示永久生效
第六列:密码到期前的第几天发出告警信息,默认是7天,每次登录系统都会向该账户发出"修改密码”的警告信息
第七列:密码过期的宽限天数,过期后的几天还是可以登陆的,如果过了宽限天数,系统将不再让此账户登陆,也不会提示账户过期,是完全禁用
第八列:账号失效时间,使用自~1970年1月1日以来的总天数作为账户的失效时间
第九列:保留,未使用
用户分类
Linux用户三种角色
超级用户:root 用户是 Linux操作系统中默认的超级用户账号,对本主机拥有至高无上的权限,类似于 windows操作系统中的 Administrator 用户。只有当进行系统管理、维护任务时,才建议使用root用户登录系统,日常事务处理建议只使用普通用户账号。root拥有对系统的最高的管理权限ID=O
普通用户:普通用户账号需要由root 用户或其他管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限
系统用户UID:1-999(centos7版本)1-499(centos6版本)
UID:即每个用户的身份标示,类似于每个人的身份证号码.
程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一不允许登录到系统,而仅用于维持系统或某个程序的正常运行,如 bin、daemon、ftp、mail等
程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一不允许登录到系统,而仅用于维持系统或某个程序的正常运行,如 bin、daemon、ftp、mail等
伪用户一般不会用来登录系统的,它主要是用于维持某个服务的正常运行.如: ftp,apache
UID:即每个用户的身份标示,类似于每个人的身份证号码.
管理员组:root, o
普通组:GID
- 系统组:1-499 ( centos6) , 1-999 (CENTOS7 )
- 普通组:500+ ( centos6) , 1000+ (CENTOS7)
基本组:基于某种特定联系(如都需要访问FTP服务)将多个用户集合在一起,即构成一个用户组,表示该组内所有用户的账号称为组账号。每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组)
附加组:若该用户同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组〉。
添加用户账号
-u:指定用户的UID号Ⅰ要求该UID号码未被其他用户使用。
-d:指定用户的宿主目录位置(当与-M一起使用时,不生效)。
-e:指定用户的账户失效时间,可使用YYYY-MM-DD的日期格式。
-g:指定用户的基本组名(或使用GID 号)。
-G:指定用户的附加组名(或使用GID 号)。
-M:不建立宿主目录,即使/etc/login.defs 系统配置中已设定要建立宿主目录。
-s:指定用户的登录shell。
useradd zhangsan
id zhangsan
tail -1 /etc/passwd
tail -1 /etc/ shadow
ls / home
总结:
第三个字段为:密码最后一次修改的时间 ( chage -d)
第四个字段为:密码最小修改间隔时间 ( chage -m)
第五个字段为:密码的有效期 ( chage -M)
第六个字段为:密码需要变更前的警告天数 ( chage -w)
第七个字段为:密码过期后的宽限天数 ( chage -I)
第八个字段为:账号失效时间 ( chage -E)
设置/更改用户口令passwd
passwd命令
passwd[选项]...用户名常用选项
-d、-l、-S、-u、
不指定用户名时,修改当前账号的密码
-d:清空指定用户的密码,仅使用用户名即可登录系统。
-l:锁定用户账户。
-s:查看用户账户的状态(是否被锁定)。
-u:解锁用户账户。
修改用户账号的属性usermod
usermod命令
usermod [选项]..... 用户名
常用选项
-i、L、-U
以下选项与useradd命令中的含义相同
-u、-d -e、-g、G、-s
usermod命令
参数
-l:更改用户账号的登录名称( Login Name ) 。
-L:锁定用户账户。
-U:解锁用户账户
u:修改用户的UID号。
-d:修改用户的宿主目录位置。
-e:修改用户的账户失效时间,可使用YYYY-MM-DD的日期格式
-g:修改用户的基本组名(或使用GID 号)。
-s:指定用户的登录shell。
mv / admin / home /
usermod -d / home / admin
cat /etc/passwdl grep admin
先设置admin密码,一般centos7如不设置密码账号不能锁定
passwd admin
usermod -L admin
passwd -S admin
删除用户账号userdel
userdel命令
userdel [-r] 用户名
添加-r选项时,表示连用户的宿主目录一并删除
[root@localhost ~]# useradd stu01
[root@localhost ~]# Is -ld /homelstu01/
drwx------ 2 stuo1 stu01 4096 09-09 12:38 /homelstuo1/
[root@localhost ~]# userdel -r stu01
[root@localhost ~]# ls -ld /homelstu01/
ls: /homelstuO1/:没有那个文件或目录
userdel[-r]用户名
添加-r选项时,表示连用户的宿主目录一并删除
id zhangsan
userdel -r zhangsan
ls -ld / home / zhangsan
用户账号的初始化配置文件
文件来源
新建 用户账号时,从/etc/skel目录中复制而来
主要的用户初始化配置文件
~/.bash_profile
~/.bashrc
~/.bash_logout
添加一个新的用户账号后,useradd命令会在该用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel/,基本上都是隐藏文件,较常用的初始配置文件包括".bash_logout"、".bash_profile"和".bashrc”。其中,".bash_profile"文件中的命令将在该用户每次登录时被执行:".bashrc"文件中的命令会在每次加载"/bin/Bash"程(当然也包括登录系统)时执行:而".bash_logout"文件中的命令将在用户每次退出登录时执行。理解这些文件的作用,可以)便我们安排一些自动运行的后台管理任务在".bashrc"等文件中,可以添加用户自己设置的可执行语句(如Linux命令行、脚本控制语句等),以便自动完成相应的任务。
如果希望为所有用户添加登录后自动运行的命令程序、自动设置变量等,可以直接修改/etc
目录下的类似文件,如/etc/bashrc 文件、/etc/profile 文件。例如,执行以下操作可以为所有用户自动设置myls命令别名
vi /etc/bashrc
alias myls='/bin/ls -lhr'
source /etc/bashrc
组账号文件
与用户帐号文件 相类似
- /etc/group: 保存组账号
- /etc/gshadow:保存组账号的密码
[root@localhost ~]# grep "adm" letclgroup
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
与组账号相关的配置文件也有两个,分别是/etc/group和/etc/gshadow。前者用于保存组账号名称、GID号、组成员等基本信息,后者用于保存组账号的加密密码字串等信息(但
是很少使用到)。某一个组账号包含哪些用户成员,将会在 group文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用" ,”(逗号)分隔
grep "^root" /etc/group #//检索root组包括哪些用户
grep "root" /etc/group //检索哪些组包括root用户
添加删除组成员gpasswd
gpasswd命令
设置组账号密码(极少 用)、添加/删除组成员
gpasswd [选项]..... 组账号名
常用选项
-a:向组内添加一个用户
-d:从组内删除一个用户成员
-M:定义组成员列表,以逗号分隔
删除组账号groupdel
groupdel命令
groupdel 组账号名
示例
[root@localhost ~]# groupdel market
[root@localhost ~]# grep "market" letclgroup
groupadd命令l
groupadd[-g GID]组账号名
groupadd -g i200 market
tail -1 /etc/group
gpasswd命令
-a:添加用户到组
-d:从组删除用户
-A:指定管理员
-M:指定组成员和-A的用途差不多
-r:删除密码
-R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
useradd mike
gpasswd -a mike root#确认mike 用户已加入root组
groups mike
gpasswd -d webmaster root #//确认webmaster用户已退出root 维正在将用户广 "webmaster"从"root"组中]除
查询账号信息
groups命令
- 查询用户所属的组
groups [用户名]
id命令
- 查询用户身份标识
id [用户名]
finger命令
查询用户账号的详细信息
finger [ 用户名]
w、Who、users命令
查询已登录到主机的用户信息
w、 who. users事查询已登录到主机的用户信息
通常使用tty来简称各种类型的终端设备,centos7系统,ttyl表示图形界面,tty2-tty6表示文字界面,可以用ctrl+Alt+F1-F6切换。
按ctr1+A1t+F2登陆,执行w命令,查看使用的终端就是tty2
User:登录用户名
TTY:登录后系统分配的终端号From:远程主机名,即从哪登录的
login@:何时登录
IDLE:用户空闲时间。这是个计时器,一旦用户执行任何操作,改计时器就会被重置。JCPU:和终端连接的所有进程占用时间。包括当前正在运行的后台作业占用时间
PCPU:当前进程所占用时间
WHAT:当前正在运行进程的命令行
pts说明是用远程工具连接的,比如1xshell,后面的数字代表登录的时间顺序,越小证明登录的越早。
查看目录和文件的属性
root用户、 root组
如"drwxr-xr-x"和"-rw-r--r--"。权限字段由四部分组成,各自的含义如下所述。
第1个字符:表示该文件的类型,可以是d(目录)、b(块设备文件)、c(字符设备文件)、“-”(普通文件)、字母”l”(链接文件)等。
第2~4个字符:表示该文件的属主用户(User)对该文件的访问权限。
第5~7个字符:表示该文件的属组内各成员用户(Group)对该文件的访问权限。
第8~10 个字符:表示其他任何用户(other)对该文件的访问权限。
第11个字符:这里的”."与 SELinux有关,目前不必关注
上述格式中,字符组合"[ugo...][+-=] [rwx]"或数字组合"nnn"的形式表示要设置的权限模式。其中,"nnn"为需要设置的具体权限值,如"755""644"等;而“[ugoa..][+--] [ rwx]"的形式中,三个组成部分的含义及用法如下所述。
文件/目录的权限和归属
访问权限
- 读取r:允许查看文件内容、显示目录列表
- 写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录
- 可执行x:允许运行程序、切换目录
归属(所有权)
- 属主:拥有该文件或目录的用户帐号
- 属组:拥有该文件或目录的组帐号
suid
权限代表不管是谁执行此程序,将继承此程序所有者的权限。比如修改密码命令passwd,因此每个用户都可以用此命令修改自己的密码,由于其继承的是属主root用户的权限。
我当时就想,如果passwd命令真的继承属主root的权限的话,那我可不可以用vbirduser1用户使用passwd命令修改vbirduser2的密码?
当我去尝试的时候其实非也,他会提示你只有root用户在用passwd命令的时候可以指定用户名但是如果对其他一些比较危险的命令设置sUID权限的话会造成很大的安全问题。比如vim cat等,这样普通用户使用者会root附体,权限极高。
[rootelocalhost aa] #which passwd
/usr/bin/passwd
[root@localhost aa]#ll /usr/bin/passwd
主此处s表示当使用这个命令程序时,把当前用户当成所属主
-rwSr一xr-x. 1 root root 278326月10 2014 /usr/bin/passwd
[root@localhost aa]#which vim
/usr/ bin/vim
查看文件/目录的权限和归属
[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 |
| 权限分配 | 文件所有者 | 文件所属组 | 其他用户 | ||||||
注:-:为0
设置文件和目录的权限chmod
chmod命令
chmod [ugoa] [+-=] [rwx] 文件或目录
或
chmod nnn 文件或目录....
常用选项
-R:递归修改指定目录下所有子项的权限
设置文件和目录的归属chown
chown命令
chown 属主 文件或目录
chown :属组 文件或目录
chown属主:属组 文件或 目录
常用选项
-R:递归修改指定目录下所有子文件、子目录的归属。
权限掩码umask
[root@kgc ~] #umask 000
[ root@kgc ~j # mkdir /umask1
[root@kgc ~]#ls -ld /umask1/
drwxrwxrwx 2 root root 4096 3 月13 17:02 /umask1/
[root@kgc ~]# umask 022
[root@kgc ~j # mkdir /umask2
[root@kgc ~]#ls -ld /umask2/
drwxr-xr-x 2 root root 4096 3 月13 17:03 /umask2/
umask作用
- 控制新建的文件或者目录的权限
- 默认权限去除umask的权限为新建的文件或者目录的权限
umask设置:umask 022
umask查看: umask
示例
- 将umask设为000,新建目录或者文件,查看权限
- 将umask设为022,新建目录或者文件,再查看权限
总结
用户账号管理(useradd、passwd、usermod、userdel)
组账号管理(groupadd、gpasswd、groupdel)
用户账号文件与组账号文件
查询账号相关信息的命令(groups、id、finger、w)
设置目录与文件权限(chmod)
设置目录与文件归属(chown)



