1,权限相关概念
Rwx
任何一个文件都应该由两部分组成,这两部分其实基于文件系统来组织,磁盘分区创建完成后,在高级格式化的时候,就把整个磁盘分区分成两部分,其中一部分是源数据,一部分是来放数据的,所有的数据都放在数据区的数据块上,读权限其实就是去查看原数据指向的数据快中的内容,可以使用cat,tail等来查看这些内容,对目录而言就比较独特,目录的R权限,可以对其执行ls。目录和文件来讲都有源数据和数据,目录名等信息是放在源数据中的
而目录的所有文件信息,其实也存放于数据区,所以对于目录而言执行ls命令就雷同于文件打开一样,但仅能看到仅要信息
W权限对文件而言可以编辑文件内容,而目录则可以删除创建文件,所以一个用户即便对一个文件没有写权限,并不意味着他不能够删除文件,因为它只要对目录有写权限就可以删除这个目录上的所有文件
X执行权限,如果对于一个文件而言,他可以吧这个文件提取给内核发起一个起动的进程,
进程是一个动态概念,他需要获得CPU的时间,内存,获得文件打开的权限,文件描述符等等等
在ls –l的时候看到有9位权限
Rwxrwxrwx
左侧三位:文件属主来访问的权限
中间三位:属组内的所有用户访问权限
右三位:既非属主又非属之外的,其他权限
2,用户,组,权限深入详解
Useradd,del,mod,pass
创建,删除,修改,添加密码
Groupdd,del,mod,pass
创建,删除,修改,添加密码
用户账号:用户,组
useradd存放目录:
用户账号: /etc/passwd
[root@bogon ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
man 5 passwd 查看,给出的格式
account:password:UID:GID:GECOS:directory:shell
1:用户账号
2,密码占位符,通常x表示,x表示密码并不存放在本地
存放在shdow(the encrypted user password, anasterisk (*), or the letter 'x'.(See pwconv(8) for an explanation of'x'.))
3,UID 用户自身的数字表示
4,GID 用户所属基本组ID
5,GECOS 用户注释:住址信息办公电话等等
6,directory,用户家目录位置(用户有家目录,但是用户家目录未必存在)
7,shell:用户的默认的(bin/bashell)shell(用户必须有一个合法的(etc/shell),可以的shell,否则将无法登录系统)
用户登录会打开一个交互界面
Useradd和adduser是同一个文件,只是一个符号连接而已。
[root@bogon ~]# which useradd
/usr/sbin/useradd
[root@bogon ~]# which adduser
/usr/sbin/adduser
[root@bogon ~]# ls -l /usr/sbin/ad
addgnupghome* adduser@
[root@bogon ~]# ls -l /usr/sbin/adduser
lrwxrwxrwx. 1 root root 7 Mar 23 06:35 /usr/sbin/adduser -> useradd
[root@bogon ~]#
注意:用户比较容易识别的是名称,但计算机更容易识别的是数字,所以用户登录时,无论我们输入的是什么样的用户名,最后计算机都会把他转变成数字,并接着随后的时间都是用数字来追踪。计算机通过查看/etc/passwd文件,将用户账号,查找用户搜索键,逐次比较查找,比如你登录的是root,它会查找root的Id号是什么。
这个过程我们称之为:名称解析过程
名称解析:name resolving
名称解析把一种名字转换为另外一种名字的过程,叫做名称解析。
名称解析基于名称解析库:数据库文件,
以某个字段为搜索键,一一对应到另外一个字段的数据,就完成了名称解析
NAME <->ID
-u uid
-g gid Gid需要事先存在,如果不是用-G选项,useradd会自动创建一个与用户同名的组作为用户所属的基本组,此时词组一般也成为用户的私有组
-c 注释信息
-d /path/./. 显示指定家目录:默认/home/
-s /bin/ 指定用户默认使用的shell
用户类别:
管理员:0
系统用户:1-499 (服务,程序特别创建,可能并不需要登录,没有家目录)
普通用户:500+ (useradd)
-r 创建系统用户
-m 必须给用户创建家目录
-M 不给用户创建家目录
-d 设定用户创建时useradd的默认行为
-G 为用户指定附加组 (需要事先存在)
[root@bogon ~]# Groupadd distro
[root@bogon ~]#useradd –G distro slackware
如果GID和UID不相同是,权限有所改变
Id命令;
[root@bogon ~]# id nginx
uid=496(nginx) gid=492(nginx) groups=492(nginx)
[root@bogon ~]#
GID为用户的GID,在GID之后的是附加组,以逗号隔开
Man ID查看其他命令
-u uid
-g gid
-G groups
-n groupname
Finger name(查看用户信息:登陆名,name,家目录,shell,创建后的登陆史,用户邮件,任务计划)
Sbin/nologin(系统用户可以-s)
[root@bogon ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
[root@bogon ~]# ls /sbin/nologin
/sbin/nologin
[root@bogon ~]#
用户密码: /shadow
组账号:/etc/group
组密码:/etc/gshadow
Groupadd :
/etc/group
Whatis group
Man groupadd
group_name:passwd:GID:user_list
name
userlist:以词组为其附加组的用户的用户列:以逗号分隔
-g gid
-r 添加为系统组
还有几个useradd相关配置文件
Man useradd
/etc/default/useradd
Default values for account creation.
[root@bogon ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home 定义用户家目录
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash 定义用户默认shell
SKEL=/etc/skel skel创建用户的骨架
CREATE_MAIL_SPOOL=yes 定义邮件队列 :/var/mail/&/var/spool下创建于用户同名文件
[root@bogon ~]#
/etc/skel/
Directory containing default files.
我们打开/etc/home/mark下看到几个文件是隐藏的,这些文件来自/etc/skel复制而来,而有些文件是后期生成的。创建一个用户有家,登陆进来能看到正常的提示符,就是这个原因。
如果没有,将异常,比如:系统用户(会没有ps1定义等等)
[root@bogon ~]# ls -a /home/mark/
. .esd_auth .mozilla
.. .fontconfig Music
.bash_history .gconf .nautilus
.bash_logout .gconfd Pictures
.bash_profile .gnome2 Public
.bashrc .gnome2_private .pulse
.cache .gnote .pulse-cookie
.config .gnupg .ssh
.dbus .gstreamer-0.10 Templates
Desktop .gtk-bookmarks Videos
.dmrc .gvfs .Xauthority
Documents .ICEauthority .xsession-errors
Downloads .local .xsession-errors.old
[root@bogon ~]# ls -a /etc/skel/
. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla
[root@bogon ~]#
Useradd –D –s /bin/tcsh更改shell为tcsh(也就是改变这个文件)
[root@bogon ~]# useradd -D -s /bin/tcsh
[root@bogon ~]# cat /etc/de
default/ depmod.d/
[root@bogon ~]# cat /etc/default/useradd
useradd useradd-
[root@bogon ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/tcsh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@bogon ~]#
/etc/login.defs
Shadow password suite configuration.
[root@bogon ~]# man 5 shadwo
No entry for shadwo in section 5 of the manual
[root@bogon ~]# man 5 shadow
用户加密后存放的密码
Etc/shadow
login name:登陆名
encrypted password:加密后的密码
date of last password change:最后一次修改密码日期;相对于1970年1月1号至上次密码修改经过的天数(需要换算)
minimum password age:密码最小使用期限 :单位:天
maximum password age:密码最大使用期限:单位:天
password warning period:密码警告期限:0表示不警告
password inactivity period:密码非活动期限,超出活动期限将被锁定
account expiration date:密码过期期限,其为一个日期(起始1970年1月1)
reserved field;预留字段;
在我们useradd 用户后,这些信息是被自动添加的
Passwd命令:
Passwd:改自己密码
Passwd 用户名:改指定用户密码
管理员不受任何密码强度,且可直接修改任何成员密码
-n,-x,-n,-k,-d,man查看
--stdin:标准输入:#echo “passwd ” | passwd –stdin 用户
例如:
锁定:passwd -l 用户
锁定就是在用户密码前加!!而成的,可以在/etc/shadow查看,-u解锁
Usermod命令:(man查看)
-c comment :注释信息
-d /PATH 修改用户的家目录;
-m修改家目录后一同把用户复制至新位置
-g GID 修改用户的基本组
-G GID1,GID2,…:修改用户附加组
-a:于-g一同使用,表示将用户添加至新指定的附加组,且保留原来的
-i :修改原来的登陆名
-s :修改用户默认shell
-l 锁定用户
-u解锁用户
Chsh 命令:
Chsh 用户名
Chsh –l :列出当前系统上可用shell
-s :修改为指定shell
Chfn命令:
Chfn
*/etc/shadow密码加密,以及如何对比如何认证的
user1:$1$lXgoPEgC$nbeN8ARcer.SqJ4I3l0rT1:16525:0:99999:7:::
加密/解密;
明文,密文
常用的加密方法:
对称加密:优点:速度快
缺点:秘钥分发困难
公钥加密(对称):缺点:中间人攻击
单向加密:仅能由明文产生密文:反之不成;严格严格意义上来讲,它实现的是提取数据特征码
同一个数据,使用同一个算法,多次计算得到的结果一定相同;常用于验证数据完整性
定长输出:无论原数据大小是说明,加密后的结果输入大小相同
例如:验证字符串的统一数据
[root@bogon ~]# md5sum /tmp/yum.log
d41d8cd98f00b204e9800998ecf8427e /tmp/yum.log
[root@bogon ~]# md5sum /tmp/yum.log
d41d8cd98f00b204e9800998ecf8427e /tmp/yum.log
[root@bogon ~]# md5sum /tmp/yum.log
d41d8cd98f00b204e9800998ecf8427e /tmp/yum.log
[root@bogon ~]# md5sum /tmp/yum.log
d41d8cd98f00b204e9800998ecf8427e /tmp/yum.log
[root@bogon ~]# md5sum /tmp/yum.log
d41d8cd98f00b204e9800998ecf8427e /tmp/yum.log
[root@bogon ~]#
比如我们创建两个用户同一个密码,得到的密码字符串是不一致的(在数据加密之前被加入随机码而生成;在etc/shadow 中,密码字符串前$于$中间的,此乃随机码)
MD5:message digest
Shal: secure hash algorithm
Centos :sha512
Centos:md 5
Md5:message digest
123bits位位数定长输出
Sha1:secure hash algorithm
160bits 位位数定长输出
Sha256:
256bits 位位数定长输出
Sha512:
512bits
Shadow
$加密算法$8位随机字符$加密后的密码
Chage :修改用户账户密码的过期信息
Chage –l :查看用户的过期信息
Su:百度吧
事实上实现用户账号和组的管理大多数时候,可以直接编辑这些文件来实现
一次用户的创建大概经历了那些过程?
Useradd添加一个用户时:
1,在/etc/passwd文件中添加一行信息:
[root@bogon ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
译----〉用户账号:密码字符:uid:gid:注释信息:家目录:shell
2,在/etc/group文件中添加一航信息
[root@bogon ~]# cat /etc/group
root:x:0:
组名:占位符:gid:user_lost
3.创建家目录,默认是和用户同名的目录/home/用户名
复制etc/skel目录中的隐藏文件至用户的加目录中
并修改其属主,属组权限
4,在/etc/shadow创建用户密码相关属性信息:密码默认为空,密码最长使用期限