文件系统:
stat命令,文本编辑器:nano
touch:change file timestamps
这三个时间戳
access time, atime
modify time, mtime
change time, ctime
直接使用touch创建的是普通文件
-c: 不创建空文件
-a: 仅修改访问时间
-m: 仅修改修改时间
-t STAMP: [CC]YYMMDDhhmm.ss 修改时间戳使用-t
stat命令:
stat FILE... 查看文件信息,一切皆文件,因此都可以访问
例子:
[root@zhenzhen ~]# touch /tmp/tfile
[root@zhenzhen ~]# ls /tmp/tfile
/tmp/tfile
[root@zhenzhen ~]# stat /tmp/tfile
File: `/tmp/tfile'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: fd00h/64768d Inode: 273695 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2015-10-08 01:46:46.025954892 -0400
Modify: 2015-10-08 01:46:46.025954892 -0400
Change: 2015-10-08 01:46:46.025954892 -0400
regular file普通文件
nano, vi
Linux编辑器:
行编辑器:sed 有限几行的编辑器,流编辑器
全屏编辑器:nano, vi, vim
# nano FILE...
# nano
/tmpp/abc
用户和权限管理:
1、用户是什么?
2、没有用户,可否?
file1: Tom
file2: Jerry
用户:资源分配,是安全权限模型的核心要素之一
密码:用户认证
多用户的操作系统:
信息库:用户 密码
名称解析:用户身份标识符(User IDentifier, UID)
用户容器:组(group),角色(role)
组名,Group IDentifier, GID
组是用来实现权限指派的,某一用户属于哪个组,则就拥有该组赋予的权限
单一用户可以只属于自己的私有组
名称解析过程:在数据库按搜索码查找到对应的条目,并找与之对应额外其它数据过程,所以说解析的过程就是一个查询的过程
数据库:类型
文本文件
SQL数据库
ldap数据库:非常强大的放用户帐户信息的数据库
/etc/passwd:Linux使用文本文件存储用户信息,用户信息库,不存密码。
[root@zhenzhen ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash root用户的,在/root目录下
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
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
zhenzhen:x:500:500::/home/zhenzhen:/bin/bash zhenzhen用户的,在/home/zhenzhen下
加密方法:
对称加密:DES, 3DES, AES(高级加密标准)
公钥加密:用公钥加密,然后用私钥解密,DSA, RSA
单向加密:雪崩效应,定长输出,不可逆
MD5: 信息摘要,128bits定长输出
SHA1: 安全的hash算法, 160bits
SHA256:
SHA512:
密码信息库:/etc/shadow
Tom:mageeduabce, $6$abce$fkdlagjdkalghio3qu4389qjtrkiejgr
Jerry:mageeduxyzm $6$xyzm$878956ukijotrjiytoeutyvimyeuiore
[root@zhenzhen ~]# cat /etc/shadow
$标识使用哪种加密方法$加的盐$
root:$6$ucJd8teVD2wgA7H1$..575jvOI9GYHlOQ96OiysYrpDK23MHGbd34i20gsCSHkwQRrOd843lvVhtjfWdhOaPNx6.fNKwKK7AZFaoEe/:16710:0:99999:7:::
获取校验码指令:
md5sum指令,取指定文件校验码 加密为每位为十六进制的。
[root@zhenzhen tmp]# md5sum tfile
ba1f2511fc30423bdbb183fe33f3dd0f tfile
sha1sum指令,后加文件名字可获取对应加密的校验码
openssl指令,获取密码加密后的,是ASC码,密码加密机制
[root@zhenzhen tmp]# openssl passwd -1 -salt 1234
Password:
$1$1234$U3f45arNuiu79JInkbJOj0
$使用的加密方法$加入的盐$加密后的结果
组:用户容器,角色
/etc/group 在这里,组
/etc/gshadow 组密码文件在这里
任何操作都是一个进程作为代理来运行,也就是我们的任务是交由进程去代理完成的
安全上下文:
运行中的进程也有其属主和属组:根据用户所属的组权限来判断是否运行这个进程
接下来的内容
大纲:useradd, id, passwd, usermod, chsh, chage, chfn, userdel, groupadd, groupmod, groupdel, su
创建用户:
useradd UserName 添加用户只有管理员有权限
/etc/passwd:应用的字段的意义
用户名:x(密码占位符,表示密码在shadow中存放):UID(用户id):基本组ID(组名在group文件里):comment信息:HOME:默认shell
/etc/shells 当前系统上安全的shell列表
牛逼!!!!!
新创建用户时:骨架,可以通过 man useradd 中查看FILES,去查看细致的过程
[root@zhenzhen ~]# ls -a /etc/skel/
. .. .bash_logout .bash_profile .bashrc
[root@zhenzhen ~]# ls -a /home/zhenzhen/
. .. .bash_history .bash_logout .bash_profile .bashrc
新建用户时,在home下会建立相应的用户目录,目录的基本骨架是继承于/etc/skel下的文件,因此新建的用户会有一定的配置。skel骨架。
[root@zhenzhen ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
这个是文件/etc/default/useradd 默认用户建立的参考配置文件。
[root@zhenzhen ~]# ls /var/mail/ 这个目录下是对应用户的邮件缓冲池文件
zhenzhen
useradd: adduser是链接
-u UID:指定UID用户ID
-g GID: 指定GID组ID,即指定用户的基本组,但GID要事先存在
指定用户基本组,要唯一
-G GID:指定用户的额外组,组要事先存在,创建时指定
[root@zhenzhen ~]# useradd -G 502 two
[root@zhenzhen ~]# tail -2 /etc/passwd
one:x:501:501::/home/one:/bin/bash
two:x:502:503::/home/two:/bin/bash
[root@zhenzhen ~]# tail -2 /etc/group
groupone:x:502:two
two:x:503:
添加时指定额外组,还会创建自己的用户组,外加到额外组,可在group文件中对应组查看
-d /path/to/somewhre:
-c "Comment":
-s /path/to/shell: 指定默认shell,应该指定使用/etc/shells文件中出现的shell;
[root@zhenzhen ~]# echo $SHELL
/bin/bash
可查看当前shell
[root@zhenzhen ~]# useradd -u 1100 -d /home/my -s /bin/csh usersss 可同时指定多个
-m: 创建用户时,强制给用户创建家目录;
-M: 创建用户,但不创建家目录;
-r: 创建系统用户
id: 1-499
不会为用户创建家目录
默认shell为/sbin/nologin
-D: default,为useradd命令创建的用户指定新的默认值
groupadd GrpName
-g GID: 创建组并为其指定GID
查看group文件
[root@zhenzhen ~]# tail /etc/group
utempter:x:35:
cdrom:x:11:
tape:x:33:
dialout:x:18:
saslauth:x:76:
postdrop:x:90:
postfix:x:89:
fuse:x:499:
sshd:x:74:
zhenzhen:x:500:
用户类别:
管理员:ID号为0
普通用户:ID号为1-65535
系统用户:1-499
登录用户:500开始的
用户组:
管理员组
普通组
系统组:
登陆组:
以用户为视角,组可为两类:
基本组: 显示在/etc/passwd中GID字段组,为用户的基本组;
额外组,附加组: /etc/group
userdel: 删除用户, 默认会保留家目录
格式:userdel UserName
-r: 一并删除家目录
总结:
/etc/passwd:
Username:x:UID:GID:Comment:Home:Shell
/etc/group:
GroupName:x:GID:User List
/etc/skel, /etc/default/useradd创建用户的默认值定义在这里
设定用户密码: passwd
普通用户:passwd
管理员:
改自己密码:passwd
改其它用户密码:passwd UserName
密码安全性策略:足够复杂
够长;
交叉应用数字、大写字母、小写字母和特殊中的至少三种;
尽量避免使用易猜测的密码;
定期更换;
使用whatis shadow可以查看shadow文件的帮助
[root@zhenzhen etc]# whatis shadow
shadow (3) - encrypted password file routines
shadow (5) - shadowed password file
/etc/shadow文件的格式:
UserName:加密的密码:最近一次密码修改时间:最短使用期限:最长使用期限:警告区间:非活动区间:帐号的过期期限:预留段
[root@zhenzhen etc]# cat shadow
root:$6$ucJd8teVD2wgA7H1$..575jvOI9GYHlOQ96OiysYrpDK23MHGbd34i20gsCSHkwQRrOd843lvVhtjfWdhOaPNx6.fNKwKK7AZFaoEe/:16710:0:99999:7:::
passwd
-1--223: 锁用户 root在passwd -l 用户名 即可锁用户
-u: 解锁
设定组密码:gpasswd GroupName,不常用
如何修改用户的属性定义:
修改用户默认shell: chsh+用户名 /bin/csh
修改用户注释:chfn+用户名
usermod:
-u UID:改用户id
-g GID:改用户基本组
-G GID: 默认会覆盖原有的附加组;如果是添加,则同时使用-a选项;
每个用户可以属于任何其他的组,如需要属于多个组,在添加组是需要加-a。
每个用户都会只有自己的一个基本组,但是对于其他用户来说除了自己的基本组其他都是附加组,可以进行添加附加组操作
-c String:
-d /path/to/New_Home: 默认不会迁移用户的家目录;如果要迁移,则同时使用-m
-s SHELL: 指定新shell,只能是允许使用的安全shell
-l New_login_name: 更改用户名
-L: 锁定用户帐号
-U: 解锁
如何修改组属性定义:
groupmod:
-g GID
-n New_Group_Name:
修改帐号日期属性:chage 修改用户的密码设置时间,如过期时间、警告时间等
-E
-I
-m
-M
-W
查看用户相关信息id:
id UserName
-u: 显示UID,跟-n一起使用则显示用户名
-g: 显示基本组ID,跟-n一起使用则显示基本组名
-G: 显示所有组ID,跟-n一起使用则显示所有组名
组管理相关命令总结:
groupadd
groupmod
groupdel
gpasswd
newgrp+组名,可以切换到某一个不曾加入的组,如果附加组里有则不需要密码,可直接切换
基本组的含义是用户当前所在的组,可以通过newgrp进行组之间的切换,把附加组切换成基本组(当前操作组)
使用exit退出附加组,重新换位原始基本组
su: Switch User
切换用户:
su Username
-l 登陆式切换
-c 'COMMAND'
su -l -c 'ls ~' zhenzhen 在root下以zhenzhen用户的身份执行‘’里的命令
普通用户su其他用户需要密码
练习:
1、创建一个用户mandriva,其ID号为2002,基本组为distro(组ID为3003),附加组为linux;
# groupadd linux
# groupadd -g 3003 distro
# useradd -u 2002 -g distro -G linux mandriva
2、创建一个用户fedora,其全名为Fedora Community,默认shell为tcsh;
# useradd -c "Fedora Community" -s /bin/tcsh fedora
3、修改mandriva的ID号为4004,基本组为linux,附加组为distro和fedora;
# usermod -u 4004 -g linux -G distro,fedora mandriva
4、给fedora加密码,并设定其密码最短使用期限为2天,最长为50天;
# passwd fedora
# chage -m 2 -M 50 fedora
5、将mandriva的默认shell改为/bin/bash;
下次内容
权限、shell特性