欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Linux入门(用户操作及权限)

程序员文章站 2023-11-07 08:15:52
本文介绍了Linux中用户的相关操作(用户增、删以及组增、删等),附加了文件与目录的权限与权限操作 ......

linux入门之 用户操作及权限

  在一个公司里,老板与员工有上下级之分,员工与员工间也有上下级或同级之分。每个级别在公司的职责不同,权限也不同。在linux操作系统中也一样,不同的用户身份拥有着不同的功能与权限。


linux用户的分类


超级管理员: uid为0 root用户拥有至高无上的命令,root用户不能改名

系统用户:uid小于1000,用于管理服务,一般不允许登陆

普通用户:uid大于或等于1000,权限较小,允许登陆,只能使用bin下命令


1.用户创建,删除,修改

useradd命令

 useradd - create a new user or update default new user information

-c,  --comment  描述
-d,  --home home_dir 家目录
-e, --expiredate expire_date  过期时间
-f, --inactive inactive 是否启用过期机制
-g, --gid group   指定组id号
-g, --groups group1[,group2,...[,groupn]]]  附加组
-m, --create-home     建立家目录           
-m,                    不建立家目录
           do not create the user′s home directory, even if the system wide
           setting from /etc/login.defs (create_home) is set to yes.

-n, --no-user-group 不指定用户同名组
-r, --system    指定该帐号是系统帐号
-s, --shell shell  指定登录shell
-u, --uid uid   指定用户id号
-u, --user-group 指定用户创建用户同名组
-o, --创建用户是可以uid重复

usermod命令

usermod - modify a user account
-a, --append
-l, --lock
-u, --unlock
-m, --move-home with -d

userdel命令

userdel - delete a user account and related files
-f, --force
-r, --remove 删除主目录及邮箱

change命令

chage
-h, --help    display this help message and exit
-m, 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-m, 密码保持有效的最大天数。
-w, 用户密码到期前,提前收到警告信息的天数。
-e, 帐号到期的日期。过了这天,此帐号将不可用。
-d, 上一次更改的日期    如果设置为0 用户下次登录必须改密码
-i, 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用
-l, 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

who命令

  who命令将列出所有正在使用系统的用户、所用终端名和注册到系统的时间。而who am i 命令将列出使用该命令的当前用户的相关信息。例如:

[root@localhost ~]# who
root     :0           2019-10-10 07:59 (:0)
root     pts/0        2019-10-10 07:59 (:0)
root     pts/1        2019-10-10 07:59 (:0)

[root@localhost ~]# who am i
root     pts/1        2019-10-10 07:59 (:0)


2.密码设置及密码文件

passwd命令

passwd - set user password
-l, lock
-u, unlock
-d, delete a passwd  for an account
-s,  this will output a short information about  the  status  of  the password for a given account.
--stdin,
    echo linux |passwd --stdin vfast    1 > 0

密码文件

/etc/passwd
   user account information.
       [用户名]:[密码]:[uid]:[gid]:[身份描述]:[主目录]:[登录shell] 
/etc/shadow
           secure user account information.
                 用户名:这是用户登录系统时使用的用户名,它在系统中是惟一的
                 口令:此字段存放加密的口令
                 最后一次修改的时间:标识从某一时刻起到用户最后一次修改口令的天数
                 最小时间间隔:两次修改口令之间的最小天数
                 最大时间间隔:口令保持有效的最多天数,即多少天后必须修改口令
                 警告时间:从系统开始警告到口令正式失效的天数
                 不活动时间:口令过期多少天后,该账号被禁用
                 失效时间:指示口令失效的绝对天数(从1970年1月1日开始计算)
                 标志:未使用

shadow文件

  目前,大多数unix/linux系统中,利用/etc/shadow文件存放用户账户的加密密码信息和密码的有效期信息。

user01:!!:18173:0:99999:7:::

  linux系统的shadow文件中,为每个用户提供一条记录,各个字段用“:”隔开,这9个字段按先后顺序分别是
注册名:密文密码:上次更改密码时间距1970年1月1日的天数:密码更改后不可以更改的天数:密码更改后必须再次更改的天数(即密码的有效期):密码失效前警告用户的天数:密码失效后距离账户被查封的天数:账户被查封时间距1970年1月的天数;保留字段


3.组的管理

groupadd

groupadd - create a new group
命令语法
groupadd [选项] 组名
命令选项
-g, --gid gid        指定gid
-r, --system        创建一个系统组
-o, --non-unique    此选项允许添加一个使用非唯一 gid 的组
注意:组名最长为 32 个字符

groupmod命令

groupmod - modify a group definition on the system
命令语法
groupmod [选项] 组名
命令选项
-g, --gid gid
-n, --new-name new_group  给组改名
-o, --non-unique 

例子  
1、将组名为test3的名字改为baism
groupmod test3 -n baism

groupdel命令

groupdel - delete a group


4.组密码及组配置文件

gpasswd命令

gpasswd - administer /etc/group and /etc/gshadow
-a, --add user                add user to group
-d, --delete user             remove user from group
-r, --remove-password         remove the group's password
-r, --restrict                restrict access to group to its members 限制用户登录该组,除了组成员。
-m, --members user,...        set the list of members of group
-a, --administrators admin,...
                                set the list of administrators for group
案例:
设置组root密码    #gpasswd root
用户组身份切换为root $newgrp root
组管理员设置 #gpasswd test -a user3
限制陌生用户切换到组 #gpasswd -r test
指定组的成员列表   # gpasswd test -m user3,user2

