Linux中用户,组及权限的概念及相关命令

Linux的用户、组和权限管理

用户:

计算机的资源是有限的,但使用者有很多,为了能够实现这些使用者彼此之间在资源上进行隔离而保证各使用者的文件得到保护,并且我们让主机能够认定这个使用者的确是他所声称的那个使用者,所以我们必须要在整个系统上完成两种机制,1.认证机制Authertication,2.授权机制Authorization,3审计机制 Audition。

用户类别:

管理员用户:root

普通用户:分系统用户和登录用户两种

用户的标识:UserID,UID,范围16bits的二进制数字,0-65535

管理员:0

普通用户:1-65535

系统用户:centos5,6是1-499  centos7是1-999

登录用户:centos5,6是500-60000,centos7是1000-60000

Username与UID的名称转换是根据名称解析库来进行转换的,其路径为/etc/passwd。

使用cat/etc/passwd可以看到文件的格式为:

name:password:UID:GID:GECOS:directory:shell

name:用户名,password:可以是加密的密码,也可以是占位符x(一般是占位符),UID:用户ID,GID:用户所属主组的ID,GECOS:用户的注释信息,可选,derictory:用户的主目录(家目录),shell:登录时的默认shell程序。

组:

组是具有相同特征用户的逻辑集合。

组有3种类别:

类别1

管理员组

普通用户组:包括系统组和登录组

类别2

用户的基本组

用户的附加组

类别3

私有组:组名同用户名,且只包含一个用户

公共组:组内可以包含多个用户

组的标识:

管理员组:0

普通用户组:1-65535

系统用户组centos5,6为1-499,centos7为1-999

登录用户组:centos5,6为500-60000,centos7为1000-60000

Groupname和GID的名称转换是根据组名称解析库来进行转换的,其路径为/etc/group。

认证信息:

通过比对事先存储的信息与登录是提供的信息是否一致:

用户密码存放路径:/etc/shadow

组密码存放路径:/etc/gshadow

密码使用策略:

    1. 使用随机密码
    2. 最短不要低于8位
    3. 使用大写字母、小写字母、数字、标点符号四类字符中的任意三种
    4. 定期更换密码

Linux系统的密码使用的是单向加密,有以下几种算法:md5,sha,sha224,sha256,sha284,sha512,可以依次排序为1-6,centos5用md5,centos6,7用sha512,在计算时系统会添加随机数(salt)来确保每个用户的密码不相同。

查看shadow文件组成:

[[email protected] ~]# cat /etc/shadow

root:$6$OxkZXzfIIK0bvTGu$jdJnzwpbYIxDSUZoPWsHcVw5B50Q8om9pWelrPlokCtgJWZtXC4Kpi.AH22gowxkSAOJck2KxtiqaCxvkwsRe1::0:99999:7:::

用户名:加密的密码:最近一次修改密码的时间:最短使用期限:最长使用期限:警告期段:过期期限:保留字段

备注:加密的密码里面有三个$符,第一个与第二个之间的数字表示加密 算法,第二个和第三个     之间为随机数,第三个到下一个:之间的字符为salt+密码字段。

用户组的信息库/etc/group

Group_name:password:GD:user_list

User_list:该组的用户成员,以此组为其附加组的用户的用户列表

权限:

安装上下文:

进程以其发起者的身份运行;进程对文件的访问权限,取决于发起此进程用户的权限;

进程对文件的访问权限应用模型:进程的属主与文件的属主是否相同,如果相同,则应用属主权限,否则,则检查进程的属主是否属于文件的属组,如果是则应用属组权限,否则,就只能应用other的权限。

系统用户:为了能够让后台进程或服务类进程以非管理员的身份运行,通常需要创建多个普通用户,这类用户从不用登录系统、

权限管理:

使用命令ls –l 可以查看到目录或文件的详细信息

[[email protected] ~]#ls -l /etc

-rw-r--r--.  1 root root       16 3月  29 14:02 adjtime

-rw-r--r--.  1 root root     1518 6月   7 2013 aliases

-rw-r--r--.  1 root root    12288 3月  29 15:31 aliases.db

可以看到,左侧的-rw-r--r—表示这个文件的权限其中:r代                  表readable,读权限;w代表writeable,写权限;x代表excuteable,执行权限,-表示无权限。

文件和目录略有区别:

