您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux

Linux用户及权限管理

时间:2021-11-03 11:13:03  来源:  作者:知书达理的旺财

前段时间由于个人原因长时间没有更新,后面会继续更新的。这都是我在学习linux时做的笔记,写在这里方便大家也是方便自己。

用户管理相关文件

  • /etc/passwd
  • /etc/group
  • /etc/shadow
  • /etc/gshadow

/etc/passwd文件格式:

root:x:0:0:root:/root:/bin/bash
1. 用户名
2. 用户的密码占位符
3. UID
4. GID
5. 注释信息
6. 用户家目录
7. 用户默认的shell

/etc/group 文件格式:

www:x:1002:
1. 组名
2. 组密码占位符
3. GID
4. 以此组为其附加组的用户的用户名列表,如果有多个用户可以用逗号隔开

/etc/shadow文件格式:

www:!!:15836:0:99999:7:::
zhou:$1$zNXbcLE7$ANbOzBEBzSGWD.wy21.b31:16041:0:99999:7:::
1. 用户的登陆名;
2. 加密过的密码,如果为!!则表示此用户已禁用;
    加密方法是md5(Message Degist 消息摘要),这是一个单向加密算法。
    单向加密的特点:
     2.1  定长输出 128bit。不管源数据多长,加密后的密文都一样长;
     2.2 雪崩效应,即:改变了一点,加密后的结果都不一样;
     2.3 源文一样,加密后的密文都一样;
    
     常见的单向加密算法:sha1 = secure hash algorithm 安全的hash算法;
    $1$zNXbcLE7$ANbOzBEBzSGWD.wy21.b31
    第1和第2个$之间的那个”1”表示:加密的方法是md5;
    第2和第3个$之间的那串字符表示:系统在给密码加密的时候所添加的“盐”,是为了防止相同的密码加密后的密文一样,造成信息的泄露,这一点是利用了md5的雪崩效应;
    第3个$后面的字符串就是密码+“盐”后的密文;
3. 记录从1970年1月1日开始到你最近一次修改密码之间所经过的天数;也就是密码的最近修改时间;
4. 密码最短使用期限:单位天数,默认为0,表示不限制;
5. 密码最长使用期限:单位天数,默认是99999,表示可以永久有效;
6. 在密码过期N天之前,向用户发出警告;默认是7天;
用户帐号的非活动期,在此期间,用户登陆后第一件事,就是修改自己的密码;当错过此时间后,此帐号会被禁用。只有找root来启用;
7. 用户帐号的有效期限;
8. 最后一段做保留;

创建用户

useradd|adduser [options] username

/etc/default/useradd 该文件用来初始化一些参数的值。比如默认的shell,默认的家目录的位置等;

/etc/skel/ 该目录中的文件就是在创建新用户时的模板文件,当创建好一个用户时,就会把该目录下的文件CP到该用户的家目录下面,一般该目录都是隐藏的文件;

/etc/login.defs 该文件指定了用户的UID和GID的最小值500和最大值60000,默认添加用户的时候就从最小值开始;

-c 表示为当前要添加的用户写个注释信息;

-u 表示指定用户的UID;

-g 表示指定用户的GID;

-G 表示指定用户的附加组;

-d 表示指定用户的家目录位置;

-M 表示不为用户创建家目录;

-s 表示指定用户的默认shell;选项都在/etc/shells中

-e 指定用户的过期日期,格式MM/DD/YYYY

-o 表示可以创建一个与已知的UID相同的用户,例如# useradd –o –u 0 xfzhou 表示创建了一个uid为0的xfzhou用户,当然了这个用户也是root。在Linux中是根据UID来识别用户的级别的;

-r 创建一个程序用户,UID范围是 1-499,这些用户是不能登陆系统的;

当用户创建完成后,该用户由于没有密码,所以是不能直接登陆系统的。可以先由root给该用户先设置个初始密码。当用户登陆后就可以自己来改密码了;

#passwd username

#passwd //不写用户名就是给当前用户改密码;

passwd –l 锁定一个用户

