linux用户、组、权限
一、用户概述
什么是用户
用户是指能够正常登陆操作系统linux/windwos;
#linux支持多个用户同一账号同时登陆,windows同一账号同一时间只能有一个在线用户;
用户有什么作用
linux每运行一个程序都需要一个特定的用户;
不同的人管理分配不同用户我标识身份
root用户权限太高,不建议直接使用root,可能会造成不可挽回的故障;
用户的分类
在系统中用户分为普通用户,超级管理员(root),以及系统用户;
如何操作
配置文件
#cat /etc/passwd 在这个文件中存放了系统所有的用户
root:x:0:0:root:/root:/bin/bash
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
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
admin:x:1000:1000:admin:/home/admin:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
#cat/etc/shadow 这个文件中存放信息是用户名/密码,用户创建时间,用户到期时间,
操作
id
[root@centos-node1 ~]# id
uid=0(root) gid=0(root) groups=0(root)
id username
[root@centos-node1 ~]# id admin
uid=1000(admin) gid=1000(admin) groups=1000(admin)
useradd
[root@centos-node1 ~]# useradd test123
userdel
[root@centos-node1 ~]# useradd test123 #-r参数,删除用户以及用户的家目录,邮件目录等;
usermod
[root@centos-node1 ~]# useradd test123
[root@centos-node1 ~]# cat /etc/passwd | grep test1
test1:x:1001:1002:testuser:/home/test1:/bin/bash
passwd
[root@centos-node1 ~]# passwd test1
Changing password for user test1.
New password:
BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word
Retype new password:
passwd: all authentication tokens updated successfully.
echo “passwd” > passwd --stdin username
[root@centos-node1 ~]# echo "passwd" | passwd --stdin test1
Changing password for user test1.
passwd: all authentication tokens updated successfully.
二、组、附加组
什么是用户组
多个用户归纳到一个组,统一授权,统一调度;
用户组的分类
默认组:即创建一个用户则会根据与用户名相同名称创建一个组
基本组:一个用户只能属于一个基本组
附加组:一个用户可以属于多个附加组
用户组能干什么
赋予某一个文件拥有组的权限就等于赋予这个组内成员的权限,统一授权
如何操作
配置文件
/etc/group
/etc/gshadow
操作
groupadd
[root@centos-node1 ~]# groupadd --help
Usage: groupadd [options] GROUP
Options:
-f, --force exit successfully if the group already exists,
and cancel -g if the GID is already used
-g, --gid GID use GID for the new group
-h, --help display this help message and exit
-K, --key KEY=VALUE override /etc/login.defs defaults
-o, --non-unique allow to create groups with duplicate
(non-unique) GID
-p, --password PASSWORD use this encrypted password for the new group
-r, --system create a system account
-R, --root CHROOT_DIR directory to chroot into
[root@centos-node1 ~]# groupadd grouptest -g 10086
[root@centos-node1 ~]# cat /etc/group | grep grouptest
grouptest:x:10086:
groupmod,与groupadd使用方式类似
[root@centos-node1 ~]# groupmod --help
Usage: groupmod [options] GROUP
Options:
-g, --gid GID change the group ID to GID
-h, --help display this help message and exit
-n, --new-name NEW_GROUP change the name to NEW_GROUP
-o, --non-unique allow to use a duplicate (non-unique) GID
-p, --password PASSWORD change the password to this (encrypted)
PASSWORD
-R, --root CHROOT_DIR directory to chroot into
权限
什么是权限
系统根据不同的用户/组,来决定能够访问哪些文件,能够对这些文件执行什么样的操作;
如何查看
[root@centos-node1 ~]# ll
total 4
-rw-r--r-- 1 root root 0 Apr 28 06:18 a
-rw-------. 1 root root 1423 Apr 27 09:03 anaconda-ks.cfg
drwxr-xr-x. 2 root root 138 Apr 28 08:34 scripts
root root
- 第一个root:文件拥有人(属主)
- 第二个root:文件拥有组(属组)
drwxr-xr-x
- 第一个d:表示文件的类型,目录
- rwx:表示属主的权限,r(4)读权限,w(2)写权限,x(1)执行权限
- r-x:属组的权限,可读可执行
- r-x:其他人权限,可读可执行
一个用户访问的一个文件的流程如下:
1、查看文件的属主/属组是否是自己;
2、根据属主和属组的信息读取后面相应的RWX的权限;
3、如果不是属主也不是属组,则根据其他人权限;
修改属主/属组
chown
chgrp
如何操作
chmod 664 filename(数字方式)
[root@centos-node1 ~]# chmod 664 a
[root@centos-node1 ~]# ll a
-rw-rw-r-- 1 root root 0 Apr 28 06:18 a
[root@centos-node1 ~]#
chmod g=rwx(UGO方式)
[root@centos-node1 ~]# ll b
-rw-r--r-- 1 root root 0 Apr 29 18:48 b
[root@centos-node1 ~]# chmod g=rwx b
[root@centos-node1 ~]# ll b
-rw-rwxr-- 1 root root 0 Apr 29 18:48 b
特殊权限
特殊权限有哪些
suid
拥有suid权限的文件,在其他用户执行该文件时会以属主的身份来执行该文件;
sgid
拥有sgid权限的文件,在其他用户执行该文件时会以属组的身份来执行该文件;
sticky
对一个目录设置sticky位,那么将能阻止用户删除或者重命名文件,除非用户是这个目录的所有者、文件所有者或者超级用户。它通常用来控制对共享目录(例如/tmp)的访问。
文件的特殊权限属性charrt
创建一个文件,不允许被修改,移动,删除,root用户也不行;---->/etc/passwd
创建一个文件,仅允许往里追加内容,不允许,移动,删除----->日志文件
如何使用特殊权限
- suid:
一般用于一些二进制的命令文件,让普通用户执行时能够以属主身份执行;
一般文件如果没有执行权限的话,suid就会以S的方式显示;
[root@centos-node1 raiddata]# chmod u+s a.txt
[root@centos-node1 raiddata]# ll
total 4
-rwSr--r-- 1 root root 5 Apr 29 19:31 a.txt
- sgid
设置在二进制执行文件上,让普通用户以属组的身份运行这个命令
设置在一个目录上,该目录新建的文件会自动继承该目录的属组;
[root@centos-node1 raiddata]# ll -d sgidtext/
drwxr-xr-x 2 root root 6 Apr 29 19:40 sgidtext/
[root@centos-node1 raiddata]# chmod g+s sgidtext/
[root@centos-node1 raiddata]# ll -d sgidtext/
drwxr-sr-x 2 root root 6 Apr 29 19:40 sgidtext/
- sticky
设置了sbit以后,只有root能够删除所有文件,普通用户就算由W权限也只能够删除自己创建的文件;
[root@centos-node1 sgidtext]# ll -d /tmp/
drwxrwxrwx. 8 root root 229 Apr 29 17:07 /tmp/
[root@centos-node1 sgidtext]# chmod o+t /tmp/
[root@centos-node1 sgidtext]# ll -d /tmp/
drwxrwxrwt. 8 root root 229 Apr 29 17:07 /tmp/
[admin@centos-node1 sgidtext]$ rm -rf /tmp/*
rm: cannot remove ‘/tmp/hostname.txt’: Operation not permitted
rm: cannot remove ‘/tmp/ks-script-X5DPI_’: Operation not permitted
rm: cannot remove ‘/tmp/systemd-private-b36d23bd86f149f1a844b349b05bc330-httpd.service-GzWf0V’: Operation not permitted
rm: cannot remove ‘/tmp/yum.log’: Operation not permitted
- charrt
设置某一个文件只能进行某一个或者多个的操作,其他操作就算由权限也不允许,root也不行;
[root@centos-node1 raiddata]# ll charrt.txt
-rw-r--r-- 1 root root 16 Apr 29 19:55 charrt.txt
[root@centos-node1 raiddata]# lsattr charrt.txt
---------------- charrt.txt
[root@centos-node1 raiddata]# chattr +i charrt.txt
[root@centos-node1 raiddata]# lsattr charrt.txt
----i----------- charrt.txt
[root@centos-node1 raiddata]# echo "666" > charrt.txt
-bash: charrt.txt: Permission denied
[root@centos-node1 raiddata]# chattr -i charrt.txt
[root@centos-node1 raiddata]# lsattr charrt.txt
---------------- charrt.txt
[root@centos-node1 raiddata]# echo "666" >> charrt.txt
[root@centos-node1 raiddata]# cat charrt.txt
root
root
root
666
sudo提权
什么是提权
普通用户可以以root的身份去执行某一些命令;
前提是需要root授权;
如何授权
/etc/sudoers
用户-----------------以谁的身份执行-----------命令执行的路径
批量授权的方式:
设置用户别名,将用户分类;
设置命令别名,将命令分类;
统一授权,哪个用户能够以谁的身份执行什么样的命令;
总结
linux系统一切皆文件,我们做的一切操作都是对文件进行阅读、编辑、修改;
用户即能够对特定的一部分文件有相关的权限;
用户组即对用户进行一个归类, 方便统一调度;
权限即用户/组针对某一些文件能够执行什么样的动作 R W X;
sudo即普通用户没有这个权限,但是又需要执行这个命令,这个时候就需要sudo,普通用户以root的身份去运行一个/多个命令,前提是需要在sudoers文件里进行授权;