文件系统:




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特性