目录
一、管理用户账户1.1 用户账号1.2 UID号1.3 用户账号文件1.3.1 passwd文件中的配置行格式1.3.2 shadow 文件中的配置行格式
1.4 用户账号管理1.4.1 useradd命令——添加用户账号1.4.2 用户账号的初始配置文件1.4.3 passwd——设置/更改密码口令1.4.4 usermod命令——修改用户账号属性1.4.5 userdel命令——删除用户账号
二、管理组账号2.1 组账号文件2.2 添加、删除、修改组账号2.2.1 groupadd命令——添加组账号2.2.2 gpasswd命令——添加、设置、删除组成员2.2.3 groupdel命令——删除组账号2.2.4 useradd命令——添加用户账号时指定组2.2.5 usermod命令——修改用户账号属性
2.3 查询账号信息2.3.1 id——查询用户账号的身份标识2.3.2groups命令——查询用户账号的登录属性2.3.3 finger命令——查询用户账号的登录属性2.3.4 w命令——查询当前主机的用户登录情况
三、文件的权限及归属3.1 查看文件的权限及归属3.2 设置文件的权限及归属3.2.1 设置文件权限——chmod3.2.2 设置文件的归属——chown
3.3 权限掩码 umask
一、管理用户账户
linux系统中的用户账号和组账号的作用和windows是一样的,同样都是基于用户身份来控制对资源的访问,只不过在表现形式及个别细节有些许差异。
1.1 用户账号
linux系统中,根据系统管理的需要将用户账号分为不同的类型,其拥有的权限、担任的角色也各不相同,主要包括超级用户、普通用户和程序用户。
超级用户:root用户是linux系统中默认的超级用户账号,对本机拥有最高的权限,相当于windows系统中的Administrator用户。只有当进行系统管理、维护任务时,才建议使用root用户登录系统,日常处理建议只使用普通用户账户。普通用户:普通用户的账号需要由root或者其他管理员用户创建,拥有的权限受到一定限制,一般只在自己的宿主目录中拥有完整权限。程序用户:在安装linux系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到程序,而仅用于维持系统或某个程序的正常运行。
1.2 UID号
linux对于每一个用户账号都有一个数字形式的身份标记,称为UID(User IDentity,用户标识号),对于核心系统来说,UID作为区分用户的基本依据,原则上每个用户的UID号应该是唯一的。root账号的UID号为固定值0,而程序用户的UID号默认为1~999,1000 ~ 60000的UID号默认分配给普通用户使用。
1.3 用户账号文件
linux系统中的用户账号、密码等信息均保存在相应的配置文件中,直接修改这些文件或者使用用户管理命令都可以对用户账号进行管理。用户账号相关的配置文件主要有两个,分别是/etc/passwd、/etc/shadow。/etc/passwd用于保存用户名称、宿主目录、登录Shell等基本信息,/etc/shadow用于保存用户的密码、账号有效期等信息。这两个配置文件中每一行对应一个用户账号,不同配置之间用 “:”隔开。
1.3.1 passwd文件中的配置行格式
系统中所有用户的账号基本信息都保存在 /etc/passwd 文件中,该文件为文本文件,所有用户都可以读取文件内容。 查看/etc/passwd文件中开头两行
[root@localhost ~]# head -2 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
在程序开头,包括超级用户root及程序用户的账号信息,系统中新增的用户账号信息将保存到passwd文件的末尾。passwd文件的每一行内容中,包含了七个用冒号“:”分隔的配置字段,从左到右各配置字段的意义分别如下所述。
字段字段内容解释
第1字段用户账号用户账号的名称,也是登录系统时使用的识别名称第2字段密码占位符表示自己有密码第3字段用户账号ID(UID)用户账号的UID号第4字段组账号ID(GID)所属基本组账号的GID号第5字段用户说明用户全名,可以填写与用户相关的说明信息第6字段宿主目录(家目录)该用户登录后所在的默认工作目录第7字段登录Shell登录shell等信息,用户完成登录后使用的shell
1.3.2 shadow 文件中的配置行格式
shadow文件又被称为“影子文件”,其中保存有各用户账号的密码信息,因此对shadow文件的访问应该进行严格限制,默认只有root用户能够读取文件中的内容,而不允许直接编辑该文件中的内容。查看/etc/shadow 文件开头、末尾的两行。
[root@localhost ~]# head -2 /etc/shadow
root:$6$pDEDTo8u6gWQRKEi$jtFRsFjOk4jCzSjA8TCH1f/PCTR/xnf1TQP71OwDhYcLiH4F6XtbJpaCx1deWrHEhGUoLrqLCpBiaIS4VrNDW0::0:99999:7:::
bin:*:17834:0:99999:7:::
[root@localhost ~]# tail -2 /etc/shadow
lisi:$6$yjA/exC/$pcIvOGH/oIPn41PMgtLPtz7A9p8dOttfjQ3Dmr2kRjVr03/AkVKDl5r6glovbtcLGkn/OJ7t4BdgFI3j78jQK/:18437:0:99999:7:::
ntp:!!:18437::::::
shadow文件的每一行内容中,包含了九个用冒号“:” 分隔的字段,从左到右配置字段的含义分别如下所述。
字段字段内容解释
第1字段root用户账号名称第2字段红色字体部分使用MD5加密的密码字串信息,当为“*”或者“!!”时表示此用户不能登录到信息,若该字段内容为空,则该用户无需密码即可正常登陆系统第3字段14374上次修改密码的时间,表示从1970年1月1日起到最近一次修改密码时间隔的天数第4字段0密码的最短有效天数。自本次修改密码后,必须至少经过该天数才能再次修改密码,默认值为0,表示不进行限制。第5字段99999密码的最长有效天数,自本次修改后,经过该天数以后必须再次修改密码。默认值为99999,表示不进行限制。第6字段7提前多少天警告用户口令将过期,默认值为7第7字段在密码过期后多少天内禁用此用户第8字段账号失效时间,此字段制定了用户作废的天数(从1970年1月1日算起),默认值为空,表示账号永久可用第9字段保留字段,目前没有特定用途
1.4 用户账号管理
1.4.1 useradd命令——添加用户账号
使用useradd命令添加用户账号时: 在/etc/passwd文件和/etc/shadow文件的末尾增加该用户账号的记录。 未指定明确的宿主目录,则在home目录下自动创建与该用户账号相同的宿主目录,并创建各种初始配置文件。 没有明确指定用户所属的组,则自动创建与该账户名相同的基本组账号,账号信息将被保存 到/etc/gshadow、/etc/group 文件中。useradd命令可以用于添加用户账号,命令的基本格式如下:
useradd [选项] 用户名
[root@localhost ~]# useradd tom1
选项:
常用选项有:
-u 指定用户的UID号,要求UID号码未被其他用户使用
-d 指定用户的宿主目录位置(当与 -M 一起使用时,不生效)
-e 指定用户的账户失效时间,可以使用YYYY-MM-DD的日期格式
-g 指示基本组
-G 指示附加组
-M 不建立宿主目录,即使/etc/login.defs系统配置中已设置要建立宿主目录
-s 指定用户的登录shell
[root@localhost ~]# useradd -e 2020-12-31 -s /sbin/nologin 66
/sbin/nologin后用户无法直接登录和被切换登录
1.4.2 用户账号的初始配置文件
添加一个新的用户账号后,useradd命令会在该用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录“/etc/skel”,基本都是隐藏文件,较常使用的初始配置文件包括“bash_logout”".bash_profile"".bashrc"。其中".bash_profile"文件中的命令将在该用户每次登录时执行;".bashrc"文件中的命令将在该用户每次加载“/bin/Bash”程序(当然也包括登录系统)时执行;而“bash_logout”文件中的命令将在用户每次退出登录时执行。例:在.bashrc 写入 echo 1111111,在.bash_profile 写入22222
WARNING! The remote SSH server rejected X11 forwarding request.
Last login: Sun Jul 5 17:30:02 2020 from 192.168.233.1
1111111 ### 发现.bashrc 执行的优先级更高
222222
[tom@localhost ~]$
1.4.3 passwd——设置/更改密码口令
root用户有权更改其他账号名称的密码 指定账号名称作为参数即可。passwd命令除了可以修改账号的密码外,还能欧股对用户账号进行锁定,解锁,也可以将用户的密码设置为空(无需密码即可登录)。
使用命令基本格式
passwd [选项] 用户名
常用选项
-d 清空指定用户的密码,仅使用用户名即可登录系统
-l 锁定用户账户
-S(大S) 查看用户账户是否被锁定
-u 解锁用户账户
通过passwd命令锁定的用户账号,将无法再登录系统(shadow文件中的对应密码子串前将添加“!!”字符),只能由管理员来解除锁定。(还可以从root用户切换登录).
[root@localhost ~]# passwd -l tom
锁定用户 tom 的密码 。
passwd: 操作成功
您在 /var/spool/mail/root 中有新邮件
[root@localhost ~]# tail -5 /etc/shadow
oracle:!!:18437:0:99999:7:::
tom:!!$6$s9cmgqS7$WOigcIuRgsKtgi8snvysEOc9f.mo653Ja47EAuc9ceKUVM2251wvF.OeyIsLADUlsLA2cOclM31isnEhDAUj4/:18437:0:60:7::: ## 密码前出现两个“!!”表示账号被锁定
lisi:$6$yjA/exC/$pcIvOGH/oIPn41PMgtLPtz7A9p8dOttfjQ3Dmr2kRjVr03/AkVKDl5r6glovbtcLGkn/OJ7t4BdgFI3j78jQK/:18437:0:99999:7:::
ntp:!!:18437::::::
tom1:!!:18448:0:99999:7:::
对于普通用户自行设置的密码,要求具有一定的复杂性(如不要直接使用英文单词,长度保持在六位以上)否则系统可能拒绝进行设置。普通用户设置自身的登录密码时,需要先输入旧的密码进行验证。
1.4.4 usermod命令——修改用户账号属性
对于系统中已经存在的用户账号,可以使用usermod重新设置各种属性。usermod命令同样需要指定账号名称作为参数。
命令使用基本格式
usermod [选项] 用户名
常用选项
-l 更改用户账号的登录名称(Login Name)
-L 锁定用户账户
-U 解锁用户账户
-u 修改用户的UID号
-d 修改用户的宿主目录位置
-e 修改用户的账户失效时间,可以使用YYYY-MM-DD的日期格式
-s 指定用户的登录shell
修改已有账号宿主目录,需要先将该账号原有的宿主目录转移到新的位置,然后再通过usermod命令设置新的宿主目录位置。
[root@localhost ~]# mv /tom /home/ ## 移动tom的宿主目录到home下
[root@localhost ~]# usermod -d /home/tom tom ## 设置tom新的宿主目录的位置
1.4.5 userdel命令——删除用户账号
命令使用基本格式
userdel [-r] 用户名
添加-r选项时,表示连用户的宿主目录删除
二、管理组账号
对于用户账号来说,对应的组账号可以分为基本组(私有组)和附加组(公共组)两种。每一个用户账号可以是多个组账号的成员,但是其基本组账号只有一个。在”/etc/passwd“文件中第四个字段记录的即为该用户的基本组GID号。而对于该用户还属于那些附加组,需要在对应组账号文件中才被体现。
2.1 组账号文件
组账号文件也有两个,分别是/etc/group, /etc/gshadow。与用户账号文件非常类似。前者用于保存组账号名称,GID号,组成员等基本信息,后者用于保存组账号的加密密码字符串等信息(但是很少使用到)。某一个组账号包含哪些用户成员,将会在group文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用逗号“,”分隔。
[root@localhost ~]# grep "^root" /etc/group ## 检索root组包括那些用户
root:x:0:
[root@localhost ~]# grep "root" /etc/group ## 检索哪些组包括root用户
root:x:0:
2.2 添加、删除、修改组账号
2.2.1 groupadd命令——添加组账号
使用groupadd命令可以添加一个组账号,需要指定的GID号时,可以使用“-g”选项
[root@localhost ~]# groupadd -g 10000 test01 ## 添加一个明文test01的组账号,并指定GID为10000
[root@localhost ~]# tail -1 /etc/group
test01:x:10000:
2.2.2 gpasswd命令——添加、设置、删除组成员
gpasswd命令本来是用来设置组账号密码(极少用),实际上该命令更多的配合选项用来管理组账号的用户成员。
命令使用基本格式
gpasswd [选项] 组账号名
常用选项
-a 向组内添加一个用户
-d 从组中删除一个用户成员
-M 定义组成员列表,以逗号分隔
例如:向组内添加一个用户
[root@33 ~]# gpasswd -a 12
例如:从组内删除一个用户
[root@33 ~]# gpasswd -d 12
例如:添加多个用户
[root@33 ~]# gpasswd -M a,b,c,d
一定注意:如果用了-M,就是对组列表的覆盖。-M需要首次使用,后面不能再次使用。 首次使用了-M后,再次添加用户需要使用-a
2.2.3 groupdel命令——删除组账号
使用命令基本格式
groupdel 组账号名
例如
[root@33 ~]# groupdel test01
2.2.4 useradd命令——添加用户账号时指定组
例如:添加mike用户时直接指定mike的基本组为mike,并加入到ftpuser组,同时指定主目录为/ftphome/mike并且不允许通过本地登录服务器。
[root@localhost ~]# useradd -d /ftphome/mike -g mike -G ftpuser -s /sbin/nologin mike
2.2.5 usermod命令——修改用户账号属性
系统中对于已经存在的用户账号,可以使用usermod命令加选项于用户名重新设置该账户的所属组。
-g:修改用户的基本组名(或GID)
-G:修改该用户的附加组名(或GID)
2.3 查询账号信息
2.3.1 id——查询用户账号的身份标识
在用户管理工作中,虽然直接查看用户账号,组账号的配置文件也可以查询相关信息,但不是很乐观。在Linux系统中,还可以使用几个常用的命令查询工具。id命令:查询用户账号的身份标识,使用id命令可以快速查看指定用户账号的UID,GID等表示信息。
id命令基本格式
id [用户名] 查询用户身份标识
[root@localhost ~]# id tom
uid=1501(tom) gid=1501(tom) 组=1501(tom)
2.3.2groups命令——查询用户账号的登录属性
groups命令可以查看指定的用户账号属于哪些组
[root@localhost ~]# groups tom
tom : tom
2.3.3 finger命令——查询用户账号的登录属性
finger命令可以查询指定的用户账号的登录属性等详细信息,包括登录名称、完整目录、宿主目录、登录Shell。
[root@localhost ~]# finger root
Login: root Name: root
Directory: /root Shell: /bin/bash
On since 日 7月 5 17:19 (CST) on pts/0 from 192.168.233.1
1 second idle
New mail received 日 7月 5 18:46 2020 (CST)
Unread since 二 6月 23 23:47 2020 (CST)
No Plan.
2.3.4 w命令——查询当前主机的用户登录情况
使用w命令可以查询当前主机中的查询当前主机中的用户登录情况,列出登录账号名称、所在终端、登录时间、来源地点等信息。
[root@localhost ~]# w
18:51:34 up 7:25, 2 users, load average: 0.04, 0.05, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.233.1 17:19 6.00s 0.27s 0.05s w
tom pts/1 192.168.233.1 17:32 1:18m 0.02s 0.02s -bash
三、文件的权限及归属
Linux文件系统的安全模型中,为系统中的文件赋予了两个属性:访问权限和文件所有者,简称为“权限”和“归属”。其中访问权限包括读取、写入、可执行三种基本类型,归属包括属主(拥有该文件的用户账号)、属主(拥有该文件的组账号)、linux系统根据文件或者目录的访问权限、归属来对用户访问数据的过程进行控制。
3.1 查看文件的权限及归属
[root@localhost /]# ls -l /etc/passwd
-rw-r--r--. 1 root root 1158 7月 5 11:42 /etc/passwd
理解权限字段-rw-r–r–的含义
字符解释
第一个字符“-”表示文件类型。可以是d(目录),b(块设备文件),c(字符设备文件),“-”普通文件,字母“l”(链接文件)等第2-4个字符“rw-”表示该文件的属主用户(User)对该文件的访问权限。第5-7个字符“r–”表示该文件的属组内每个成员用户(Group)对该文件的访问权限\第8–10个字符“r–”表示其他任何用户(Other)对该文件的访问权限
其他字段含义
字段解释
1子文件数量root属主root属组34298大小,单位:字节04-02 00:23创建时间
我们可以使用-rwxrwxrwx来表示权限也可以用777来表示权限。rwx采用累加数字形式表示成 7 , r-x 表示成 5 , rwxr-xr-x 表示成755,rw-r–r–表示成644数字固定不会变,一个普通的数据文件没有执行权限。
3.2 设置文件的权限及归属
3.2.1 设置文件权限——chmod
chmod命令使用基本格式
chmod [ugoa] [+-=] [rwx] 文件或目录 (不常用) (u,g,o,a分别表示属主,属组,其他用户,所有用户)(+-=分别表示增加,去除,设置权限)
或
chmod nnn 文件或目录 (最常用) (nnn表示三位八进制数字,如刚刚提到的 777,755,644等)
常用选项
-R 递归修改指定目录下所有子项的权限
3.2.2 设置文件的归属——chown
chown命令使用基本格式
chown 属主 文件或目录
chown:属组 文件或目录
chown 属主:属组 文件或目录
常用选项
-R 递归修改指定目录下所有文件,子目录的归属
3.3 权限掩码 umask
umask作用:控制新建的文件或目录的权限 ,默认权限去除umask的权限就为新建的文件或者目录的权限.
umask设置命令格式
umask 000(000指数字)
umask查看
umask
umask的分数指的是“该默认值需要减掉的权限,”因此,如果执行“umask 022”,代表group和other被拿掉了权限“2”,也就是被拿掉了写的权限。如果执行命令“umask 000”,代表文件的默认权限是“777”,-R 递归修改指定目录下所有文件,子目录的归属。默认文件夹 755,默认文件 644。