Linux账号权限管理

用户账号和组账号概述

用户账号

超级用户:root用户是Linux 操作系统中默认的超级用户账号,对本主机拥有至高无上的权限。

普通用户:需要管理员用户创建,拥有的权限受到一定限制,一般只在用户自己的宿主目录中拥有完整权限。

程序用户:安装 Linux 操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,而仅用于维持系统或某个程序的正常运行。

组账号

基本组:每一个用户账号至少属于一个组,这个组称为该用户的基本组(或私有组)。

附加组:若用户除基本组外同时还包含在其他的组中,则这些组称为该用户的附加组(或公共组)

UID和GID

UID:Linux操作系统中的每一个用户账号都有一个数字形式的身份标记,称为 UID;root 用户账号的 UID 号为固定值0,而程序用户账号的 UID号默认为1~499,500~60000 的UID 号默认分配给普通用户使用。

GID:与 UID类似,每一个组账号也有一个数字形式的身份标记,称为 GID(Group IDentity,组标识号)。root组账号的GID号为固定值0,而程序组账号的GID 号默认为1~499,500~60000 的 GID 号默认分配给普通组使用。

用户账户管理

用户账户文件

/etc/passwd:用于保存用户名称、宿主目录、登录 Shell 等基本信息。

/etc/shadow:者用于保存用户的密码、账号有效期等信息。

在这两个配置文件中,每一行对应一个用户账号,不同的配置项之间使用“:”(冒号)进行分隔。

passwd文件中的配置行格式

passwd文件的每一行内容中包含了七个用“:”(冒号)分隔的配置字段,每个配置字段的含义如下:

sun:x:1000:1000:sun:/home/sun:/bin/bash

字段

含义

第1字段:sun

用户账号的名称

第2字段:x

密码占位符

第3字段:1000

用户账号的UID号

第4字段:1000

所属基本组账号的 GID 号

第5字段:sun

用户全名

第6字段:/home/sun

宿主目录

第7字段:/bin/bash

登录 Shell等信息

shadow 文件的每一行内容中包含了九个用“:”(冒号)分隔的配置字段,配置字段的含义分别如下:

sun:$6$ozmUzfeRN9m7...PWcx0:18117:0:99999:7:::

字段

含义

第1字段:sun

用户账号名称

第2字段:$6$ozmU...PWcx0

使用哈希算法加密的密码字串信息

第3字段:18117

表示从 1970 年 01 月 01 日算起到最近一次修改密码时间隔的天数

第4字段:0

密码的最短有效天数,默认值为0,表示不进行限制。

第5字段:99999

密码的最长有效天数

第6字段:7

提前多少天警告用户密码将过期,默认值为7。

第7字段

在密码过期之后多少天内禁用此用户。

第8字段

账号失效时间,默认值为空,表示账号永久可用。

第9字段

保留字段,目前没有特定用途。

添加、修改、删除用户账号

useradd 命令——添加用户账号

命令格式

useradd [选项]… 用户名...

常用选项

选项

含义

-u

指定用户UID号。

-d

指定用户宿主目录位置。

-e

指定用户的账户失效时间,可使用 YYYY-MM-DD的日期格式。

-g

指定用户的基本组

-G

指定用户的附加组

-M

不建立宿主目录

-s

指定用户的登录shell。/bin/bash可以登录系统 ,/sbin/nologin 不可登录系统

[root@localhost ~]# useradd -u 1008 -s /sbin/nologin siti

[root@localhost ~]# tail -3 /etc/passwd

tcpdump:x:72:72::/:/sbin/nologin

sun:x:1000:1000:sun:/home/sun:/bin/bash

siti:x:1008:1008::/home/siti:/sbin/nologin

//创建siti用户,指定UID号1008,指定用户无法登录系统

passwd 命令——为用户账号设置密码

命令格式

passwd [选项]… 用户名...

常用选项

选项

含义

-d

清空指定用户的密码

-l

锁定用户账户

-S

查看用户账户状态

-u

解锁用户账户

[root@localhost ~]# passwd siti //设置siti账户密码

更改用户 siti 的密码 。

新的 密码:

无效的密码: 密码少于 8 个字符

重新输入新的 密码:

passwd:所有的身份验证令牌已经成功更新。

[root@localhost ~]# passwd -l siti //锁定siti账户

锁定用户 siti 的密码 。