文件:r:可获取文件的数据

w:可修改文件的数据

x:可将此文件运行为进程

目录:r:可使用ls命令来获取其下的所有文件列表

w:可修改此目录下的文件列表,即创建或删除文件

x:可cd至此目录中,且可以使用ls–l来获取文件的详细属性信息

权限的组合机制:各种组合刚好可以用八进制数0-7表示出来。

---  000   0

--x  001   1

-w-  010   2

-wx  011   3

r--  100   4

r-x  101   5

rw-  110   6

rwx  111   7

用户,组,权限管理的相关命令:

groupadd命令:创建组

groupadd [options] name

-g GID,手动指定GID,默认是上一个组的GID+1

-r 创建系统组

手动指定slackware组为系统组,其GID为766:

[email protected] ~]# groupadd -r -g 766 slackware
[[email protected] ~]# tail -1 /etc/group
slackware:x:766:

groupmod命令:修改组属性

groupmod [options] GROUP

-g :修改GID

-n new_name :修改组名

[[email protected] ~]# groupmod -g 800 slackware
[[email protected] ~]# tail -1 /etc/group
slackware:x:800:
[email protected] ~]# groupmod -n archlinux slackware
[[email protected] ~]# tail -1 /etc/group
archlinux:x:800:

groupdel命令:删除组

groupdel [options] GROUP

useradd命令:创建用户

useradd [options] name

-u,--uid UID:指定UID

-g,--gid GROUP:指定基本组ID,此组得事先存在

-G,--groups GROUP1[,GROUP2,...[,GROUPN]]:以指定用户所属附加组,多个组之                             间用逗号分隔。

-c,--comment COMMENT:指明注释信息

-d,--home HOME_DIR:以指定的路径为用户的家目录,通过复制/etc/skel目录,并

重命名实现,指定的家目录如果事先存在,则不会为用户复制

环境配置文件。

-s,--shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells

文件中。

-r,--system :创建系统用户

注意:创建用户时的诸多默认设定配置文件为/etc/login.defs.

[[email protected] ~]# id docker
uid=1002(docker) gid=1002(docker) 组=1002(docker)

useradd -D:显示创建用户的默认配置。

useradd -D [options] :修改默认选项的值。

修改结果保存于/etc/default/useradd

usermod命令:修改用户属性

usermod [options] user_name

-u --uid UID:修改用户的ID为指定的新的UID

-g --gid GROUP:修改用户所属的基本组

-G --groups GROUP1[,GROUP2,...[,GROUPN]]:修改用户所属的附加组,原附加组会被

覆盖。

-a  --append:与-G一同使用,用于为用户添加新的附加组

-c  --comment COMMENT:修改注释信息

-d  --home HOME_DIR:修改用户的家目录,用户原有的文件不会被转移至新的位置

-m  --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录

-l  --login NEW_LOGIN :修改用户名

-s  --shell SHELL:修改默认的shell

-L  --lock  :锁定用户的密码,即在用户原来的密码字符串之前添加一个“!”

-U  --unlock:解锁用户密码

userdel命令:删除用户

userdel [options] usr_name

-r 删除用户时一并删除用户的家目录

passwd命令:修改密码

passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i           inactivedays] [-S][--stdin] [username]

1.passwd:修改自己的密码

2.passwd USERNAME:修改指定用户的密码,但仅root有此权限

-l  -u  :锁定用户和解锁用户

-d:清除用户密码

-e DATE:过期期限,日期

-i DAYS:非活动期限

-n DAYS:密码最短使用期限

-x DAYS:密码最长使用期限

-w DAYS:警告期限

--stdin

echo "PASSWORD" | passwd --stdin USERNAME

利用管道将‘PASSWORD‘字符设置为USERNAME的密码,在脚本中常用到。

gpasswd:组密码命令

/etc/gshadow

gpasswd [options] group

-a USERNAME :向组中添加用户

-d USERNAME :向组中移除用户

[[email protected] ~]# gpasswd -a docker mytest
正在将用户“docker”加入到“mytest”组中
[[email protected] ~]# id docker
uid=1002(docker) gid=1002(docker) 组=1002(docker),1003(mytest)
正在将用户“docker”从“mytest”组中删除
[[email protected] ~]# id docker
uid=1002(docker) gid=1002(docker) 组=1002(docker)

