linux用户权限和文件权限

用户与角色

  • 超级用户:拥有对系统的最高管理权限,默认是root用户。
    • Username/UID
    • root, 0
  • 普通用户:只能对自己目录下的文件进行访问和修改,具有登录系统的权限,例如www用户、ftp用户等。1-60000 自动分配
    • 登录用户:500+, 1000+(CentOS7)
      交互式登录
  • 虚拟用户:也叫“伪”用户,这类用户最大的特点是不能登录系统,它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。例如系统默认的bin、adm、nobody用户等
    • 系统用户:1-499, 1-999 (CentOS7)
      对守护进程获取资源进行权限分配

Linux组:Groupname/GID

  • 管理员组:root, 0
  • 普通组:
    系统组:1-499, 1-999(CENTOS7)
    普通组:500+, 1000+(CENTOS7)

用户和组相关的配置文件

  • /etc/passwd文件:系统用户配置文件,是用户管理中最重要的一个文件。这个文件记录了Linux系统中每个用户的一些基本属性,并且对所有用户可读。
  • /etc/shadow文件:用户影子文件,由于/etc/passwd文件是所有用户都可读的,这样就导致了用户的密码容易出现泄露,因此,linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限。
  • /etc/group文件:用户组配置文件,用户组的所有信息都存放在此文件中。
  • /etc/login.defs文件:用来定义创建一个用户时的默认设置,比如指定用户的UID和GID的范围,用户的过期时间、是否需要创建用户主目录等等。
  • /etc/default/useradd文件:定义了新建用户的一些默认属性,比如用户的主目录、使用的shell等等,通过更改此文件,可以改变创建新用户的默认属性值。
  • /etc/skel文件:目录定义了新建用户在主目录下默认的配置文件,更改/etc/skel目录下的内容就可以改变新建用户默认主目录的配置文件信息。

passwd文件格式

  • login name:登录用名(wang)
  • passwd:密码 (x)
  • UID:用户身份编号 (1000)
  • GID:登录默认所在组编号 (1000)
  • GECOS:用户全名或注释
  • home directory:用户主目录 (/home/wang)
  • shell:用户默认使用shell (/bin/bash)

添加、切换、删除用户组命令

——groupadd/newgrp/groupdel

groupadd命令

用来新建一个用户组。语法格式为:
groupadd -g gid groupname
-g:指定新建用户组的GID号,该GID号必须唯一,不能和其它用户组的GID号重复。

newgrp命令

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限,newgrp主要用于在多个用户组之间进行切换。

groupdel命令

表示删除用户组,语法格式为:
groupdel [群组名称]
当需要从系统上删除用户组时,可用groupdel指令来完成这项工作。如果该用户组中仍包括某些用户,则必须先删除这些用户后,然后才能删除用户组。

更改和查看组成员

groupmems [options] [action]
options:

  • -g, --group groupname 更改为指定组 (只有root)
    actions:
  • -a, --add username 指定用户加入组
  • -d, --delete username 从组中删除用户
  • -p, --purge 从组中清除所有成员
  • -l, --list 显示组成员列表
    groups [OPTION].[USERNAME]... 查看用户所属组列表

添加、修改和删除用户命令

——useradd/usermod/userdel

useradd的使用语法

useradd [-u uid [-o]] [-g group] [-G group,...] [-d home] [-s shell] [-c comment] [-f inactive] [-e expire ] name

各个选项具体含义如下:

  • -u uid:即用户标识号,此标识号必须唯一。
  • -o 配合-u 选项,不检查UID的唯一性
  • -g group:指定新建用户登录时所属的默认组,或者叫主组。此群组必须已经存在。
  • -G group:指定新建用户的附加组,此群组必须已经存在。附加组是相对与主组而言的,当一个用户同时是多个组中的成员时,登录时的默认组成为主组,而其它组称为附加组。
  • -d home:指定新建用户的默认主目录,如果不指定,系统会在/etc/default/useradd文件指定的目录下创建用户主目录。
  • -s shell:指定新建用户使用的默认shell,如果不指定,系统以/etc/default/useradd文件中定义的shell作为新建用户的默认shell。
  • -r 创建系统用户 CentOS 6: ID<500,CentOS 7: ID<1000
  • -m 创建家目录,用于系统用户
  • -M 不创建家目录,用于非系统用户

usermod的使用语法