passwd: 操作成功

[root@localhost ~]# passwd -S siti //查看账户siti状态

siti LK 2019-08-21 0 99999 7 -1 (密码已被锁定。)

[root@localhost ~]# passwd -u siti //解锁siti账户

解锁用户 siti 的密码。

passwd: 操作成功

[root@localhost ~]# passwd -S siti //查看账户siti状态

siti PS 2019-08-21 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

usermod命令——修改用户账号属性

命令格式

usermod [选项]… 用户名...

常用选项

选项

含义

-u

修改用户UID号

-d

修改用户的宿主目录位置

-e

修改用户的账户失效时间,可使用YYYY-MM-DD的日期格式

-s

指定用户的登录shell

-l

更改用户账号的登录名称

-L

锁定用户账户

-U

解锁用户账户

[root@localhost ~]# usermod -l st11 siti //更改siti账户名为st11

[root@localhost ~]# tail -2 /etc/passwd //查看passwd文件后两行信息

sun:x:1000:1000:sun:/home/sun:/bin/bash

st11:x:1008:1008::/home/siti:/sbin/nologin //账户名已更改

[root@localhost ~]# usermod -L st11 //锁定st11用户

[root@localhost ~]# passwd -S st11 //查看st11用户状态

st11 LK 2019-08-21 0 99999 7 -1 (密码已被锁定。)

[root@localhost ~]# usermod -U st11 //解锁st11用户

[root@localhost ~]# passwd -S st11 //查看st11用户状态

st11 PS 2019-08-21 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

[root@localhost ~]# usermod -s /bin/bash st11 //设置st11可以登录系统

[root@localhost ~]# tail -2 /etc/passwd //查看passwd文件后两行信息

sun:x:1000:1000:sun:/home/sun:/bin/bash

st11:x:1008:1008::/home/siti:/bin/bash //shell登录已更改

userdel命令——删除用户账号

命令格式

userdel [选项]… 用户名...

常用选项

选项

含义

-r

递归删除(同时删除宿主目录)

[root@localhost ~]# userdel -r st11 //删除st11用户,同时删除宿主目录

[root@localhost ~]# tail -2 /etc/passwd //查看passwd文件后两行信息

tcpdump:x:72:72::/:/sbin/nologin

sun:x:1000:1000:sun:/home/sun:/bin/bash //st11用户已删除

组账号管理

组账号文件

/etc/group:用于保存组账号名称、 GID 号、组成员等基本信息。

/etc/gshadow: 用于保存组账号的加密密码字串等信息(但是很少使用到)。

某一个组账号包含哪些用户成员,将会在 group文件内最后一个字段中体现出来(基本组对应的用户账号默认可能不会列出),多个组成员之间使用“,”(逗号)分隔。

添加、管理、删除组账号

groupadd命令——添加组账号

命令格式

groupadd 要添加的组名称

[root@localhost ~]# groupadd caiwu //创建caiwu组

[root@localhost ~]# tail -3 /etc/group //查看group文件后两行信息

sun:x:1000:

siti:x:1008:

caiwu:x:1009: //创建的caiwu组

gpasswd 命令——添加、设置、删除组成员

命令格式

gpasswd [选项] [用户名] [组名称]

常用选项

选项

含义

-a

向组内添加一个用户

-d

从组内删除一个用户成员

-M

定义组成员列表,以逗号分隔(注意:当组内有已经有成员时,用此选项将覆盖原组内成员)

[root@localhost ~]# gpasswd -a st11 caiwu //将st11加入caiwu组

正在将用户“st11”加入到“caiwu”组中

[root@localhost ~]# tail -5 /etc/group //查看group文件后5行信息

sun:x:1000:

caiwu:x:1009:st11 //st11成功加入caiwu组

siti:x:1001:

si22:x:1002:

st11:x:1003:

[root@localhost ~]# gpasswd -d st11 caiwu //将st11从caiwu组中删除

正在将用户“st11”从“caiwu”组中删除

[root@localhost ~]# tail -5 /etc/group //查看group文件后5行信息

sun:x:1000:

caiwu:x:1009: //st11从caiwu组中删除

siti:x:1001:

si22:x:1002:

st11:x:1003:

[root@localhost ~]# gpasswd -M st11,si22,siti caiwu //将st11,si22,siti添加进caiwu组