nergrp命令:临时切换组为用户的基本组

newgrp [-] [group]

-:会模拟用户重新登录以实现重新初始化其工作环境。

[[email protected] ~]# groupadd ubuntu
[[email protected] ~]# newgrp ubuntu
[[email protected] ~]# id
uid=0(root) gid=1004(ubuntu) 组=1004(ubuntu),0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

chage命令:更改密码过期信息

chage [options] user_name

-d 从UNIX元年开始到密码到期的天数

-E 过期期限

-W 警告期限

-m 最短期限

-M 最长使用期限

id命令:显示用户的真实的和有效的ID信息

id [options] USERNAME

-u 仅显示有效的UID

-g 仅显示用户的基本GID

-G 仅显示用户所诉的所有组的ID

-n 显示名字,而非ID

su命令:switch user

登录式切换;会痛重新读取用户的配置文件来重新初始化

su - USERNAME

su -l USERNAME

非登录式切换:不会读取目标用户的配置文件进行初始化

su USERNAME

su - USERNAME -c ‘COMMAND‘

仅以指定用户的身份运行此处指定的命令;

其他几个不重要的命令:chsh,chfn,finger,whoami,pwck,grpck...

chmod:权限修改命令;

1.chmod [options]...MODE[,MODE]...FIEL...

用户可以分为三类:u:属主,g:属组,o:其他,a:所有

MODE的表示方法:

赋权表示法

u=[r][w][x]

g=[r][w][x]

o=[r][w][x]

a=[r][w][x]

如果没有任何权限可以用-表示,

授权表示法:

u+rwx,u-rwx

u+rwx,u-rwx

u+rwx,u-rwx

u+rwx,u-rwx

2.chmod [options] ... OCTAL_MODE FILE...

8进制权限表示位

3.chmod [options] ...--reference=RFILE FILE...

参考某一文件的权限信息

选项:

-R 递归修改

注意:用户只能修改属主为自己的那些文件的权限。

从属关系管理命令:chown,chgrp

chown命令:

chown [options] ... [OWNER][:GROUP] FILE...

chown [options] ...--reference=RFILE FILE

-R 递归修改

chgrp命令:

chgrp [options] ...GROUP FILE...

chgrp [options] ...--reference=RFILE FILE...

注意:仅管理员可以修改文件属主,属组。

umask:文件的权限反向掩码,遮罩码;

文件:

666减去umask

目录:

777减去umask

注意之所以文件用666去减表示文件默认不能拥有执行权限,如果减得得结果有执行权限,则

需要将其加1;

例:umask:023 那么文件的权限是666-023=644,目录777-023=754

umask命令:注意此类设定仅对当前shell有效。

umask:查看当前umask

umask UMASK:设置umask

install命令:复杂文件并且同时可以设置文件的属性

单源复制:

install [option] ...[-T] SOURCE DEST

多源复制:

install [option] ...SOURCE ...DIRECTORY

install [option] ...-t DIRECTORY

创建目录:

install [option] ... -d DIRECTORY...

选项:

-m --mode=MODE :设定目标文件的权限,默认是755

-o --owner=OWNER :设定目标文件的属主

-g --group=GROUP :设定目标文件的属组

mktemp:创建临时目录或文件,注意mktemp会将创建的临时目录直接返回,故可以通过命令引用

保存起来。

mktemp [option]...[TEMPLATE]

常见选项:

-d 创建临时目录;

注意:文件或者目录名一般以.XXX命名,XXX最少三个。

时间: 2024-11-03 21:15:45

Linux中用户,组及权限的概念及相关命令的相关文章

Linux用户,组和权限管理

用户,组,权限 一.了解什么是用户,组和权限 1.对于linux系统来说,简单明了的特点就是多用户,多任务,也就是说一台linux系统的主机上面可以同时允许多个用户登录,当通过多个终端登录时可以同时使用这台linux的系统,然而对于linux习题来说,一切皆文件,别人和自己的工作任务都是以文件的形式存在的,不同的用户之间岂不是没有隐私或者安全而言,其实在linux上不是这样的,我们可以理解linux把每一个用户分配一间屋子,没有钥匙即权限我们是进不去浏览以及修改文件的,但是既然是一间屋子,那当然

Linux中用户管理详解