passwd –u 解锁用户

passwd –stdin < passwdfile

创建组:

groupadd [options] groupname

# groupadd -g num group1 创建组的同是为组设置gid

gpasswd命令:

gpasswd -a user1 group1 //把用户user1添加到group1中去。

gpasswd -d user2 group2 //把user2从group2组中删除;

gpasswd -M user1 user2 user3 group1 一次性把多个用户添加到指定的组中;

查看用户信息:

# id [options].. username

-u 显示指定用户的UID

-g 显示用户的GID

-G 显示用户附加组

-n 显示用户的用户名

[root@Nginx ~]# id -u root

0

[root@Nginx ~]# id -g root

0

[root@Nginx ~]# id -G root

0 1 2 3 4 6 10

[root@Nginx ~]# id -G root -n

root bin daemon sys adm disk wheel

[root@Nginx ~]#

# finger username //user information lookup program

[root@Nginx /]# finger root

Login: root Name: root

Directory: /root Shell: /bin/bash

On since 一 12月 2 21:10 (CST) on pts/0 from 192.168.10.254

On since 一 12月 2 22:12 (CST) on pts/1 from 192.168.10.254

1 hour 35 minutes idle

New mail received 一 12月 2 22:19 2013 (CST)

Unread since 六 5月 11 14:07 2013 (CST)

No Plan.

[root@Nginx /]#

# who

[root@Nginx /]# who

root pts/0 2013-12-02 21:10 (192.168.10.254)

root pts/1 2013-12-02 22:12 (192.168.10.254)

[root@Nginx /]#

# w

[root@Nginx /]# w

23:49:47 up 2:42, 2 users, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.10.254 21:10 0.00s 0.48s 0.01s w

root pts/1 192.168.10.254 22:12 1:37m 0.06s 0.04s man useradd

[root@Nginx /]#

# whoami

[root@Nginx /]# whoami

root

[root@Nginx /]#

修改用户属性:

usermod

chage

chfn

chsh

chsh username 更改用户的shell和passwd的用法有点像

chfn username 修改用户的注释信息。

usermod [options] username

-u 更改用户的UID

-g 更改用户的GID

-G 更改用户的附加组,如果只有“-G”则是更换用户的附加组。如果想给用户增加一个附加组的话,可以使用“-G number -a”,加上“-a” 其实就是Append的意思,这样就不会把原来的覆盖掉;

-c 修改用户的注释信息;

-s 修改用户的默认shell

-d 更改用户的家目录位置,要配全-m来使用即:”usermod –d /path/dir –m username”,-m:表示移动用户的家目录,因为用户的家目录下面还有可能有其他的文件;

-l 更改用户的登陆名;

-L 锁定用户

-U 解锁用户

删除用户:

userdel [options] username

-r 表示在删除用户的时候同时把用户的家目录也删除。默认是不删除用户的家目录的。是为了能够再找回用户的资料;

创建用户组:

groupadd [options] groupname

-g 指定组id

-r 创建系统组 1-499

修改用户组信息:

groupmod [options] groupname

-g GID

-n 修改组名称

删除组:

groupdel groupname

给组加密码:

在切换基本组的时候,需要输入组的密码;

netgrp grouname //会提示输入密码;

gpasswd -a USER GROUP //将用户USER加入到GROUP组中,注意,这里是附加组;

gpasswd –d USER GROUP //将用户USER从GROUP组中移除;也是附加组;

gpasswd –A USER1,USER2.... GROUP

gpasswd –M USER1,USER2.... GROUP //这两个都是一次性向GROUP中添加多个用户;

 

用户切换命令:

su - switch user

su USERNAME //非登陆式切换;

su – USERNAME //登陆式切换;

su –l USERNAME //登陆式切换;

su – USERNAME –c ‘command’ 切换到指定用户后,以用户的shell执行command

su USERNAME -c ‘command’

  1. 文件权限管理:

Linux权限和八进制的对应关系:

Linux权限

二进制

八进制

---

000

0

--x

001

1

-w-

010

2

-wx

011

3