[root@localhost ~]# tail -5 /etc/group //查看group文件后5行信息

sun:x:1000:

caiwu:x:1009:st11,si22,siti //st11,si22,siti成功加入caiwu组

siti:x:1001:

si22:x:1002:

st11:x:1003:

groupdel命令——删除组账号

命令格式

groupdel 组名称

[root@localhost ~]# groupdel caiwu //删除caiwu组

[root@localhost ~]# tail -5 /etc/group //查看group文件后5行信息

tcpdump:x:72:

sun:x:1000:

siti:x:1001:

si22:x:1002:

st11:x:1003: //caiwu组已删除

查询账户信息

groups 命令——查询用户账号所属的组

命令格式

groups 用户名称(当不填写用户名称时默认当前用户)

[root@localhost ~]# groups //默认查看当前账户所属组

root

[root@localhost ~]# groups sun //查看sun账户所属组

sun : sun wheel

id——查询用户账号的身份标识

命令格式

id 用户名称(当不填写用户名称时默认当前用户)

[root@localhost ~]# id //默认查看当前用户身份标识

uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

[root@localhost ~]# id sun //查看sun用户身份标识

uid=1000(sun) gid=1000(sun) 组=1000(sun),10(wheel)

finger命令——查询用户账号的登录属性

命令格式

finger 用户名称(当不填写用户名称时默认当前用户)

[root@localhost ~]# finger //默认查看当前账户登录属性

Login Name Tty Idle Login Time Office Office Phone Host

root root pts/0 Aug 21 21:58 (192.168.144.1)

[root@localhost ~]# finger sun //查看sun账户登录属性

Login: sun Name: sun

Directory: /home/sun Shell: /bin/bash

Last login 五 8月 9 12:19 (CST) on :1

No mail.

No Plan.

w、who、users 命令——查询当前主机的用户登录情况

命令格式

w 用户名称(当不填写用户名称时默认当前用户)

[root@localhost ~]# w //默认查看当前账户登录情况

00:11:19 up 2:13, 1 user, load average: 0.00, 0.01, 0.05

root pts/0 192.168.144.1 21:58 7.00s 0.36s 0.02s w

[root@localhost ~]# who //默认查看当前账户登录情况

root pts/0 2019-08-21 21:58 (192.168.144.1)

[root@localhost ~]# users //默认查看当前账户登录情况

root

[root@localhost ~]# w sun //查看sun账户登录情况

00:11:52 up 2:14, 1 user, load average: 0.00, 0.01, 0.05

文件/目录的权限和归属

访问权限

读取r:允许查看文件内容、显示目录列表

写入w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录

可执行x:允许运行程序、切换目录

归属

属主:拥有该文件或目录的用户帐号

属组:拥有该文件或目录的组帐号

查看文件/目录的权限和归属

使用带“-l”选项的 ls命令时,将以长格式显示文件或目录的详细信息,其中包括该文件的权限和归属等参数。

[root@localhost ~]# ls -l /etc/passwd //以长格式查看passwd文件

-rw-r--r--. 1 root root 2218 8月 21 23:27 /etc/passwd //显示文件信息

在上述输出信息中,第 3、4字段的数据分别表示该文件(或目录)的属主、属组,上例中/etc/passwd文件属于root用户、root组;而第 1 字段的数据表示该文件(或目录)的访问权限,如-rw-r--r--。权限字段由四部分组成,各自的含义如下:

字段

含义

第1字符

表示该文件的类型,d目录、c字符设备文件、 -普通文件、字母l链接文件等。

第2~4个字符

表示该文件的属主用户对该文件的访问权限。

第5~7个字符

表示该文件的属组内各成员用户对该文件的访问权限。

第8~10个字符

表示其他任何用户对该文件的访问权限。

第11个字符

这里的.与 SELinux 有关,目前不必关注。

权限的数字标识形式

chmod命令——设置文件或目录的权限

命令格式

chmod [ugoa] [+-=] [rwx] 文件或目录...

chmod nnn 文件或目录...

[ugoa…][+-=][rwx]的形式中,三个组成部分的含义及用法如下:

ugoa表示该权限设置所针对的用户类别。u代表文件属主,g代表文件属组内的用户, o代表其他任何用户, a代表所有用户(u、g、o 的总和)。

+-=表示设置权限的操作动作。 +代表增加相应权限, -代表减少相应权限,=代表仅设置对应的权限。