usermod用来修改用户的账户属性信息,使用语法如下:
usermod [-u uid [-o]] [-g group] [-G group,...] [-d 主目录 ] [-s shell] [-L|-U] Name
各个选项具体含义如下:

  • -u uid:指定用户新的UID值,此值必须为唯一的ID值,除非用-o选项。
  • -g group:修改用户所属的组名为新的用户组名,此用户组名必须已经存在。
  • -G group:修改用户所属的附加组。原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
  • -d 主目录:修改用户登录时的主目录。 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
  • -a 追加 配合-G 追加附加组
  • -c 'COMMENT':新的注释信息
  • -l login_name: 新的名字
  • -s shell:修改用户登录系统后默认使用的shell
  • -L:锁定用户密码,使密码无效。
  • -U:解除密码锁定。
  • -e YYYY-MM-DD: 指明用户账号过期日期

userdel的使用语法

Userdel用来删除一个用户,若指定“-r”参数不但删除用户,同时删除用户的主目录以及目录下的所有文件。语法格式为:

userdel [-r][用户帐号]

查看用户相关的ID信息

id [OPTION]... [USER]

  • -u: 显示UID
  • -g: 显示GID
  • -G: 显示用户所属的组的ID
  • -n: 显示名称,需配合ugG使用

设置密码

passwd [OPTIONS] UserName: 修改指定用户的密码
常用选项:

  • -d:删除指定用户密码
  • -l:锁定指定用户
  • -u:解锁指定用户
  • -e:强制用户下次登录修改密码
  • -f:强制操作
  • -n mindays:指定最短使用期限
  • -x maxdays:最大使用期限
  • -w warndays:提前多少天开始警告
  • -i inactivedays:非活动期限
  • --stdin:从标准输入接收用户密码

示例:echo "PASSWORD" | passwd --stdin USERNAME

值得注意的是:在ubuntu 16版本之后是没有 --stdin/etc/rc.local
所以需要使用 chpasswd 来修改
echo aaa:111 | chpasswd
是修改 aaa 用户的密码为 111

修改用户密码策略

chage [OPTION]... LOGIN

  • -d 天数 最近一次修改密码的时间
  • -E 过期日期 过期时间
  • -I(大i) 天数 指定天数后,设定密码为失效状态
  • -l 显示密码策略
  • -m 最小天数 两次修改密码的间隔最小天数
  • -M MAX_DAYS 两次修改密码的间隔最大天数
  • -W 警告天数 密码过期前“警告天数”天 警告

示例:
chage -d 0 tom 下一次登录强制重设密码
chage -m 0 –M 42 –W 14 –I 7 tom 设置最小时间为0天后,最大时间为42天后,警告时间为14天 7天后过期
chage -E 2016-09-10 tom 将过期时间设置为2016-9-10

文件

文件的权限属性解读

在Linux中常见的有7种文件类型:

  • 普通文件(-表示)
  • 目录(d表示)
  • 字符设备文件(c)
  • 块设备文件(b)
  • 套接字文件(s)
  • 管道(p)
  • 符号链接文件(l)

"."代表当前目录

".."代表上级目录

修改文件的属主和属组

修改文件的属主:chown

chown [OPTION]... [OWNER][:[GROUP]] FILE...
用法说明:

  • OWNER
  • OWNER:GROUP
  • :GROUP,冒号也可用 . 替换
  • -R: 递归
  • chown [OPTION]... --reference=RFILE FILE...

修改文件的属组:chgrp

chgrp [OPTION]... GROUP FILE...

  • chgrp [OPTION]... --reference=RFILE FILE...
  • -R 递归

例子

$ chgrp user1 /data/abc.sh

文件权限

文件

  • r 可使用文件查看类工具获取其内容
  • w 可修改其内容
  • x 可以把此文件提请内核启动为一个进程

目录

  • r 可以使用ls查看此目录中文件列表
  • w 可在此目录中创建文件,也可删除此目录中的文件
  • x 可以使用ls -l查看此目录中文件元数据(须配合r),可以cd进入此目录
  • X 只给目录x权限,不给文件x权限

利用chmod改变访问权限

chmod用于改变文件或目录的访问权限。
该命令有两种用法。

  1. 包含字母和操作符表达式的字符设定法
  2. 包含数字的数字设定法。

符设定法

使用语法为:
chmod [who] [+ | - | =] [mode] 文件名
who表示操作对象,可以是下面字母中的任何一个或者它们的组合。

  • u 表示“用户(user)”,即文件或目录的所有者。
  • g 表示“用户组(group)”,即文件或目录所属的用户组。
  • o 表示“其他(others)用户”。
  • a 表示“所有(all)用户”。它是系统默认值。

操作符号含义如下:

  • “+”表示添加某个权限。
  • “-”表示取消某个权限。
  • “=”表示赋予给定的权限,同时取消文档以前的所有权限。