r--

100

4

r-x

101

5

rw-

110

6

rwx

111

7

例如:rwxr-xr-x 755

第一个3位对应 文件的属主的权限;用u表示文件的属主;

第二个3位对应 文件属组的权限;用g表示文件属组

第三个3位对应 其他人的权限;用o表示其他人;

用a表示所有人;

修改文件的权限:

chmod [options] perm file..

perm的指定方法:

chmod 777 /tmp/test.txt

chmod u=rwx,g=rwx /tmp/test.txt

chmod g=w /tmp/test.txt //注意这个g=w会直接覆盖掉以前的权限;如果要想在原有的权限上增加一个权限,应该使用g+rwx,如果要取消用户的某位的权限则要使用-rwx;

chmod g+x,o-rw /tmp/test.txt

chmod a-w /tmp/test.txt

在修改目录的权限的时候,可以使用-R 来对目录下的文件的权限也进行修改;

chmod –R 775 /tmp/test

在文件的权限中还有三个特殊的权限:SUID、SGID和t(粘滞位)

SUID、SGID通常叫作SET位权限,多用于对可执行脚本或程序来设置,例如/usr/bin/passwd 它就是被设置了SUID的程序;

SUID表示:对属主添加SET位权限;SGID表示:对属组设置SET位权限;当某个文件被设置了SUID或SGID后,任何用户在执行该文件的时候,都会获得该文件对应的属主或属组身份所拥有的权限!要注意的是:SUID、SGID只能对文件的属主和属组来设置;

SUID 对应八进制中的4,SGID对应八进制中的2;这两个都可以使用”s”来表示;

方法:chmod u+s,g+s filename

chmod 4777 filename

chmod 6777 filename2

当一个文件被设置了SET位权限后,其对应的x就会变成”s”,如果该文件原本不具有执行权限,则会变成”S”

t(粘滞位):该权限一般用在一个开放的目录中;在一个开放的目录,会有很多个用户的文件,每个用户对这个开放的目录都具有写权限,所以对这个开放的目录设置t权限可以防止,某个用户删除不属于他的文件;注意粘滞位权限通常只对目录设置,并且只能设置在权限的第三个3位上,也就是其他人的权限位上;t对应八进制中的1。

方法:

chmod o+t filename

chmod 1777 filename

改变文件的属主和属组:

chown [options] filename

chown USERNAME:GROUPNAME filename

chown –R USERNAME filename

chown –R .GROUPNAME filename

chgrp –R GROUPNAME filename

还有几个特殊的权限:

chattr {+|-}{i|a} filename

如果是+i 则是锁住文件的i节点,这样所有用户(包括root)都无法删除和修改该文件。使用ls –lh只能看到正常的文件属性。这时如果你有权限,但是却删除不了的时候,你就要检查下文件的特殊权限了,使用lsattr来查看;

 

同样的,chattr +a file 则是使用该文件只能以追加的方式向里面添加内容,不能直接使用其他文本编辑器打开添加;同样所有的用户也包括root是无法删除的,这种属性通常会用在日志文件上;

  1. 颜色

33 颜色控制符;