rwx是权限的字符组合形式,也可以拆分使用,如r、rx等

nnn为需要设置的具体权限值,如755、644等

[root@localhost opt]# ls -l siti.txt //以长格式查看siti.txt文件信息

-rw-r--r--. 1 root root 0 8月 22 01:19 siti.txt

[root@localhost opt]# chmod guo+x siti.txt //设置文件所有用户可执行权限

[root@localhost opt]# ls -l siti.txt //以长格式查看siti.txt文件信息

-rwxr-xr-x. 1 root root 0 8月 22 01:19 siti.txt //文件成功添加多有用户可只执行权限

[root@localhost opt]# chmod 666 siti.txt //设置文件所有用户可读、可写权限

[root@localhost opt]# ls -l siti.txt //以长格式查看siti.txt文件信息

-rw-rw-rw-. 1 root root 0 8月 22 01:19 siti.txt //文件成功设置权限

umask应用

umask 就是默认指定目前用户在新建文件或目录是的权限默认值。执行umask 022即可以设置当前用户的默认权限。直接执行umask命令就是查看当前系统的默认权限。需要注意的是,umask的分数指的是“该默认值需要减掉的权限”,如果执行umask 022代表 group 和other被拿掉了权限2,也就是被拿掉了“写”权限。如果执行命令umask 000,代表文件的默认权限是777

[root@localhost opt]# umask 000

[root@localhost opt]# mkdir sisi

[root@localhost opt]# ls -ld sisi

drwxrwxrwx. 2 root root 6 8月 22 01:42 sisi

[root@localhost opt]# umask 022

[root@localhost opt]# mkdir sisi2

[root@localhost opt]# ls -ld sisi2

drwxr-xr-x. 2 root root 6 8月 22 01:44 sisi2

chown命令——设置目录和文件的归属

命令格式

chown 属主[:[属组]] 文件或目录...

常用选项

选项

含义

-R

递归创建

[root@localhost opt]# chown -R sun sisi2 //更改sisi2目录属主为sun

[root@localhost opt]# ls -ld sisi2 //以长格式友好查看sisi2目录信息

drwxr-xr-x. 2 sun root 6 8月 22 01:44 sisi2 //sisi2目录属主成功更改

[root@localhost opt]# chown -R :sun sisi2 //更改sisi2目录属组为sun

[root@localhost opt]# ls -ld sisi2 //以长格式友好查看sisi2目录信息

drwxr-xr-x. 2 sun sun 6 8月 22 01:44 sisi2 //sisi2目录属组成功更改

[root@localhost opt]# chown -R root:root sisi2 //更改sisi2目录属主、属组为root

[root@localhost opt]# ls -ld sisi2 //以长格式友好查看sisi2目录信息

drwxr-xr-x. 2 root root 6 8月 22 01:44 sisi2 //成功更改sisi2目录属主、属组信息

补充内容

用户账号的初始配置文件

添加新的用户账号后useradd命令会在用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel/,基本上都是隐藏文件,较常用的初始配置文件包括.bash_logout、.bash_profile、.bashrc。其中.bash_profile”文件中的命令将在该用户每次登录时被执行;; .bashrc文件中的命令会在每次加载/bin/Bash程序(当然也包括登录系统)时执行;而.bash_logout文件中的命令将在用户每次退出登录时执行。理解这些文件的作用,可以方便我们安排一些自动运行的后台管理任务。

在.bashrc等文件中,可以添加用户自己设置的可执行语句(如 Linux命令行、脚本控制语句等),以便自动完成相应的任务。如果希望为所有用户添加登录后自动运行的命令程序、自动设置变量等,可以直接修改/etc目录下的类似文件,如/etc/bashrc文件、/etc/profile文件。

