Linux用户与用户组

用户与用户组

Linux系统是一个多用户多任务的操做系统.php

用户的帐号一方面能够帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另外一方面也能够帮助用户组织文件,并为用户提供安全性保护。linux

每一个用户帐号都拥有一个惟一的用户名和各自的密码。shell

用户在登陆时键入正确的用户名和密码后,就可以进入系统和本身的主目录。ubuntu

要想实现用户帐号的管理:vim

  • 用户帐号的添加、删除、修改以及用户密码的管理。
  • 用户组的管理。

注意三个文件:centos

  • /etc/passwd 存储用户的关键信息
  • /etc/group 存储用户组的关键信息
  • /etc/shadow 存储用户的密码信息

用户管理

命令 做用 说明
useradd -m -g 组 新建用户名 添加新用户 -m 自动创建用户家目录 -g 指定用户所在的组,不然会创建一个和同名的组
passwd 用户名 设置用户密码 若是是普通用户,直接用 passwd 能够修改本身的帐户密码
userdel -r 用户名 删除用户 -r 选项会自动删除用户家目录
cat /etc/passwd | grep 用户名 确认用户信息 新建用户后,用户信息会保存在 /etc/passwd 文件中

1. 添加用户

useradd 选项 用户名
复制代码

经常使用选项:数组

  • -g:表示指定用户的用户主(主要)组,选项的值能够是用户组的id,也能够是组名
  • -G:表示指定用户的用户附加(额外)组,选项的值能够是用户组的id,也能够是组名
  • -u:uid,用户的id(用户的标识符),系统默认会从500以后按顺序分配uid,若是不想使用系统分配的,能够经过该选项自定义
  • -c:comment,添加注释(选择是否添加)
  • -s:指定用户登入后所使用的shell 解释器 【专门的接待员】
  • -d:指定用户登入时的启始目录(家目录位置)
  • -n:取消创建以用户名称为名的群组(了解)

示例:建立用户zhangsan,不带任何选项安全

useradd zhangsan
复制代码

验证是否成功:bash

  1. 验证/etc/passwd的最后一行,查看是否有zhangsan的信息app

    Last login: Sat Jun  8 22:28:50 2019 from 49.92.240.220
    root@toby:~# useradd zhangsan
    root@toby:~# useradd zhangsan
    useradd: user 'zhangsan' already exists
    root@toby:~# tail -1 /etc/passwd
    zhangsan:x:1000:1000::/home/zhangsan:
    root@toby:~#
    复制代码
  2. 验证是否存在家目录(在Centos下建立好用户以后随之产生一个同名家目录);

认识passwd文件

man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
_apt:x:105:65534::/nonexistent:/bin/false
messagebus:x:106:110::/var/run/dbus:/bin/false
uuidd:x:107:111::/run/uuidd:/bin/false
ntp:x:108:114::/home/ntp:/bin/false
复制代码

上图中依次顺序为

用户名:密码:用户ID:用户组ID:注释:家目录:解释器shell

  • 用户名:建立新用户名称,后期登陆的时候须要输入;
  • 密码:此密码位置通常状况都是“x”,表示密码的占位;
  • UID(用户标识):用户的识别符;【-u】
  • GID(用户组标识):该用户所属的主组ID;【-g】
  • 注释:解释该用户是作什么用的;【-c】
  • 家目录:用户登陆进入系统以后默认的位置;【-d】
  • 解释器shell:等待用户进入系统以后,用户输入指令以后,该解释器会收集用户输入的指令,传递给内核处理;【若是解释器是/bin/bash表示用户能够登陆到系统,/sbin/nologin表示该用户不能登陆到系统】【-s】

注意:

在不添加选项的时候,执行useradd以后会执行一系列的操做

  • 建立同名的家目录;
  • 建立同名的用户组;

示例:添加选项,建立用户lisi,让lisi属于501主组,自选靓号666,而且要求不能登陆到系统,能够写注释为“user lisi”。

