linux学习三————用户与权限管理

用户管理常用命令

useradd  新建用户(root权限)

userdel   删除用户(家目录保留)

参数-r(家目录删除)

passwd  修改用户密码

usermod 修改用户属性

参数-d 修改

usermod -d /home/w1 w(将家目录w改为w1)

-g 修改用户组

chage  修改用户属性

id+用户名 查看用户

家目录:/home/用户名

/root  root管理

/etc/passwd  用户被记录在该目录

/etc/shadow  用户密码相关的目录

 

组管理命令

groupadd 新建用户组

1.groupadd group1

useradd user1

usermod -g group1 user1

2.useradd -g group1 user2

groupdel 删除用户组

 

临时切换用户

su - +用户(root切换到普通不需要密码;反之需要)

su-------切换用户

su - username 使用login shell方式切换用户

sudo  以其他用户身份执行命令(以自己的身份执行其他用户身份的命令)

visudo  设置需要sudo的用户(组)

shutdown -h 30(30分钟后关闭linux系统;shutdown -c取消关闭)只能root用户执行

:which shutdown(查看shutdown命令在哪个目录下)

 

用户和用户组的配置文件

/root                        root用户的家目录

/home/username    普通用户的默认家目录位置

/etc/shadow            用户密码相关配置文件

用户名称:加密的密码

/etc/passwd             用户配置文件

用户名:是否需要密码验证:uid:gid:家目录:用户登陆的命令解释器

user1:x:1003:1003::/home/user3:/bin/bash

/etc/group                用户组配置文件

组的名称:组是否密码验证:组的gid:其他组设置

 


 

 

用户信息文件:      /etc/passwd

 

密码文件:            /etc/shadow

 

用户组文件:        /etc/group

 

用户组密码文件: /etc/gshadow

 

用户配置文件:

 

   /etc/login.defs

 

   /etc/default/useradd

 

新用户信息文件:/etc/skel

 

登录信息:          /etc/motd

 

 

 

========================用户信息文件详解============================================

 

我们先看一下用户信息文件里都放的什么

 

 

 

[root@localhost ~]#  vi   /etc/passwd

 

root:x:0:0:root:/root:/bin/bash

 

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
news:x:9:13:news:/etc/news:/sbin/nologin

 

........

 

每一行内容存放一个用户的信息,每个用户信息有7部分组成

 

root:x:0:0:root:/root:/bin/bash

 

root        用户名         用户登录系统时使用的用户名

 

x             密码            密码位

 

2             UID            用户标识号

 

2             GID            缺省组标识

 

root     注释性描述      例如存放用户全名等信息

 

/root         宿主目录       用户登录系统后的缺省目录

 

/bin/bash   命令解释器    用户使用的Shell ,默认为bash

 

 

 

UID ?

 

     关于上面的UID这里细说一下,其实决定用户是什么权限,是由UID号决定的。

 

     linux用户分为三种:

 

超级用户:(root   UID=0)

 

普通用户: (UID 500~60000)

 

伪用户:  (UID  1~499)

 

    所以,我们可以修改用户的UID号来修改用户的类型,如果把root的UID号为500,那么root就变成了普通用户,如果把fnngj用户的UID改为0,那么它就拥有了root用户的超能力。

 

[root@localhost ~]#  vi   /etc/passwd   进入之后修改,完了保存退出就OK了。

 

 

 

伪用户?

 

     说到用户种类,又牵扯到一个伪用户,那么伪用户是干什么用的?

 

1.伪用户与系统和程序服务相关

 

    bin、daemon、shutdown、halt等,任何Linux系统默认都有这些伪用户。

 

    mail、news、games、apache、ftp、mysql及sshd等,与linux系统的进程相关。

 

2. 伪用户通常不需要或无法登录系统

 

3. 可以没有宿主目录

 

 

 

==========================密码文件详解========================================

 

       用户密码文件,用户信息文件中留有密码位,为什么没密码了呢? 其实,最早的linux这个位置真的是放密码的,因为不全安,所以,就将密码单独存放了,现在只是用x表示这里有存放密码的位置。

 

    为什么要把密码放在/etc/shadow中

 

 

 

[root@bogon /]# ls -l /etc/shadow    
-r--------  1 root root 1021  2月 27 21:31 /etc/shadow          我可以看到这个文件只有管理员root有权限查看修改

 

 

 

现在我们来看密码文件都放了什么?

 

[root@bogon /]# more /etc/shadow

 

root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15391:0:99999:7:::
bin:*:15391:0:99999:7:::
daemon:*:15391:0:99999:7:::
adm:*:15391:0:99999:7:::
lp:*:15391:0:99999:7:::
sync:*:15391:0:99999:7:::
shutdown:*:15391:0:99999:7:::
halt:*:15391:0:99999:7:::
mail:*:15391:0:99999:7:::
news:*:15391:0:99999:7:::
uucp:*:15391:0:99999:7:::
operator:*:15391:0:99999:7:::
games:*:15391:0:99999:7:::

 

..........................

 

 

 

我们还以第一行为例进行分解。

 

root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15391:0:99999:7:::

 

root              用户名       用户登录系统时使用的用户名

 

