linux笔记--用户、组、权限

一、用户和组

(一)、用户的相关文件

1.保存用户信息:/etc/passwd

[root@localhost ~]# grep sumeng /etc/passwd
sumeng:x:1000:1000::/home/sumeng:/bin/bash

#各字段的含义--用户名:密码保留字段(无实际含义):用户id:所属基本组id:用户说明信息:用户家目录:用户登录shell

#用户组id:用户的唯一标识

#所属基本组id:表明用户的基本组是谁

2.保存用户密码:/etc/shadow

[root@localhost ~]# grep sumeng1 /etc/shadow
sumeng1:!!:19436:0:99999:7:::

#第二个字段为密码字段

3.组信息文件:/etc/group

4.家目录:/home--普通用户的家目录存放在该目录下,root用户的家目录为/root

5.家目录的模板文件:/etc/skel

[root@localhost ~]# cd /etc/skel

[root@localhost skel]# touch ceshi

[root@localhost skel]# useradd newuser

[root@localhost newuser]# cd /home/newuser
[root@localhost newuser]# ls
ceshi

6.用户默认属性配置文件:/etc/login.defs

超级管理员用户 -- id为0

程序系统用户 -- id一般为1-999

普通用户 -- id为1000以上

7.主要控制用户初始化的配置文件

.bash_profile 用户每次登录时执行
.bashrc 每次进入新的Bash环境时执行
.bash_logout 用户每次退出登录时执行
.bash_history

记录存放上次注销前使用的历史命令

8.shell的配置文件以及区别 

/etc/profile 配置全局环境变量,影响所有用户
~/.bash_profile 配置个人环境,影响一个用户
/etc/bashrc 配置全局的别名或者shell选项,影响所有用户
~/.bashrc 配置个人别名或者shell选项,影响一个用户

(二)、useradd命令

useradd命令:新建用户

常见用法:

1.没有指明组,会自动创建与用户同名的组

[root@localhost shell-test]# useradd sc1
[root@localhost shell-test]# id sc1                #id命令用于显示用户id以及所属组群id
uid=1019(sc1) gid=1019(sc1) 组=1019(sc1)

2.指定组--可以拥有组的所有权限

        -g:指定基本组,基本组只有一个

        -G:指定附加组,可以有多个

[root@localhost shell-test]# useradd -g sc1 -G sc sc2          #指定基本组为sc1,附加组为sc

[root@localhost shell-test]# id sc2
uid=1020(sc2) gid=1019(sc1) 组=1019(sc1),1018(sc)

[root@localhost newuser2]# useradd -G sumeng,sumeng1 su1         #指定多个附加组
[root@localhost newuser2]# id su1
uid=2028(su1) gid=2028(su1) 组=2028(su1),1000(sumeng),1006(sumeng1)

3.创建用户时指定id

        -u:指定该用户的UID

[root@localhost shell-test]# useradd -u 2000 sc3
[root@localhost shell-test]# id sc3
uid=2000(sc3) gid=2000(sc3) 组=2000(sc3)
[root@localhost shell-test]# useradd sc4    #默认情况下不指定id,会在前一个基础上加1
[root@localhost shell-test]# id sc4
uid=2001(sc4) gid=2001(sc4) 组=2001(sc4)

4.指定用户说明信息

        -c:添加用户说明

[root@sanchuang shell-test]# useradd -c "test sc5" sc5
[root@sanchuang shell-test]# grep sc5 /etc/passwd
sc5:x:2002:2002:test sc5:/home/sc5:/bin/bash                #第五个字段为用户的说明信息

5.指定用户的家目录

        -d:指定用户的家目录,默认为/home/username,指定时写绝对路径

注意:普通情况下,一个普通用户只能在系统默认家目录和/tmp目录下创建文件,若指定家目录为别的目录,可能导致用户在创建文件时因为权限不足导致失败

[root@localhost shell-test]# useradd -d /opt/home/sc6 sc6
[root@localhost shell-test]# grep sc6 /etc/passwd
sc6:x:2003:2003::/opt/home/sc6:/bin/bash                        #第六个字段为用户家目录
[root@localhost shell-test]# su - sc6
[sc6@localhost ~]$ pwd
/opt/home/sc6
[sc6@localhost ~]$ mkdir /opt/test                #权限不足,无法新建
mkdir: 无法创建目录"/opt/test": 权限不够

6.指定用户的登录shell--一登录就执行的shell

        -s:指定用户的登录shell,默认为/bin/bash