root@toby:/home# useradd -g 1000 -u 666 -s /sbin/nologin -c "user lisi" lisi
root@toby:/home# tail -1 /etc/passwd
lisi:x:666:1000:user lisi:/home/lisi:/sbin/nologin
root@toby:/home#
复制代码

注意:

linux123行的含义:

在linux123的组里(组id是500)有一个组内用户lisi(lisi的附加组就是500,附加组的名字是linux123)。
若是须要为一个用户指定多个附加组,只须要将多个附件组的id经过英文逗号“,”分割便可。
【主组只能有1个,附加组能够多个,也能够没有附加组
【主组必须有】
【文档的属组指的是主组】
复制代码

2. 修改用户

  • usermod 能够用来设置 用户主组附加组登陆 Shell,命令格式以下:
  • 主组:一般在新建用户时指定,在 etc/passwd 的第 4GID 对应的组
  • 附加组:在 etc/group 中最后一列表示该组的用户列表,用于指定 用户的附加权限

提示:设置了用户的附加组以后,须要从新登陆才能生效!

usermod 选项 用户名
# 修改用户的主组(passwd 中的 GID)
usermod -g 组 用户名

# 修改用户的附加组
usermod -G 组 用户名

# 修改用户登陆 Shell
usermod -s /bin/bash 用户名
复制代码

Usermod:user modify,用户修改

经常使用选项:

选项 含义
-g 表示指定用户的用户主组,选项的值能够是用户组的id,也能够是组名
-G 表示指定用户的用户附加组,选项的值能够是用户组的id,也能够是组名
-u uid,用户的id(用户的标识符),系统默认会从500以后按顺序分配uid,若是不想使用系统分配的,能够经过该选项自定义
-l 修改用户名
-c<备注> 修改用户账号的备注文字
-d<登入目录> 修改用户登入时的目录
-s 修改用户登入后所使用的shell
示例:修改zhangsan用户主组为500,附加组改成501
usermod -g 500 -G 501 zhangsan
复制代码
示例:修改zhangsan用户用户名,改成wangerma
usermod -l wangerma zhangsan 这里的竖杠是 英文字母 l 
复制代码

注意:默认使用 useradd 添加的用户是没有权限使用 sudoroot 身份执行命令的,可使用如下命令,将用户添加到 sudo 附加组中

usermod -G sudo 用户名
复制代码

设置密码

Linux不容许没有密码的用户登陆到系统,所以前面建立的用户目前都处于锁定状态,须要设置密码以后才能登陆计算机。

passwd [用户名]	【若是不指定用户名则修改本身的密码】
复制代码

示例:设置wangerma用户的密码

passwd wangerma
复制代码

注意:

这里能够先写要修改的用户, 中间插入选项和值

设置密码以后shadow文件中的体现:可以看出lisi用户没有密码的。

sshd:*:17616:0:99999:7:::
zhangsan:$6$Z7HX/.94$F78gf4VkGCSPADb/aA4lFhWwOYXyLuG.LWHjX7D.d4684d/oXIouzwoE0TvIX.JkjlgV4KLdisjvm1hf19vEJ/:18056:0:99999:7:::
lisi:!:18055:0:99999:7:::
复制代码

在设置用户密码以后能够登陆账号,例如此处须要登陆zhangsan

which

提示

/etc/passwd 是用于保存用户信息的文件 /usr/bin/passwd 是用于修改用户密码的程序

which 命令能够查看执行命令所在位置,例如:

which ls

# 输出
# /bin/ls

which useradd

# 输出
# /usr/sbin/useradd
复制代码

bin 和 sbin

  • Linux 中,绝大多数可执行文件都是保存在 /bin/sbin/usr/bin/usr/sbin
  • /binbinary)是二进制执行文件目录,主要用于具体应用
  • /sbinsystem binary)是系统管理员专用的二进制代码存放目录,主要用于系统管理
  • /usr/binuser commands for applications)后期安装的一些软件
  • /usr/sbinsuper user commands for applications)超级用户的一些管理程序

提示:

cd 这个终端命令是内置在系统内核中的,没有独立的文件,所以用 which 没法找到 cd 命令的位置