配置文件

/etc/group
  group account information.
      [组名]:[密码域]:[gid]:[组员列表] 
/etc/gshadow
  secure group account information.


5.相关文件

/etc/passwd
        用户账户信息。
/etc/shadow
        安全用户账户信息。
/etc/group
        组账户信息。
/etc/gshadow
         安全组账户信息。
/etc/default/useradd
           账户创建的默认值。
/etc/skel/
           包含默认文件的目录。
/etc/login.defs
           shadow 密码套件配置。


6.身份切换

su 命令--用户身份的切换

su [options...] [-] [user [args...]]
如:
su - root

su user01

  在大多的linux的版本中,都可以使用"su"或者"su -",但是"su"和"su -"有何差别:
  "su"只是切换了root身份,但shell环境仍然是普通用户的shell;而"su -"连用户和shell环境一起切换成root身份了。只有切换了shell环境才不会出现path环境变量错误。"su"切换成root用户以后,"pwd"一下,发现工作目录仍然是普通用户的工作目录;而用"su -"命令切换以后,工作目录变成root的工作目录了。用"echo $path"命令看一下"su"和"su -"以后的环境变量有何不同。以此类推,要从当前用户切换到其它用户也一样,应该使用"su -"命令。

当一个用户同时属于多个组,如何切换组身份 ?

newgrp 命令

  newgrp指令类似login指令,它是以相同的帐号,另一个群组名称,再次登入系统。欲使用newgrp指令切换群组,您必须是该群组的用户,若不指定群组名称,则newgrp指令会登入该用户名称的预设群组。



附加知识:文件与文件夹权限

linux 基本权限

linux基本权限
使用ls -l filename 命令查看文件或文件夹详细权限
ls -l
-rw-r--rw-  1 root root    22 jan  6 15:42 abc
- --- --- ---
第1个 -  文件类型
第2-4个 -  文件所有者的权限  root    rw-       r  读   w  写   x  执行
第5-7个 -  文件所属的组中的成员对其权限  root   r--
第8-10个 -  其他人   rw-
22 文件或文件夹的大小
jan  6 15:42   创建日期
abc  文件名

chmod命令

chmod - 改变文件的访问权限
命令语法
chmod [options] mode file...
命令选项
-r 递归设置权限,针对目录有效
mode  谁给什么权限
u(所有者)  g(所属组)   o(其他人)  a(所有人)
+ - =
权限  r 读  w 写   x 执行
数字权限
r 读 4
w 写 2
x 执行 1
chmod 760 abc

chown命令

chown 修改文件或文件夹所有者命令
命令语法
chown [options] user [:group] file...
命令选项
-r, 递归设置,针对文件夹
chown 新所有者  文件名
chown   新的所有者.新的所属组  文件名
-r, 递归修改

chgrp命令

chgrp  改变所属的组
命令语法
chgrp [选项] 组文件...
命令选项
-r, 递归设置权限,针对目录有效
chgrp 新所有组  文件名
chown   .新的所属组  文件名


linux特殊权限

linux特殊权限 7 777
suid 4    当一个二进制文件拥有suid权限后,当其他用户执行该二进制文件的时候,该二进制文件就会以他所有者的权限去执行
sgid 2   
  要求文件夹下的新建的子文件夹或者子文件继承父文件夹的属组
sticky bit  1
如果给文件夹 赋予粘连位  则该文件夹下的文件或文件夹只能由所有者及root删除


linux隐藏权限

chattr命令

chattr [+-=][asacdistu] 文件或文件名
 命令选项:
        + : 增加某个特殊参数,其他原本存在的参数不动。
        - : 删除某个特殊参数,其他原本存在的参数不动。
        = : 设置一定,且仅有后面接的参数
        a : 当设置了a属性时,这个文件(或目录)的存取时间atime(access)将不可被修改,可避免例如手提电脑有磁盘i/o错误的情况发生。
        s : 这个功能有点类似sync。就是将数据同步写入磁盘中。可以有效地避免数据流失。
        a : 设置a之后,这个文件将只能增加数据,而不能删除,只有root才能设置这个属性。
        c : 这个属性设置之后,将会自动将此文件“压缩”,在读取的时候将会自动解压缩,但在存储的时候,将会先进行压缩后再存储(对于大文件有用)。
        d : 当执行dump(备份)程序的时候,设置d属性将可使该文件(或目录)具有转储功效。
        i : i的作用很大。它可以让一个文件“不能被删除、改名、设置连接,也无法写入或新增数据”。对于系统安全性有相当大的帮助。
        j : 当使用ext3文件系统格式时,设置j属性将会使文件在写入时先记录在journal中。但是,当文件系统设置参数为data=journalled时,由于已经设置日志了,所以这个属性无效。
        s : 当文件设置了s参数时,它将会从这个硬盘空间完全删除。
        u : 与s相反,当使用u来设置文件时,则数据内容其实还存在磁盘中,可以用来还原删除.
            注意:这个属性设置上,比较常见的是a与i的设置值,而且很多设置值必须要root才能设置。

lsattr命令

lsattr 文件或文件名
 查看文件或文件夹的隐藏权限


linux file acl 权限

setfacl命令

setfacl - set file access control lists
命令语法
setfacl [选项] file...
命令选项
-m, 修改acl
-x, 删除acl
-b, 删除所有acl
-k, 删除默认的acl
-r, 递归

getfacl命令

getfacl 查看文件权限
命令语法
getfacl  file...