[root@localhost ~]# useradd -s /bin/sh sc7
[root@localhost ~]# grep sc7 /etc/passwd
sc7:x:2004:2004::/home/sc7:/bin/sh                 #最后一个字段为用户的登录shell

[root@localhost ~]# su - sc7
-sh-4.2$

执行useradd命令时,在后台所做的工作如下:

1.修改/etc/passwd
    zhourenjie123:x:6677:6677:wudangpai:/home/zhourenjie123:/bin/bash

2.修改/etc/shadow
    zhourenjie123::19493:0:99999:7:::         #设置密码为空即密码字段为空

3.修改/etc/group
    wudangpai:x:6677:

4.新建家目录
    mkdir /home/zhourenjie123

5.复制环境变量初始化脚本到家目录下
    cp /etc/skel/.* /home/zhourenjie123/

6.新建一个邮箱--邮箱名一般与用户名同名
    touch /var/spool/mail/zhourenjie123

 7.修改家目录相关的权限
    [root@localhost skel]# chown zhourenjie123:wudangpai /home/zhourenjie123/
    [root@localhost skel]# chmod 700 /home/zhourenjie123

8.修改邮箱相关的权限
    [root@localhost skel]# chmod 660 /var/spool/mail/zhourenjie123 
    [root@localhost skel]# chown zhourenjie123:mail /var/spool/mail/zhourenjie123

(三)、passwd命令

passwd命令:更改用户密码

1.root用户可以为别的用户设置密码,可以不遵循密码设置规则;普通用户只能修改自己的密码,直接输入passwd命令即可,修改密码时必须遵循密码的设置规则

[root@localhost ~]# passwd sumeng1
更改用户 sumeng1 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

[root@localhost ~]# grep sumeng1 /etc/shadow
sumeng1:$6$zb7mza/g$1ALKsveCO4ktHXOt3o37opJMFIsttBYbfmgCQ.x.YKvwtgdvk.6FJICOukvLvzaqF0mxC9o8Glviz5mqaeyuI.:19468:0:99999:7:::

2.不通过手动输入,同伙管道符号直接设置密码

[root@localhost ~]# echo "abc123"|passwd sumeng1 --stdin
更改用户 sumeng1 的密码 。
passwd:所有的身份验证令牌已经成功更新。

3.锁定用户无权更改其密码,仅能通过root用户更改

        -l:暂时锁定用户,其实就是修改了用户的密码,在/etc/shadow文件中用户的密码字段前添加“!”,使其密码失效

[root@localhost sc6]# passwd -l sc7
锁定用户 sc7 的密码 。
passwd: 操作成功
[root@localhost sc6]# grep sc7 /etc/shadow

sc7:!!$6$TaWQx3sp$Jp87zZXjwuFeta6sOP2nFUYtn1jxslKzR2xthsVvlIZyV9omVJx9WeCWFMh2D./fqdPZvYIlCQxq9aX6C36HQ0:19444:0:99999:7:::

(四)、usermod命令

usermod命令:修改用户的各种设定

常用选项:

-s (shell)

更改用户的登录shell

-g (组群)

更改基本组

-G (组群) 更改附加组
-u (UID) 更改用户的id
-d (登录目录) 更改用户的家目录
-c (备注) 更改用户的说明信息
-L 锁定用户密码,使密码无效

(五)、userdel命令

userdel命令:删除用户账号

用法:

userdel username 删除username用户,不删除家目录
userdel -r username 删除username用户,并且删除家目录信息

(六)、su命令

su命令:切换用户,用于变更为其他使用者身份

用法:

su username 直接切换到username用户,但不切换当前的环境
su - username 直接切换到username用户,并且切换到username环境

[root@localhost ~]# export USER_TEST="sumeng"         #设置环境变量
[root@localhost ~]# env|grep sumeng                #在当前环境里过滤出新设置的环境变量
USER_TEST=sumeng
[root@localhost ~]# su sumeng
[sumeng@localhost root]$ env|grep sumeng                #使用su切换,能找到

USER_TEST=sumeng

[sumeng@localhost root]$ exit
exit
[root@localhost ~]# su - sumeng                        #使用su - 切换,未找到
上一次登录:五 4月 21 11:41:08 CST 2023pts/0 上
[sumeng@localhost ~]$ env|grep sumeng

(七)、其他相关命令