一.原理了解 在Linux系统中,所有的用户和组像一个国家.如果国家要繁荣昌盛的话,需要治理得当,需要有主席或者总统,以及地方官员和老百姓组成.在linux中如果你对安全需求比较苛刻,完全可以限制用户的各种行为,不同用户的权限是不同的. 在linux中系统中,它并不认识帐号名称.它认识的是我们的帐号ID,帐号ID保存在/etc/passwd文件中.我们在登录linux主机时,在输入完帐号和密码时,linux会先查找/etc/passwd文件中是否有这个帐号,如果没有则跳出,如果有的话,他会读取该

Linux之用户及文件权限管理

Linux之用户及文件权限管理 前言:Linux 是一个多用户的操作系统:Linux哲学思想之一-"一切皆文件".说明在学习Linux过程中,用户及文件权限的管理是非常重要滴.本文主要是引用了CentOs/RedHat 7.1的命令. 一.用户.组管理 1).用户.组类型: 超级用户(管理员):root用户具有一切权限,只有在进行系统维护(如创建用户.分配权限)时用到:由于root用户权限过大,为了避免管理员的误操作导致不可逆的后果,所以在非必要的情况下不用root用户登录. 普通用户

Linux中的账号和权限管理(理论讲解部分)

小伙伴们本次给大家带来的是Linux中的账号和权限管理,这里我们首先要明确的就是这个权限是文件或者目录的权限.接下来我们会从以下几个部分进行了解: 用户账号和组账号概述 用户账号和组账号管理 查询账号信息 查看目录或文件的属性 设置目录或文件的权限 设置目录或文件的归属 用户账号和组账号概述Linux基于用户身份对资源访问进行控制1.用户账号:? 超级用户? 普通用户? 匿名用户(everyone)? 程序用户(人为不可使用,单独管理系统中某个应用程序存在的服务)2.组账号:组是系统用户权限的集

Linux之acl库的安装与使用(限制Linux某用户的访问权限)

acl库 作用:限制Linux某用户的访问权限 acl库的安装 首先github中下载acl代码: git clone https://github.com/acl-dev/acl 进入acl, 执行make cd acl make 注意: [因为acl是由c/c++编写的,需要提前安装好gcc, g++] 安装到用户根目录: make packinstall 一般到这儿就能编译安装成功了,在/user/include/ 目录下会有acl-lib目录. 如果是centos系统,可直接安装 yum

Linux 中用户权力的下放

如何实现用户权力的下放(普通用户因为权限无法执行一些命令,需要通过高级用户的授权才能执行命令) 1.sudo 能把某些超级权限针对性的下放,并且不需要普通用户知道root密码,所以sudo相对于权限无限制性的su 来说,还是比较安全的2.sudo能把某些超级权限针对性的下放,并且不需要普通用户知道root密码,所以sudo相对于权限无限制性的su来说,还是比较安全的sudo执行命令的流程是当前用户切换到root,然后以root身份执行命令,执行完成后,直接退回到当前用户,而这些的前提是需要通过s

Linux给用户添加sudo权限

linux给用户添加sudo权限: 有时候,linux下面运行sudo命令,会提示类似: xxxis not in the sudoers file.  This incident will be reported. 这里,xxx是用户名称,然后导致无法执行sudo命令,这时候,如下解决: 进入超级用户模式.也就是输入" su -",系统会让你输入超级用户密码,输入密码后就进入了超级用户模式.(当然,你也可以直接用root用) 添加文件的写权限.也就是输入命令" chmod

linux给用户加入sudo权限

linux给用户加入sudo权限: 有时候,linux以下执行sudo命令,会提示类似: xxxis not in the sudoers file.  This incident will be reported. 这里,xxx是username称.然后导致无法运行sudo命令,这时候,例如以下解决: 进入超级用户模式. 也就是输入"su -",系统会让你输入超级用户password,输入password后就进入了超级用户模式.(当然.你也能够直接用root用) 加入文件的写权限.也

Linux中查看进程占用内存和系统资源情况的命令

用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况... 还有一种办法是 ps -ef | sort -k7 ,将进程按运行时间排序,看哪个进程消耗的cpu时间最多. top: 主要参数 d:指定更新的间隔,以秒计算. q:没有任何延迟的更新.如果使用者有超级用户,则top命令将会以最高的优先序执行. c:显示进程完整的路径与名称. S:累积模式,