mode表示可以执行的权限,可以是“r“(只读)、“w”(可写)和“x”(可执行),以及它们的组合。

$ ll
总用量 0
-r-xr--r-- 1 root root 0 4月   9 01:39 122.txt
$ chmod u=rwx,g+r,o-r 122.txt 
$ ll
总用量 0
-rwxr----- 1 root root 0 4月   9 01:39 122.txt
$ chmod +x 122.txt 
$ ll
总用量 0
-rwxr-x--x 1 root root 0 4月   9 01:39 122.txt

数字设定法

首先了解一下用数字表示属性的含义:

  • 0表示没有任何权限
  • 1表示有可执行权限,与上面字符表示法中的“x”有相同的含义。
  • 2表示有可写权限,与“w”对应
  • 4表示有可读权限,对应与“r“
  • 如果想让文件的属主拥有读和写的权限,可以通过4(可读)+2(可写)=6(可读可写)的方式来实现,那么用数字6就表示拥有读写权限。

使用语法:
chmod [属主权限的数字组合] [用户组权限的数字组合] [其它用户权限的数字组合] 文件名

举例:

八进制数字
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7

640 rw-r-----
755 rwxr-xr-x

$ ll
总用量 0
-rwxr-xr-x 1 root root 0 4月   9 01:39 122.txt
$ chmod 150 122.txt 
$ ll
总用量 0
---xr-x--- 1 root root 0 4月   9 01:39 122.txt

Linux用户与环境变量

常见系统环境变量:

PATH、PWD、BASH、LANG、USER、HOSTNAME、HOME、SHELL

定义环境变量

环境变量名=value #环境变量赋值
export 环境变量名 #声明环境变量
注意:环境变量可以在命令行中设置,但用户注销时这些值将丢失,环境变量均为大写,必须用export命令导出。

清除环境变量

unset 环境变量名

显示环境变量内容

env命令可以列出已经定义的环境变量
echo命令
echo $环境变量名

环境变量与配置文件

/etc/profile属于全局环境变量配置文件,.bash_profile.bashrc属于用户环境变量文件,此两个文件位于用户根目录下。

当某Linux用户登录时,Shell会首先执行系统默认的配置文件/etc/profile,然后会自动执行.bash_profile文件,如果.bash_profile文件不存在,接着读取~/.bashrc文件。

Bash的初始化环境变量文件顺序:

添加用户环境变量:

cat .bash_profile

此.bash_profile是elasticsearch用户下的环境变量配置文件

export JAVA_HOME=/usr/local/jdk1.8.0_04

export PATH=$PATH:$JAVA_HOME/bin: $ANT_HOME/bin: $HOME/bin

配置文件环境变量文件后,执行source命令马上生效。

source .bash_profile

sudo的使用

sudo命令的使用
sudo -u sshd touch /tmp/mysshd
ll /tmp/mysshd
-rw-r--r-- 1 sshd sshd 0 Apr 16 16:59 /tmp/mysshd

sudo命令的配置文件为/etc/sudoers,编辑这个文件有个单独的命令visudo(这个文件最好不要使用vim命令来打开),因为一旦语法写错会造成严重的后果,这个工具会替你检查你写的语法,这个文件的语法遵循以下格式:
who where whom command


/etc/sudoers文件默认给 root 用户定义了一条规则:
root ALL=(ALL) ALL

  • root    表示 root 用户。
  • ALL     表示从任何的主机上都可以执行,也可以这样 192.168.100.0/24。
  • (ALL)   是以谁的身份来执行,ALL就代表root可以任何人的身份来执行命令。
  • ALL     表示任何命令。

那么整条规则就是 root用户可以在任何主机以任何人的身份来执行所有的命令。


iivey 192.168.10.0/24=(root) /usr/sbin/useradd
上面的配置只允许iivey在 192.168.10.0/24 网段上连接主机并且以root权限执行useradd 命令。

www ALL=(root) NOPASSWD:ALL,!/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/bin/su
允许www用户执行所有命令,除了passwd后加任意字符、passwd root和su这三类操作。

感叹号代表取反

%wheel ALL=(ALL) ALL
centos7默认已经开放%wheel这一行,之前的centos版本没有启用。

%wheel ALL=(ALL) NOPASSWD: ALL
NOPASSWD: ALL:不输入密码执行任何命令

%users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom

允许users组的成员以 root 身份挂载和卸载 cdrom

%users localhost=/sbin/shutdown -h now

允许users组关机

使用sudo 就是在命令前加上sudu

posted @ 2023-01-04 06:26  厚礼蝎  阅读(963)  评论(0编辑  收藏  举报