[3 设置字体颜色;

1~7 表示7种颜色;

[4 表示对背景色设置;

1~7 单独数字表示对字体的显示进行控制;5是闪烁;

上面的这几个可以叠加在一起,之间用分号隔开:

33[0m 表示颜色控制结束;如果最后忘记加了则,以后你所输入的字符都会是这个颜色;不过可以使用reset来重置下终端;

例如:

[root@Nginx ~]# echo -e "33[31m Bob.Zhou33[0m"

Bob.Zhou

[root@Nginx ~]# echo -e "33[5;31m Bob.Zhou33[0m"

Bob.Zhou //这个应该是闪烁的!

[root@Nginx ~]#



Tags:Linux   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、背景介绍作为一名渗透测试工作人员(或者小白),在我们的日常工作或者学习中,我们不可能时时刻刻将自己的个人电脑(安装好Kali Linux的个人主机)带在身边,当我们没有带自己的个人...【详细内容】
2021-12-27  Tags: Linux  点击:(2)  评论:(0)  加入收藏
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  Tags: Linux  点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  Tags: Linux  点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  Tags: Linux  点击:(13)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  Tags: Linux  点击:(7)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  Tags: Linux  点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  Tags: Linux  点击:(21)  评论:(0)  加入收藏
概述我们知道SQL Server是微软公司推出的重要的数据库产品,通常情况下只支持部署在windows平台上。不过令人感到兴奋的是,从SQL Server 2017开始支持 linux系统。此 SQL Serve...【详细内容】
2021-12-17  Tags: Linux  点击:(13)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  Tags: Linux  点击:(21)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  Tags: Linux  点击:(26)  评论:(0)  加入收藏
▌简易百科推荐
作用显示文件或目录所占用的磁盘空间使用命令格式du [option] 文件/目录命令功能显示文件或目录所占用的磁盘空间一些写法的区别du -sh xxx 显示总目录的大小,但是不会列出...【详细内容】
2021-12-23  mitsuhide1992    Tags:du命令   点击:(12)  评论:(0)  加入收藏
什么是linux内核linux就像是一个哲学的最佳实践。如果非要对它评价,我真的不知道该怎么赞叹,我只能自豪地说着:“linux的美丽简直让人沉醉。”我只能说是我处在linux学习的修炼...【详细内容】
2021-12-23  linux上的码农    Tags:linux内核   点击:(15)  评论:(0)  加入收藏
本文将比较 Linux 中 service 和 systemctl 命令,先分别简单介绍这两个命令的基础用法,然后进行比较。从 CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 service服务(dae...【详细内容】
2021-12-23  软件架构    Tags:systemctl   点击:(13)  评论:(0)  加入收藏
mv是move的缩写,可以用来移动文件或者重命名文件名,经常用来备份文件或者目录。命令格式mv [选项] 源文件或者目录 目标文件或者目录命令功能mv命令中第二个参数类型的不同(...【详细内容】
2021-12-17  入门小站    Tags:mv命令   点击:(23)  评论:(0)  加入收藏
大数据技术AI Flink/Spark/Hadoop/数仓,数据分析、面试,源码解读等干货学习资料 98篇原创内容 -->公众号 Linux sed 命令是利用脚本来处理文本文件。sed 可依照脚本的指令来处...【详细内容】
2021-12-17  仙风道骨的宝石骑士    Tags:sed命令   点击:(21)  评论:(0)  加入收藏
Node是个啥?  写个东西还是尽量面面俱到吧,所以有关基本概念的东西我也从网上选择性地拿了下来,有些地方针对自己的理解有所改动,对这些概念性的东西有过了解的可选择跳过这段...【详细内容】
2021-12-15  linux上的码农    Tags:node   点击:(21)  评论:(0)  加入收藏
难道只有我一个人觉得Ubuntu的unity桌面非常好用吗?最近把台式机上面的Ubuntu 16.04格式化了,装了黑苹果用了一周,不得不说,MacOS确实很精美,软件生态比Linux丰富很多,比Windows简...【详细内容】
2021-12-14  地球末日村    Tags:ubuntu   点击:(34)  评论:(0)  加入收藏
简介Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。输出信息含义执行net...【详细内容】
2021-12-13  窥镜天    Tags:Linux netstat   点击:(26)  评论:(0)  加入收藏
对于较多数量的文件描述符的监听无论是select还是poll系统调用都显得捉襟见肘,poll每次都需要将所有的文件描述符复制到内核,内核本身不会对这些文件描述符加以保存,这样的设计...【详细内容】
2021-12-13  深度Linux    Tags:Linux   点击:(16)  评论:(0)  加入收藏
今天,我们来了解下 Linux 系统的革命性通用执行引擎-eBPF,之所以聊着玩意,因为它确实牛逼,作为一项底层技术,在现在的云原生生态领域中起着举足轻重的作用。截至目前,业界使用范...【详细内容】
2021-12-10  架构驿站    Tags:eBPF   点击:(24)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条