切换用户

序号 命令 做用 说明
01 su - 用户名 切换用户,而且切换目录 - 能够切换到用户家目录,不然保持位置不变
02 exit 退出当前登陆帐户
  • su 不接用户名,能够切换到 root,可是不推荐使用,由于不安全
  • exit 快捷键为 control+d 示意图以下:

su [用户名](switch user)
复制代码

若是用户名不指定则表示切换到root用户

root@toby:~# su zhangsan
zhangsan@toby:/root$
zhangsan@toby:/root$ su
Password:
root@toby:~#
复制代码

切换用户须要注意的事项:

  1. 从root往普通用户切换不须要密码,可是反之则须要root密码;
  2. 切换用户以后先后的工做路径是不变的;
  3. 普通用户没有办法访问root用户家目录,可是反之则能够;

删除用户

用户删除

userdel 选项 用户名
复制代码

经常使用选项:

  • -r:表示删除用户的同时,删除其家目录;

示例:删除zhangsan用户

root@toby:~# userdel -r zhangsan
userdel: user zhangsan is currently used by process 22089
root@toby:~# ps -ef | grep 22089
zhangsan 22089 22088  0 20:51 pts/0    00:00:00 bash
root     22092 22089  0 20:51 pts/0    00:00:00 su
root     22115 22093  0 20:57 pts/0    00:00:00 grep --color=auto 22089
root@toby:~# su zhangsan
# 这里使用control+d 会自动退出
zhangsan@toby:/root$ exit
复制代码

解决办法:

简单粗暴,kill对应用户的所有进程

提示:

全部跟用户操做的命令(除passwd外,只能修改本身的密码,即不指定用户名)只有root超级管理员有权限执行。

备注:

也能够在登陆须要删除的用户以后,按下快捷键ctrl+d进行对当前用户的注销,随后退回到上一个用户(root)此时就能够对须要删除的用户进行删除操做。

用户组的管理

每一个用户都有一个用户组,系统能够对一个用户组中的全部用户进行集中管理。不一样Linux 系统对用户组的规定有所不一样,如Linux下的用户属于与它同名的用户组,这个用户组在建立用户时同时建立。

用户组的管理涉及用户组的添加、删除和修改。组的增长、删除和修改实际上就是对 /etc/group 文件的更新。

root@toby:~# cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:
floppy:x:25:
tape:x:26:
sudo:x:27:
audio:x:29:
dip:x:30:
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
systemd-journal:x:101:
systemd-timesync:x:102:
systemd-network:x:103:
systemd-resolve:x:104:
systemd-bus-proxy:x:105:
input:x:106:
crontab:x:107:
syslog:x:108:
netdev:x:109:
messagebus:x:110:
uuidd:x:111:
mlocate:x:112:
ssh:x:113:
ntp:x:114:
lpadmin:x:115:
stapdev:x:116:
stapusr:x:117:
stapsys:x:118:
root@toby:~#
复制代码

上面内容的文件结构:

用户组名:密码:用户组ID:组内用户名

密码:X表示占位符,虽然用户组能够设置密码,可是绝大部分的状况下不设置密码; 组内用户名:表示附加组是该组的用户名称;

1. 用户组添加

groupadd 选项 用户组名
复制代码

经常使用选项:

  • -g:相似用户添加里的“-u”,-g表示选择本身设置一个自定义的用户组ID数字,若是本身不指定,则默认从500以后递增;

示例:使用groupadd指令建立一个新的用户组,命名为admins

#groupadd admins
root@toby:~# cat /etc/group
...
admins:x:1001:
root@toby:~#
复制代码

2. 用户组编辑

groupmod 选项 用户组名
复制代码

经常使用选项:

  • -g:相似用户修改里的“-u”,-g表示选择本身设置一个自定义的用户组ID数字
  • -n:相似于用户修改“-l”,表示设置新的用户组的名称

案例:修改admins用户组,将组ID改为520,将名称改成admin123

root@toby:~# groupmod -g 520 -n admingroup admins
root@toby:~# cat /etc/group
...
admingroup:x:520:
root@toby:~#
复制代码