linux查看当前账号权限,Linux账号权限管理相关推荐

  1. linux 查看 pub文件夹,linux 文件/目录的属性及权限

    一.文件属性 1.文件属性查看 ls   -l   filename -     rw-r--r--.   1    kiosk    kiosk    4505     Mar 28 22:59   ...

  2. linux查看电源状态命令,linux查看机器运行状态常用命令

    查看系统基本信息 lsb_release -a # 查看linux版本 top # 查看谁最占用cpu等资源 uname -a # 查看内核/操作系统/cpu等信息 cat /etc/issue # ...

  3. linux查看jdk详细版本号,Linux中查看jdk版本

    linux查看java jdk安装路径和设置环境变量 windows: set java_home:查看JDK安装路径 java -version:查看JDK版本 linux: whereis jav ...

  4. linux查看程序的快捷键,linux操作系统的快捷键及命令讲解

    GNU是为Linux提供免费软件支持的工具;红帽与乌邦图都是Linux的一个版本. Linux登入时登入名为root的是最高级别 Linux系统中的文件夹: /:根目标 bin:二进制可执行文件 li ...

  5. linux查看显示器名称命令,linux 查看显示器信息Linux下查看硬件信息命令大全

    /proc 虚拟的目录,是系统内存的映射.可直接访问这个目录来获取系统信息.其中也包含下面的信息: 主机CPU信息:cpuinfo 主机DMA通道信息:dma 文件系统信息:filesystems 主 ...

  6. linux查看端口占用终结,Linux查看端口占用

    ​ Linux查看端口占用得情况可以使用lsof和netstat 命令 lsof ​ lsof(list open files) 是一个列出当前系统打开文件的工具. lsf查看端口占用语法格式: ls ...

  7. linux查看和结束进程,Linux查看和结束进程命令详解

    在ubuntu中,终止一个进程或终止一个正在运行的程序,一般是通过 kill .killall.pkill.xkill 等进行. ----------------------------------- ...

  8. Linux查看tomcat服务进程号,linux如何查看tomcat进程_网站服务器运行维护

    linux查看端口命令是什么_网站服务器运行维护 linux查看端口命令有两种,分别是"lsof -i:"和"netstat -nltp | grep",其中参 ...

  9. linux查看设备内存代码,Linux下内存查看命令(示例代码)

    在Linux下面,我们常用top命令来查看系统进程,top也能显示系统内存.我们常用的Linux下查看内容的专用工具是free命令. Linux下内存查看命令free详解: 在Linux下查看内存我们 ...

  10. linux查看cpu个数命令,Linux怎么查看物理CPU个数

    在linux中我们对于硬件的查看只能通过命令的方式来获得了不能直接查看到了,下面学习阿拉小编给各位整理了一些Linux查看物理CPU个数.核数.逻辑CPU个数的命令供各位学习. Linux怎么查看物理 ...

最新文章

  1. python 3元运算符
  2. php vc9安装包免费下载,phpstudy 2013软件下载-phpstudy 2013安装包pc客户端 - 极光下载站...
  3. 区别ie8和ie9的方法
  4. 语音识别:时间序列Damerau–Levenshtein距离
  5. 转型会员制,云集能否讲好电商下半场故事?
  6. linux管理员常用的命令分享
  7. how does SAP CRM partner function work - how is account change working
  8. 2014_beijing_onsite
  9. Java集合---面试题
  10. mysql将查到的数据删除_MySQL基本SQL语句之数据插入、删除数据和更新数据 | 旺旺知识库...
  11. Windows Azure Web Site (17) 设置Web App TimeOut时间
  12. POJ--3984--迷宫问题
  13. MySQL 管理工具:Navicat for MySQL 8.0.19 中文版(破解版)
  14. MATLAB 安装包
  15. 在网页上添加可爱的Live 2D模型
  16. 写给15岁的女儿-乐嘉
  17. 基于HuTool工具实现Excel复杂表头生成、单元格合并绘制对角线(计算N叉树的最大深度和最大宽度)
  18. 应届大学毕业生户口迁移须知
  19. 计算机音乐出山,《出山》音乐
  20. OpenSSL文档阅读笔记-RSA Encryption Decryption Example with OpenSSL in C

热门文章

  1. Git commit文件提交到仓库失败原因——Author identity unknown
  2. jsp主机与asp主机的区别和支持分析
  3. 超链接标签a实现跳转
  4. Python 3.8 官网文档(中文版附下载)
  5. android 稳定的定时器,Multi Timer「多工计时器」v2.8.2 for Android 特别高级版
  6. [导入]运筹帷幄之中,决胜千里之外(搜索世界的监视器为你所用)
  7. R语言1-面板数据分析全过程 附代码用途
  8. LZY逃命路线总数(记忆化递归)非常难
  9. 迅雷软件一直出现崩溃问题的常见解决方法
  10. ESP32开发学习 LVGL Littlevgl 使用文件系统