命令 作用
last 查看系统近期用户的登录情况
lastlog 查看系统中用户有没有登录过,及登录过用户最近的登录时间

二、权限

(一)、文件相关权限

1.文件读写执行权限

r --read

数字表示:4

文件:查看内容

文件夹:ls

w --write

数字表示:2

文件:修改文件内容

文件夹:新建、删除、移动

x --execute

数字表示:1

文件:允许运行程序

文件夹:有执行权限才能使用cd切换

默认情况下,一个普通用户只能在家目录或者tmp目录下创建文件

2.文件归属权限

        属主(ower):拥有该文件或目录的用户--u

        属组(group):拥有该文件或目录的组账号--g

        其他人(other):除了属主和属组的其他人--o

3.文件类型 -- 文件详细信息的第一个字符

- 普通文件
d

目录

l 链接文件--link
s socket文件
p pipe管道
c 字符设备文件
b 块设备文件

文件详细信息的第一列表示权限,第1个字符为文件类型,第2-10个字符,三个字符一组,分别表示属主、属组、其他人的权限

(二)、chmod命令--修改权限

常见用法

例:

[root@localhost shell-test]# ll test                 #查看当前文件的详细信息
-rw-r--r--. 1 root root 0 3月  27 22:12 test

#给test的属主添加执行权限

        chmod u+x test

#给test的属主去除执行权限

        chmod u-x test

#直接写明属主的权限

        chmod u=rwx test

#对属主与属组的权限进行修改--属主去除执行权限,属组添加执行权限

        chmod u-x,g+x test

#使用数字修改权限--属主拥有读写权限,属组与其他人拥有读的权限

        chmod 644 test

#修改目录权限,即递归修改下面文件以及子文件夹的权限,使用-R选项递归修改

        chmod 777 shell-test/ -R

(三)、chown命令--修改属主和属组

1.修改属主

#test.sh文件的属主原本为root,修改为sc1

[root@localhost shell-test]# ll test.sh
-rwxr--r--. 1 root root 32 4月  10 23:50 test.sh
[root@localhost shell-test]# chown sc1 test.sh
[root@localhost shell-test]# ll test.sh
-rwxr--r--. 1 sc1 root 32 4月  10 23:50 test.sh                 #第3列表示文件的属主

2.修改属组

#将test.sh文件的属组修改为sc3

[root@localhost shell-test]# chown :sc3 test.sh
[root@localhost shell-test]# ll test.sh
-rwxr--r--. 1 sc1 sc3 32 4月  10 23:50 test.sh                #第4列表示文件的属组

3.修改属主与属组

#将test.sh文件的属主修改为sc3,属组修改为sc6

[root@localhost shell-test]# chown sc3:sc6 test.sh
[root@localhost shell-test]# ll test.sh
-rwxr--r--. 1 sc3 sc6 32 4月  10 23:50 test.sh

(四)、sudo权限

sudo命令:授权给普通用户去执行很多重要命令(代替root用户去执行)。debian、Ubuntu系统都会有一个超级普通用户,使用sudo就可以执行任何命令。sudo敲的每一个命令都会记录在日志文件里。

sudo -l:可以查看当前用户有哪些sudo的权限

sudo的配置文件:/etc/sudoers,如何编写该配置文件?

sc1     ALL=(ALL)       NOPASSWD:ALL

#第一列写想要授权的用户名

#第一个ALL表示允许任何终端、机器访问sudo,一般就表示本机

#第二个ALL表示sudo命令可以允许以任何用户身份去执行

#第三个ALL表示可以执行任何命令

#NOPASSWD表示使用sudo命令执行时无需输入用户密码

例:

1、sumeng   ALL=(ALL)   ALL    #表示sumeng用户可以在这台主机上执行任何用户的任何命令,但是使用sudo执行时需要输入sumeng用户的密码
2、sumeng   ALL=(ALL)   NOPASSWD:ALL   #表示sumeng用户,可以在这台主机上执行任何用户的任何命令,无需输入sumeng用户的密码
3、%sanchuang05  ALL=(ALL) NOPASSWD:ALL   #表示sanchuang05这个组的用户在这台主机上可以执行任何用户的任何命令,组名前面要加%,无需输入密码
4、sumeng   ALL=(ALL)   /bin/chown,/bin/passwd   #表示sumeng用户在这台主机上,拥有chown,passwd命令执行授权--针对命令授权,命令路径写绝对路径。

猜你喜欢

转载自blog.csdn.net/m0_69298614/article/details/130175842