$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.    密码     加密密码   MD5

 

15391     最后一次修改时间    linux这里以1970年1月1日作为1,1971年1月1日就是366,依次类推到我修改密码的日期表示为15391了。

 

0         最小时间间隔           这个字段代表要经过多久才可以更改密码。如果是“0”表密码可以随时更改。

 

99999         最大时间间隔           于害怕密码被人盗取而危害到整个系统的安全,所以安排了这个字段,你必须在这个时间内重新修改密码,否则这个帐号将暂时失效。上面的99999,表示密码不需要重新输入,最好设定一段时间修改密码。确保系统安全

 

7         密码变更期期限快到前的警告期:当帐号的密码失效期限快到时,系统依据这个字段的设定发出警告,提醒用户“再过n天您的密码将过期,请尽快重新设定密码。默认的是七天。
帐号失效期:     如果用户过了警告期没有重新输入密码,使得密码失效,而该用户在这个字段限定的时间内又没有向管理员反映,让帐号重新启用,那么这个帐号将暂时失效。
帐号取消日期:  这个日期跟第三个字段一样,都是使用1970年以来的日期设定方法。这个字段表示:这个帐号在此字段规定的日期之后将无法再使用。这个字段通常用于收费服务系统中,可以规定一个日期让该帐号不能再使用。
保留:     最后一个字段是保留的,看以后有没有新功能加入。

 

 

 

疑问既然shadow文件保存了密码,而passwd文件中没有保存密码,为什么不把passwd文件中的密码位取消掉呢?

 

 

 

   其实,密码在存放之前,是先放在passwd文件中的,然后再转换到shadow文件中的。下面来验证下

 

[root@bogon /]# grep root /etc/passwd  /etc/shadow
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
/etc/shadow:root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15391:0:99999:7:::

 

 

 

[root@bogon /]# pwunconv      将密码回写
[root@bogon /]# grep root /etc/passwd  /etc/shadow
/etc/passwd:root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:0:0:root:/root:/bin/bash
/etc/passwd:operator:*:11:0:operator:/root:/sbin/nologin
grep: /etc/shadow: 没有那个文件或目录

 

 

 

[root@bogon /]# pwconv     转换到shdow文件中,只不过平时这个动作平时由linux自动完成。
[root@bogon /]# grep root /etc/passwd  /etc/shadow
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
/etc/shadow:root:$1$5DlBd7m8$tF.az6hWi27oaaFw7OpFs.:15456:0:99999:7:::

 

 

 

       linux对用户登录的验证就是通passwod文件来验证用户名是否存在,然后通过shadow文件来验证用户名对应的密码是否正确,那么理解了底层东西很有必要,我们可以不需要去学习创建用户命令,真接通过vim命令在两个文件中添加用户。这就是linux的魅力噢。不像windows一样,我们不但知其然,还知其所以然。

 

 

 

 

查看文件权限的方法

1.查看文件权限

    -rw-------1 root root 1523 sep 28 12:05 anaconda-ks.cfg

 

类型       权限                所属用户和组                                                         文件名

rw-------

前三个rw-:用户对文件的权限

中间三个---:组对文件的权限

最后三个---:其他人对文件的权限

类型

- 普通文件

d 目录文件

b 块特殊文件

c 字符特殊文件

l 符号链接(小写L)

f 命名管道

s 套接字文件(小写S)

权限

1.普通文件:   

字符 权限表示法:

r 读

w 写

x 执行

数字权限表示法:(8进制)

r=4

w=2

x=1

2.目录文件:

x:进入目录

rx:显示目录内的文件名(进入文件并查看文件名)

wx:修改目录内的文件名(进入文件并修改文件名)

3.文件权限的表示方法:

-rw-r-xr-- 1 username groupname mtime filename

-:普通文件

rw-:文件属主的权限(u)

r-x:文件属组的权限(g)

r--:其他用户的权限(o)

创建新文件有默认的权限,根据umask值计算,属主和属组更久当前进程的用户来设定

4.修改权限的命令

chmod:修改文件,目录权限

chmod u+x /tmp/testfile

chmod 755 /tmp/testfile

chown:更改属主、属组

chown 用户名:组名 文件名

chown [-R] 账号名称      文件/目录

chown [-R] 账号名称:组群  文件/目录

chgrp:可以单独更改属组,不常用   chgrp  组群  文件名/目录 

echo:显示信息,显示在终端

echo 123 > afile(>输出重定向),将123输入到afile文件中

 

linux下分三类用户:

u  修改第一部分所有者

g 修改第二部分所属组

o  修改第三部分其他人

a 修改所有部分

修改权限符号:

+  加权限

-  减权限

= 等于什么权限(设置权限)

ls -ld +单个文件,查看单个文件的权限id

ctrl+r 搜索之前写过的命令

5.特殊权限

SUID:用于二进制可执行文件,执行命令时取得文件属主权限su

SGID:用于目录,在该目录下创建新的文件和目录,权限自动更改为该目录的属主

SBIT:用于目录,该目录下新建的文件和目录,仅root和自己可以删除

posted @ 2020-03-08 22:25  xueer1234  阅读(340)  评论(0编辑  收藏  举报