3. 用户组删除

groupdel 用户组名
复制代码

案例:删除admingroup组

groupdel admingroup
复制代码

注意:

当若是须要删除一个组,可是这个组是某个用户的主组时,则不容许删除(附加组是能够的);若是确实须要删除,则先从组内移出全部用户。

提示:

针对用户和用户组的管理指令,除了passwd指令以外,其余指令通常状况下只有root用户能够执行。

权限管理

1. 权限介绍

在Linux中分别有读、写、执行权限:

  • 读权限

    • 对于文件夹来讲,读权限影响用户是否可以列出目录结构
    • 对于文件来讲,读权限影响用户是否能够查看文件内容
  • 写权限

    • 对文件夹来讲,写权限影响用户是否能够在文件夹下“建立/删除/复制到/移动到”文档.
    • 对于文件来讲,写权限影响用户是否能够编辑文件内容
  • 执行权限:通常都是对于文件来讲,特别脚本文件。

    • 对于文件来讲,执行权限影响文件是否能够运行。
    • 对于文件夹来讲,执行权限影响对应的用户是否能够在文件夹内执行指令。

2. 身份介绍

  • Root用户(超级用户)

    • 在Linux中,还有一个神同样存在的用户,这就是root用户,由于在全部用户中它拥有最大的权限 ,因此管理着普通用户。所以之后在设置文档的权限的时候没必要考虑root用户。
  • Owner身份(文档全部者,默认为文档的建立者)

    • 因为Linux是多用户、多任务的操做系统,所以可能经常有多人同时在某台主机上工做,但每一个人都可在主机上设置文件的权限,让其成为我的的“私密文件”,即我的全部者。由于设置了适当的文件权限,除本人(文件全部者)以外的用户没法查看文件内容。
  • Group身份(与文件全部者同组的用户)

    • 与文件全部者同组最有用的功能就体如今多个团队在同一台主机上开发资源的时候。例如主机上有A、B两个团体(用户组),A中有a1,a2,a3三个成员,B中有b1,b2两个成员,这两个团体要共同完成一份报告F。因为设置了适当的权限,A、B团体中的成员都能互相修改对方的数据,可是团体C的成员则不能修改F的内容,甚至连查看的权限都没有。同时,团体的成员也能设置本身的私密文件,让团队的其它成员也读取不了文件数据。在Linux中,每一个帐户支持多个用户组。如用户a一、b1便可属于A用户组,也能属于B用户组【主组和附加组】。
  • Others身份(其余人,相对于全部者与同组用户)

    • 这个是个相对概念。打个比方,大明、二明、小明一家三兄弟住在一间房,房产证上的登记者是大明(owner全部者),那么,大明一家就是一个用户组,这个组有大明、二明、小明三个成员;另外有我的叫张三,和他们三没有关系,那么这个张三就是其余人(others)了。 同时,大明、二明、小明有各自的房间,三者虽然能自由进出各自的房间,可是小明不能让大明看到本身的情书、日记等,这就是文件全部者(用户)的意义。

3. Linux的权限查看

要设置权限,就须要知道文件的一些基本属性和权限的分配规则。在Linux中,ls命令经常使用来查看文档的属性,用于显示文件的文件名和相关属性。

#ls -l 路径 【ls -l 等价于 ll】
复制代码
root@toby:~# ll /
total 92
drwxr-xr-x 22 root root  4096 Jun  3 16:38 ./
drwxr-xr-x 22 root root  4096 Jun  3 16:38 ../
drwxr-xr-x  2 root root  4096 Apr  8  2018 bin/
drwxr-xr-x  3 root root  4096 Apr  8  2018 boot/
drwxr-xr-x 19 root root  3740 Jun  3 16:38 dev/
drwxr-xr-x 88 root root  4096 Jun  9 21:23 etc/
drwxr-xr-x  2 root root  4096 Apr 13  2016 home/
lrwxrwxrwx  1 root root    33 Mar 26  2018 initrd.img -> boot/initrd.img-4.4.0-117-generic
lrwxrwxrwx  1 root root    33 Mar 26  2018 initrd.img.old -> boot/initrd.img-4.4.0-116-generic
drwxr-xr-x 20 root root  4096 Mar 26  2018 lib/
drwxr-xr-x  2 root root  4096 Mar 26  2018 lib64/
drwx------  2 root root 16384 Mar 26  2018 lost+found/
drwxr-xr-x  4 root root  4096 Mar 26  2018 media/
drwxr-xr-x  2 root root  4096 Aug  1  2017 mnt/
drwxr-xr-x  2 root root  4096 Aug  1  2017 opt/
dr-xr-xr-x 96 root root     0 Jun  3 16:38 proc/
drwx------  7 root root  4096 Jun  8 23:08 root/
drwxr-xr-x 19 root root   640 Jun  9 21:06 run/
drwxr-xr-x  2 root root 12288 Apr  8  2018 sbin/
drwxr-xr-x  2 root root  4096 Aug  1  2017 srv/
dr-xr-xr-x 13 root root     0 Jun  3 16:50 sys/
drwxrwxrwt  7 root root  4096 Jun  9 22:17 tmp/
drwxr-xr-x 10 root root  4096 Mar 26  2018 usr/
drwxr-xr-x 11 root root  4096 Mar 26  2018 var/
lrwxrwxrwx  1 root root    30 Mar 26  2018 vmlinuz -> boot/vmlinuz-4.4.0-117-generic
lrwxrwxrwx  1 root root    30 Mar 26  2018 vmlinuz.old -> boot/vmlinuz-4.4.0-116-generic
root@toby:~#
复制代码

上图标红的部分就是Linux的文档权限属性信息。

Linux中存在用户(owner)、用户组(group)和其余人(others)概念,各自有不一样的权限,对于一个文档来讲,其权限具体分配以下:

十位字符表示含义:

  • 第1位:表示文档类型,取值常见的有“d表示文件夹”、“-表示文件”、“l表示软链接”、“s表示套接字”、“c表示字符设备”、“b表示块状设备”等等;
  • 第2-4位:表示文档全部者的权限状况,第2位表示读权限的状况,取值有r、-;第3位表示写权限的状况,w表示可写,-表示不可写,第4位表示执行权限的状况,取值有x、-。
  • 第5-7位:表示与全部者同在一个组的用户的权限状况,第5位表示读权限的状况,取值有r、-;第6位表示写权限的状况,w表示可写,-表示不可写,第7位表示执行权限的状况,取值有x、-。
  • 第8-10位:表示除了上面的前2部分的用户以外的其余用户的权限状况,第8位表示读权限的状况,取值有r、-;第9位表示写权限的状况,w表示可写,-表示不可写,第10位表示执行权限的状况,取值有x、-

注意:

除了权限位上的rwx以及-以外,还有一些特殊的权限代码“s”、“t”,这些不在本次考虑范围内。(黏贴位,特殊权限位)

权限分配中,均是rwx的三个参数组合,且位置顺序不会变化。没有对应权限就用 代替。

4. 权限设置

chmod [选项] 权限模式 文档路径
复制代码

经常使用选项:

  • -R:递归设置权限 (当文档类型为文件夹的时候)

权限模式:

  • 就是该文档须要设置的权限信息

文档:

  • 能够是文件,也能够是文件夹,能够是相对路径也能够是绝对路径。

注意点:

若是想要给文档设置权限,操做者要么是root用户,要么就是文档的全部者。

4.1 字母形式设置

给谁设置:

  • u:表示全部者身份owner(user)
  • g:表示给全部者同组用户设置(group)
  • o:表示others,给其余用户设置权限
  • a:表示all,给全部人(包含ugo部分)设置权限 若是在设置权限的时候不指定给谁设置,则默认给全部用户设置

什么权限-权限字符:

  • r:读
  • w:写
  • x:表示执行
  • -:表示没有权限

如何设置-权限分配方式:

  • +:表示给具体的用户新增权限(相对当前)
  • -:表示删除用户的权限(相对当前)
  • =:表示将权限设置成具体的值(注重结果)【赋值】

设置多个身份的权限时候,每一个身份之间须要经过英文逗号分开。

例如:
须要给/root/anaconda-ks.cfg文件(-rw-------.)设置权限,要求全部者拥有所有的权限,同组用户拥有读和写权限,其余用户只读权限。

答案:
	#chmod u+x,g+rw,o+r /root/anaconda-ks.cfg
	或者:
	#chmod u=rwx,g=rw,o=r /root/anaconda-ks.cfg
复制代码

提示:

当文档拥有执行权限(任意部分),则其颜色在终端中是绿色。

#chmod ug=rwx 形式,若是有两部分权限同样则能够合在一块儿写的
等价于:
	#chmod u=rwx,g=rwx
复制代码
例如:若是anaconda-ks.cfg文件什么权限都没有,可使用root用户设置全部的人都有执行权限,则能够写成
什么权限都没有应该是:----------
目标的效果:---x--x--x
#chmod a=x anaconda-ks.cfg
#chmod a+x anaconda-ks.cfg
#chmod u+x,g+x,o+x anaconda-ks.cfg
#chmod ugo=x anaconda-ks.cfg
#chmod ugo+x anaconda-ks.cfg
#chmod +x anaconda-ks.cfg
复制代码
案例:
设置文件“~/php/php.txt”权限,要求全部者所有权限,同组用户拥有读权限、写权限,其余人拥有读权限
#chmod u=rwx,g=rw,o=r ~/php/php.txt

更改要求:
全部者所有权限,同组用户拥有读权限、写权限,其余人拥有读权限、写权限
#chmod o+w ~/php/php.txt
复制代码
练习:
1. 设置文件夹/tmp/php的权限(若是文件夹不存在,自行建立),要求权限为递归权限,而且全部者有所有权限,同组用户有读执行权限,其余用户只读权限;
#mkdir /tmp/php
#chmod -R u=rwx,g=rx,o=r /tmp/php
2. 设置文件/tmp/php/class.sh权限,文件若是不存在则自行建立,要求权限为全部者所有权限,同组用户读和执行权限,其余用户没有权限;
#touch /tmp/php/class.sh
#chmod u=rwx,g=rx,o=--- /tmp/php/class.sh
3. 使用普通用户在/tmp/php目录下建立test目录,设置目录权限为全部者拥有所有权限,同组用户只读,其余用户只读;(建立不了test用户)
复制代码

4.2 数字的形式

常常会在一些技术性的网页上看到相似于#chmod 777 a.txt 这样的一个权限,这种形式称之为数字形式权限(777)。

权限 表明字母 数字值
r 4
w 2
执行 x 1

没有任何权限-0

注意:

组合权限数字的时候遵循,最短路径要求,而且最多只能出现一次。

例如:
须要给anaconda-ks.cfg设置权限,权限要求全部者拥有所有权限,同组用户拥有读执行权限,其余用户只读。

分析:
	全部者(第1位):所有权限 = 读 + 写 + 执行 = 4 + 2 + 1 = 7
	同组用户(第2位):读执行 = 读 + 执行 = 4 + 1 = 5
	其余用户(第3位):读 = 4

组合: 754

最终得出的结果是754
#chmod 754 anaconda-ks.cfg
复制代码
例题: 
用超级管理员设置文档的权限命令是#chmod -R 731 aaa,请问这个命令有没有什么不合理的地方?
全部者 = 7 = 4 + 2 + 1 = 读 + 写 + 执行
同组用户 = 3 = 2 + 1 = 写 + 执行
其余用户 = 1 = 执行
问题在权限731中3表示写+执行权限,可是写又没必要须须要能打开以后才能够写,所以必须须要具有读权限,所以权限不合理。之后建议各位在设置权限的时候不要设置这种“奇葩权限”。
复制代码

注意:

在写权限的时候千万不要设置相似于上面的这种奇葩权限。若是一个权限数字中但凡出现2与3的数字,则该权限有不合理的状况。

4.3 注意事项

是否能够删除文件属于文件夹的权限

扩展:
在Linux系统中,建立文档的权限有一个默认值,以当前的系统为例,其建立文件夹以后的默认权限是755,建立文件以后的权限是644。

之因此会这样是受到了系统中umask(掩码)的值的影响,其是用于指定文档建立好以后的权限,umask默认为022。

计算方式:
    对于文件:文件的权限 = 666 – umask掩码
	对于文件夹:文件夹的权限 = 777 - umask掩码
复制代码

为何文件是666不是777呢? 由于文件包含了可执行文件. linux系统处于安全的考虑. 默认建立的文件是不给执行的权限x的.

5. 属主与属组

  • 属主:所属的用户(文件的主人),文档全部者
  • 属组:所属的用户组(同组用户的组名称)

这两项信息在文档建立的时候会使用建立者的信息(用户名、用户所属的主组名称)。

之因此须要设置这个:若是有时候去删除某个用户,则该用户对应的文档的属主和属组信息就须要去修改(相似离职以前的工做交接)。

5.1 chown

更改文档的所属用户(change owner)

chown  [-R]  新的username 文档路径
复制代码

注意:

修改全部者的人必须是root或者全部者本身,其余人无权修改全部者。

5.二、chgrp

更改文档的所属用户组(change group)

chgrp  [-R]  groupname  文档的路径
复制代码
案例:将刚才oo目录的全部用户组名改成admin
#chgrp -R admin /oo
复制代码
思考? 如何经过一个命令实现既能够更改所属的用户,也能够修改所属的用户组呢?

答:能够实现的,经过chown命令
	语法:#chown [-R] username:groupname 文档路径
复制代码

6. sudo

问题? reboot、shutdown、init、halt,在普通用户身份上都是操做不了,可是有些特殊的状况下又须要有执行权限。又不可能让root用户把本身的密码告诉普通用户,这个问题该怎么解决?

该问题是能够被解决的,可使用sudo(switch user do)命令来进行权限设置。Sudo可让管理员(root)事先定义某些特殊命令谁能够执行。
复制代码

默认sudo中是没有除root以外用户的规则,要想使用则先配置sudo。

Sudo配置文件:/etc/sudoers 该文件默认只读,不容许修改,所以不能直接修改。

  1. 配置sudo文件请使用visudo,打开以后其使用方法和vim一致
  2. 配置普通用户的权限

上图的98行说明:

  • Root表示用户名,若是是用户组,则能够写成“%组名”
  • ALL:表示容许登陆的主机(地址白名单)
  • (ALL):表示以谁的身份执行,ALL表示root身份
  • ALL:表示当前用户能够执行的命令,多个命令可使用“,”分割
案例:使用admin这个用户,赋予其添加用户权限。
注意:在写sudo规则的时候不建议写直接形式的命令,而是写命令的完整路径。
路径可使用which(whereis亦可)命令来查看 
语法:#which 指令名称
Whereis会找出一些非可执行文件,建议使用which
复制代码
root@toby:~# which useradd
/usr/sbin/useradd
root@toby:~# whereis useradd
useradd: /usr/sbin/useradd /usr/share/man/man8/useradd.8.gz
root@toby:~#
复制代码

因此whereis指令返回的内容比较多, 咱们使用which指令便可

若是须要更多的命令, 后面的用,分隔便可

在添加好对应的规则以后就能够切换用户,切换到普通用户admin,再去执行:

此时要想使用刚才的规则,则以如下命令进行:

sudo 须要执行的指令(就是放权的指令名称)
复制代码

此时输入的密码是当前执行sudo指令的用户的密码,而非root密码。

在输入sudo指令以后须要输入当前的用户密码进行确认的操做(不是root用户密码),输入以后在接下来5分钟内再次执行sudo指令不须要密码。

补充:

在普通用户下怎么查看本身具备哪些特殊权限呢?

sudo  -l	表示list
复制代码

最后:sudo不是任何Linux分支都有的命令,常见centos与ubuntu都存在sudo命令。

相关文章
相关标签/搜索