只有光头才能变强html
回顾前面:linux
没想到上一篇能在知乎得到千赞呀,Linux也快期末考试了,也有半个月没有写文章了。这篇主要将Linux下的用户和权限知识点再整理一下。算法
那么接下来就开始吧,若是文章有错误的地方请你们多多包涵,不吝在评论区指正哦~shell
Linux是一个多用户的系统,咱们能够多个用户同时登录Linux~安全
Linux中的帐户包括bash
当一个用户同属于多个组时,将这些组分为微信
上面也说了,帐户的实质上就是用户在系统上的标识,这些标识是用文件保存起来的:post
/etc/passwd
文件中,文件权限 (-rw-r--r--)
/etc/group
文件中,文件权限(-r--------)
/etc/shadow
文件中 ,文件权限(-rw-r--r-- )
/etc/gshadow
文件中 ,文件权限 (-r--------)
也就是说:咱们建立的用户,这个用户的信息由不一样的文件来保存着。性能
有了上面的知识点,下面我来简述一下建立用户的时候会发生什么:学习
/etc/passwd
这个文件中,用户的口令一般用shadow passwords
保护再来回顾一下:帐户的实质上就是用户在系统上的标识,这些标识是用文件保存起来的。也就是说:咱们是能够直接编辑修改系统帐户文件来维护帐户。
pwck
:验证用户帐号文件,认证信息的完整性。该命令检测文件“/etc/passwd”
和“/etc/shadow”
的每行中字段的格式和值是否正确grpck
:验证组帐号文件,认证信息的完整性。该命令检测文件“/etc/group”
和“/etc/gshadow”
的每行中字段的格式和值是否正确。既然不建议咱们直接编辑文件的方式来管理用户,那么Linux是确定有现成的命令给咱们使用的:
用户管理:
useradd
usermod
userdel
组管理:
groupadd
groupmod
groupdel
批量管理用户:
newusers
chpasswd
组成员管理:
gpasswd -a <用户帐号名> <组帐号名>
usermod -G <组帐号名> <用户帐号名>
gpasswd -d <用户帐号名> <组帐号名>
口令维护(禁用、恢复和删除用户口令):
passwd [<用户帐号名>]
passwd -l <用户帐号名>
passwd -S <用户帐号名>
passwd -u <用户帐号名>
passwd -d <用户帐号名>
口令时效设置:
/etc/login.defs
的相关配置参数设置已存在用户的口令时效:
chage
命令用户切换命令:
su
sudo
更多资料查询:
用户相关的命令:
id
:显示用户当前的uid、gid和用户所属的组列表groups
:显示指定用户所属的组列表whoami
:显示当前用户的名称w/who
:显示登陆用户及相关信息newgrp
:用于转换用户的当前组到指定的组帐号,用户必须属于该组才能够正确执行该命令用cat命令,观察以下文件:/etc/passwd , /etc/shadow, /etc/group,/etc/gshadow;显示useradd命令添加用户参数的默认值
创建linux帐户jkXX(XX为学生学号末两位),要求用户组为users,并设置密码;观察/etc/passwd和/etc/shadow文件的变化;退出root帐户,用jkXX帐户登陆,在其主目录下创建一个myfirst文件,并用长格式列出myfirst文件
用root帐户登陆;添加组jsj;设置用户jkXX为jsj组用户,观察/etc/passwd、/etc/group和/etc/gshadow文件变化
添加一个新用户airXX(XX为学生学号末两位),观察新用户airXX的用户id和组id;而后删除该用户,注意不要在命令中加选项,观察用户文件和组文件的变化;观察airXX用户的目录是否存在;
shadow文件中密码为*号和!!表明什么?
答:*
表明帐户禁用;!!
表明密码锁定。
airXX用户组id是多少?这个组是什么类型的组?这样作有什么好处?
答:air08用户组id是501,这个组属于私有组。每一个未指定组的用户会创建一个同名的组,这样的组称为私有组,只有一个用户,既有利于防止信息泄露,也也有利于防止不合理的受权。总之,有利于安全管理。
默认状况下删除用户,但却保留了用户的主目录,这样作有什么好处?
答:保留用户目录,防止将用户目录下有价值的资料误删除。
用cat命令,观察文件/etc/passwd;仿照passwd文件的格式,用vi编辑一个新的文件,文件名为userXX(XX为学生学号末两位),文件包括3条记录,用户名分别为jkXX(XX为学生学号末两位),peter,jason,他们的用户id大于1000,组id大于1000,要求peter和jason同组;用命令newusers根据文件userXX的内容批量生成用户;观察/etc/passwd文件的变化。
用cat命令,观察文件/etc/shadow;用vi编辑一个新文件,文件名为mimaXX(XX为学生学号末两位),文件包括3条记录,每条记录用户名与上一步骤要求相同,密码自行设置,用户名和密码用冒号:隔开;用命令chpasswd根据文件mimaXX的内容批量生成密码;观察文件/etc/shadow变化;用命令chpasswd -m再次批量生成密码,观察文件/etc/shadow变化;
退出root帐户,用jkXX帐户登陆。退出jkXX帐户,返回root帐户,观察/etc/shadow文件;用passwd命令锁定用户jkXX,观察/etc/shadow文件变化;而后退出root帐户,用jkXX帐户登陆,是否成功?
用chage命令查看peter帐户的时间设置;从新设置peter帐户的时间,要求两天内不能更改口令,且口令最长的存活期为 90 天,并在口令过时前 5 天通知用户,口令超期7天密码失效;用chage命令再次查看peter帐户的时间设置
用root帐户登陆;用su切换到jason帐户;用cd进入用户主目录;建立一个新文件abc,用长格式列出abc文件;观察文件的用户和组的属性
锁定帐户后,shadow文件发生了什么变化?
答:锁定帐户的密码以前会锁定标志!!
用su切换用户后,创建的新文件文件属于哪一个用户?
答:新文件属于切换以后的用户。
两次执行chpasswd命令,结果是否相同?加密算法md5和sha512哪一个更安全?
答:两次执行chpasswd命令结果不一样,默认状况采用sha512加密算法;-m选项时,采用md5加密算法;sha512更安全,由于加密信息长度更长,破解计算量大。
创建三个普通用户帐户,要求以下:用户名分别为jkXX(XX为学生学号末两位),peter,jason,其中jkXX和jason为相同普通组成员;观察/etc/passwd文件的变化。为jkXX帐户添加root组;
分别练习id,groups,whoami,who命令,显示当前帐户的信息;用su命令切换到jkXX帐户,分别练习id,groups,whoami,who命令,显示当前帐户的信息。用newgrp切换jkXX帐户的组,分别练习id,groups,whoami,who命令,显示当前帐户的信息
Linux是多用户的操做系统,容许多个用户同时在系统上登陆和工做。 为了确保系统和用户的安全,Linux天然就有本身一套的权限管理机制了!
相信用过Linux的同窗在检索文件夹文件的时候经常用到ls -l
的命令,会出来一大串的数据。这些数据你能读懂了吗?
例如:
drwxr-xr-x 3 osmond osmond 4096 05-16 13:32 nobp
复制代码
其实很简单:
其实咱们看权限就是看drwxr-xr-x
这么一串东西,看起来很复杂,但不是的,一下就能够理解了。咱们来分解一下:
这9个字符每3个一组,组成 3 套 权限控制
rwx分别表明的意思:
看到这里来,若是前面的你看懂了,那drwxr-xr-x
这么一串东西我以为你很容易就能理解了:
-
号表示没有。那么这个文件夹的权限就是:
是否是很简单??r-read,w-write,x-execute
,很好理解的。
对于这些rwx命令为了方便还能够换成八进制的数据来表示,我相信你们看完下面的demo也知道其实就这么一回事了:
权限的优先顺序:
chmod
chown
chgrp
umask
例子:
上面提到了umask属性,它用来作这样的东西的:默认生成掩码告诉系统当建立一个文件或目录时不该该赋予其哪些权限。
除了上面所说的权限以外,Linux还提供了三种特殊的权限:
它们是这样表示的:
例如:drwxrwxrwt 5 root root 4096 06-18 01:01 /tmp
它就拥有sticky-bit权限。-rwsr-xr-x 1 root root 23420 2010-08-11 /usr/bin/passwd
它就拥有SUID权限
SUID,SGID,sticky-bit一样也有数字的表示法:
使用的例子:
Linux内核中有大量安全特征。EXT2/3/4文件系统的扩展属性(Extended Attributes)能够在某种程度上保护系统的安全
常见的扩展属性:
经常使用命令:
lsattr [-adR] [文件|目录]
chattr [-R] [[-+=][属性]] <文件|目录>
用root帐户登陆,建立一个文件aaaXX(XX为学生学号末两位),用长格式查看文件权限;用chmod命令,文字设定法,给aaaXX文件同组增长写属性,观察结果;用chmod命令,数字设定法,给aaaXX文件设置权限为766,观察结果;
切换到peter帐户,查看当前umask是多少,观察结果;建立一个目录foldXX(XX为学生学号末两位),查看其权限;建立一个新文件bbb,查看其权限;改变unmask为066,建立一个新文件ccc,查看其权限
切换到jkXX帐户;建立一个文件myfile,观察其属性;用chgrp改变文件myfile组属性为root;试着去改变文件myfile主属性为root,能够吗?切换到root帐户,改变文件myfile主属性为root,观察结果
数字设定766表明文件权限是什么?
答:766表明文件权限为rwx-rw-rw-
为何用jkXX帐户改变文件myfile的属主失败?
答:由于chown只有root帐户才可使用
Umask为022和066对新建立的文件属性影响同样吗?为何?
答:影响固然不同,umask定义的是默认不该该得到的权限,066比022转换成为二进制数后,多了两个限制比特位。
以root帐户登陆,复制/usr/bin/dir文件到用户主目录,用长格式列出,设置文件的suid和sguid为1,用长格式列出;切换账号为jkXX,运行复制过来的文件dir(注意运行当前路径下的文件要带上路径,例如./dir);
切换到jkXX帐户,进入/tmp目录,创建文件夹myfold,设置文件夹myfold权限为777,而且sgid和sticky-bit为1,用长格式列出,观察myfold的属性;进入myfold,建立新文件aaa,设置属性为任何人可读可写,用长格式列出;切换到jason帐户,进入/tmp/myfold目录,删除aaa文件,是否能够删除?
root帐户,进入用户主目录;建立一个文件bbb文件,查看文件的扩展属性;给文件bbb添加扩展属性i,而后试着删除该文件,是否成功,怎样才能删除;建立一个ccc文件,给文件ccc添加扩展属性a,用长格式列表/bin目录并重定向输出到ccc文件,观察ccc文件长度的变化,用长格式列表/etc目录,并重定向输出到ccc文件,是否成功
切换到jkXX帐户,在/tmp目录下建立一个目录myshare,用getfacl查看myshare目录文件访问控制表;设置myshare文件夹对于jason用户权限为rwx,查看文件访问控制表的变化;切换到jason帐户,进入myshare文件建立文件yyy,是否成功;切换到peter帐户,进入myshare文件建立文件zzz,是否成功,为何?
myfold目录下,为何jason帐户不能删除一个任何人均可读可写的文件?
答:由于文件所在的文件夹myfold被它的所属者jk08设置了stickybit位,该文件夹下面的全部文件,只有文件所属者,以及root用户才能删除。
为何peter帐户在在myshare文件夹里面不能建立文件?
答:由于myshare文件夹,属于jk08用户,只有jk08对该目录具有rwx权限。此外,采用facl的方式,给jason用户开放了该目录的rwx访问权限;peter既不是文件夹的拥有者,也没有在facl中开放rwx权限;依据权限设置状况,peter只有该文件夹的rx权限。所以,不能建立文件。
添加扩展属性a后,用重定向将输出内容给ccc文件,可能会失败,怎样才能输出成功?
答:应该采用追加方式的重定向>>,能够在文件末尾添加内容,这样才符合文件扩展属性a的安全规定。
本文主要是总结了Linux下操做用户和权限的知识~~~这两个知识点在Linux下也是很重要的,是学习Linux的基础~
继续完善上一次的思惟导图:
若是文章有错的地方欢迎指正,你们互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同窗,能够关注微信公众号:Java3y
文章的目录导航: