<返回更多

Linux用户及权限管理

2021-11-03    知书达理的旺财
加入收藏

前段时间由于个人原因长时间没有更新,后面会继续更新的。这都是我在学习linux时做的笔记,写在这里方便大家也是方便自己。

用户管理相关文件

/etc/passwd文件格式:

root:x:0:0:root:/root:/bin/bash
1. 用户名
2. 用户的密码占位符
3. UID
4. GID
5. 注释信息
6. 用户家目录
7. 用户默认的shell

/etc/group 文件格式:

www:x:1002:
1. 组名
2. 组密码占位符
3. GID
4. 以此组为其附加组的用户的用户名列表,如果有多个用户可以用逗号隔开

/etc/shadow文件格式:

www:!!:15836:0:99999:7:::
zhou:$1$zNXbcLE7$ANbOzBEBzSGWD.wy21.b31:16041:0:99999:7:::
1. 用户的登陆名;
2. 加密过的密码,如果为!!则表示此用户已禁用;
    加密方法是md5(Message Degist 消息摘要),这是一个单向加密算法。
    单向加密的特点:
     2.1  定长输出 128bit。不管源数据多长,加密后的密文都一样长;
     2.2 雪崩效应,即:改变了一点,加密后的结果都不一样;
     2.3 源文一样,加密后的密文都一样;
    
     常见的单向加密算法:sha1 = secure hash algorithm 安全的hash算法;
    $1$zNXbcLE7$ANbOzBEBzSGWD.wy21.b31
    第1和第2个$之间的那个”1”表示:加密的方法是md5;
    第2和第3个$之间的那串字符表示:系统在给密码加密的时候所添加的“盐”,是为了防止相同的密码加密后的密文一样,造成信息的泄露,这一点是利用了md5的雪崩效应;
    第3个$后面的字符串就是密码+“盐”后的密文;
3. 记录从1970年1月1日开始到你最近一次修改密码之间所经过的天数;也就是密码的最近修改时间;
4. 密码最短使用期限:单位天数,默认为0,表示不限制;
5. 密码最长使用期限:单位天数,默认是99999,表示可以永久有效;
6. 在密码过期N天之前,向用户发出警告;默认是7天;
用户帐号的非活动期,在此期间,用户登陆后第一件事,就是修改自己的密码;当错过此时间后,此帐号会被禁用。只有找root来启用;
7. 用户帐号的有效期限;
8. 最后一段做保留;

创建用户

useradd|adduser [options] username

/etc/default/useradd 该文件用来初始化一些参数的值。比如默认的shell,默认的家目录的位置等;

/etc/skel/ 该目录中的文件就是在创建新用户时的模板文件,当创建好一个用户时,就会把该目录下的文件CP到该用户的家目录下面,一般该目录都是隐藏的文件;

/etc/login.defs 该文件指定了用户的UID和GID的最小值500和最大值60000,默认添加用户的时候就从最小值开始;

-c 表示为当前要添加的用户写个注释信息;

-u 表示指定用户的UID;

-g 表示指定用户的GID;

-G 表示指定用户的附加组;

-d 表示指定用户的家目录位置;

-M 表示不为用户创建家目录;

-s 表示指定用户的默认shell;选项都在/etc/shells中

-e 指定用户的过期日期,格式MM/DD/YYYY

-o 表示可以创建一个与已知的UID相同的用户,例如# useradd –o –u 0 xfzhou 表示创建了一个uid为0的xfzhou用户,当然了这个用户也是root。在Linux中是根据UID来识别用户的级别的;

-r 创建一个程序用户,UID范围是 1-499,这些用户是不能登陆系统的;

当用户创建完成后,该用户由于没有密码,所以是不能直接登陆系统的。可以先由root给该用户先设置个初始密码。当用户登陆后就可以自己来改密码了;

#passwd username

#passwd //不写用户名就是给当前用户改密码;

passwd –l 锁定一个用户

passwd –u 解锁用户

passwd –stdin < passwdfile

创建组:

groupadd [options] groupname

# groupadd -g num group1 创建组的同是为组设置gid

gpasswd命令:

gpasswd -a user1 group1 //把用户user1添加到group1中去。

gpasswd -d user2 group2 //把user2从group2组中删除;

gpasswd -M user1 user2 user3 group1 一次性把多个用户添加到指定的组中;

查看用户信息:

# id [options].. username

-u 显示指定用户的UID

-g 显示用户的GID

-G 显示用户附加组

-n 显示用户的用户名

[root@Nginx ~]# id -u root

0

[root@Nginx ~]# id -g root

0

[root@Nginx ~]# id -G root

0 1 2 3 4 6 10

[root@Nginx ~]# id -G root -n

root bin daemon sys adm disk wheel

[root@Nginx ~]#

# finger username //user information lookup program

[root@Nginx /]# finger root

Login: root Name: root

Directory: /root Shell: /bin/bash

On since 一 12月 2 21:10 (CST) on pts/0 from 192.168.10.254

On since 一 12月 2 22:12 (CST) on pts/1 from 192.168.10.254

1 hour 35 minutes idle

New mail received 一 12月 2 22:19 2013 (CST)

Unread since 六 5月 11 14:07 2013 (CST)

No Plan.

[root@Nginx /]#

# who

[root@Nginx /]# who

root pts/0 2013-12-02 21:10 (192.168.10.254)

root pts/1 2013-12-02 22:12 (192.168.10.254)

[root@Nginx /]#

# w

[root@Nginx /]# w

23:49:47 up 2:42, 2 users, load average: 0.00, 0.00, 0.00

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

root pts/0 192.168.10.254 21:10 0.00s 0.48s 0.01s w

root pts/1 192.168.10.254 22:12 1:37m 0.06s 0.04s man useradd

[root@Nginx /]#

# whoami

[root@Nginx /]# whoami

root

[root@Nginx /]#

修改用户属性:

usermod

chage

chfn

chsh

chsh username 更改用户的shell和passwd的用法有点像

chfn username 修改用户的注释信息。

usermod [options] username

-u 更改用户的UID

-g 更改用户的GID

-G 更改用户的附加组,如果只有“-G”则是更换用户的附加组。如果想给用户增加一个附加组的话,可以使用“-G number -a”,加上“-a” 其实就是Append的意思,这样就不会把原来的覆盖掉;

-c 修改用户的注释信息;

-s 修改用户的默认shell

-d 更改用户的家目录位置,要配全-m来使用即:”usermod –d /path/dir –m username”,-m:表示移动用户的家目录,因为用户的家目录下面还有可能有其他的文件;

-l 更改用户的登陆名;

-L 锁定用户

-U 解锁用户

删除用户:

userdel [options] username

-r 表示在删除用户的时候同时把用户的家目录也删除。默认是不删除用户的家目录的。是为了能够再找回用户的资料;

创建用户组:

groupadd [options] groupname

-g 指定组id

-r 创建系统组 1-499

修改用户组信息:

groupmod [options] groupname

-g GID

-n 修改组名称

删除组:

groupdel groupname

给组加密码:

在切换基本组的时候,需要输入组的密码;

netgrp grouname //会提示输入密码;

gpasswd -a USER GROUP //将用户USER加入到GROUP组中,注意,这里是附加组;

gpasswd –d USER GROUP //将用户USER从GROUP组中移除;也是附加组;

gpasswd –A USER1,USER2.... GROUP

gpasswd –M USER1,USER2.... GROUP //这两个都是一次性向GROUP中添加多个用户;

 

用户切换命令:

su - switch user

su USERNAME //非登陆式切换;

su – USERNAME //登陆式切换;

su –l USERNAME //登陆式切换;

su – USERNAME –c ‘command’ 切换到指定用户后,以用户的shell执行command

su USERNAME -c ‘command’

  1. 文件权限管理:

Linux权限和八进制的对应关系:

Linux权限

二进制

八进制

---

000

0

--x

001

1

-w-

010

2

-wx

011

3

r--

100

4

r-x

101

5

rw-

110

6

rwx

111

7

例如:rwxr-xr-x 755

第一个3位对应 文件的属主的权限;用u表示文件的属主;

第二个3位对应 文件属组的权限;用g表示文件属组

第三个3位对应 其他人的权限;用o表示其他人;

用a表示所有人;

修改文件的权限:

chmod [options] perm file..

perm的指定方法:

chmod 777 /tmp/test.txt

chmod u=rwx,g=rwx /tmp/test.txt

chmod g=w /tmp/test.txt //注意这个g=w会直接覆盖掉以前的权限;如果要想在原有的权限上增加一个权限,应该使用g+rwx,如果要取消用户的某位的权限则要使用-rwx;

chmod g+x,o-rw /tmp/test.txt

chmod a-w /tmp/test.txt

在修改目录的权限的时候,可以使用-R 来对目录下的文件的权限也进行修改;

chmod –R 775 /tmp/test

在文件的权限中还有三个特殊的权限:SUID、SGID和t(粘滞位)

SUID、SGID通常叫作SET位权限,多用于对可执行脚本或程序来设置,例如/usr/bin/passwd 它就是被设置了SUID的程序;

SUID表示:对属主添加SET位权限;SGID表示:对属组设置SET位权限;当某个文件被设置了SUID或SGID后,任何用户在执行该文件的时候,都会获得该文件对应的属主或属组身份所拥有的权限!要注意的是:SUID、SGID只能对文件的属主和属组来设置;

SUID 对应八进制中的4,SGID对应八进制中的2;这两个都可以使用”s”来表示;

方法:chmod u+s,g+s filename

chmod 4777 filename

chmod 6777 filename2

当一个文件被设置了SET位权限后,其对应的x就会变成”s”,如果该文件原本不具有执行权限,则会变成”S”

t(粘滞位):该权限一般用在一个开放的目录中;在一个开放的目录,会有很多个用户的文件,每个用户对这个开放的目录都具有写权限,所以对这个开放的目录设置t权限可以防止,某个用户删除不属于他的文件;注意粘滞位权限通常只对目录设置,并且只能设置在权限的第三个3位上,也就是其他人的权限位上;t对应八进制中的1。

方法:

chmod o+t filename

chmod 1777 filename

改变文件的属主和属组:

chown [options] filename

chown USERNAME:GROUPNAME filename

chown –R USERNAME filename

chown –R .GROUPNAME filename

chgrp –R GROUPNAME filename

还有几个特殊的权限:

chattr {+|-}{i|a} filename

如果是+i 则是锁住文件的i节点,这样所有用户(包括root)都无法删除和修改该文件。使用ls –lh只能看到正常的文件属性。这时如果你有权限,但是却删除不了的时候,你就要检查下文件的特殊权限了,使用lsattr来查看;

 

同样的,chattr +a file 则是使用该文件只能以追加的方式向里面添加内容,不能直接使用其他文本编辑器打开添加;同样所有的用户也包括root是无法删除的,这种属性通常会用在日志文件上;

  1. 颜色

33 颜色控制符;

[3 设置字体颜色;

1~7 表示7种颜色;

[4 表示对背景色设置;

1~7 单独数字表示对字体的显示进行控制;5是闪烁;

上面的这几个可以叠加在一起,之间用分号隔开:

33[0m 表示颜色控制结束;如果最后忘记加了则,以后你所输入的字符都会是这个颜色;不过可以使用reset来重置下终端;

例如:

[root@Nginx ~]# echo -e "33[31m Bob.Zhou33[0m"

Bob.Zhou

[root@Nginx ~]# echo -e "33[5;31m Bob.Zhou33[0m"

Bob.Zhou //这个应该是闪烁的!

[root@Nginx ~]#

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>