опции su - выполняющий команду как другой пользователь

Существует названный инструмент blkid (используйте его в качестве корня или с sudo),

# blkid /dev/sda1
/dev/sda1: LABEL="/" UUID="ee7cf0a0-1922-401b-a1ae-6ec9261484c0" SEC_TYPE="ext2" TYPE="ext3"

можно проверить эту ссылку на большее количество информации

84
23.08.2010, 19:08
2 ответа

Да. Вот --help:

$ su --help
Usage: su [options] [LOGIN]

Options:
  -c, --command COMMAND         pass COMMAND to the invoked shell
  -h, --help                    display this help message and exit
  -, -l, --login                make the shell a login shell
  -m, -p,
  --preserve-environment        do not reset environment variables, and
                                keep the same shell
  -s, --shell SHELL             use SHELL instead of the default in passwd

И некоторое тестирование (я использовал sudo поскольку я не знаю пароля для nobody учетная запись)

$ sudo su -c whoami nobody
[sudo] password for oli: 
nobody

Когда Ваша команда берет аргументы, необходимо заключить ее в кавычки. Если Вы не сделаете, то странные вещи произойдут. Здесь я — как корень — пытающийся создать каталог в/home/oli (как oli), не заключая полную команду в кавычки:

# su -c mkdir /home/oli/java oli
No passwd entry for user '/home/oli/java'

Это только читается mkdir как значение для -c флаг и это пытаются использовать /home/oli/java как имя пользователя. Если мы заключаем его в кавычки, это просто работает:

# su -c "mkdir /home/oli/java" oli
# stat /home/oli/java
  File: ‘/home/oli/java’
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 811h/2065d  Inode: 5817025     Links: 2
Access: (0775/drwxrwxr-x)  Uid: ( 1000/     oli)   Gid: ( 1000/     oli)
Access: 2016-02-16 10:49:15.467375905 +0000
Modify: 2016-02-16 10:49:15.467375905 +0000
Change: 2016-02-16 10:49:15.467375905 +0000
 Birth: -
86
27.01.2020, 19:30

Примечание: "Мне установили владельца сценария, поскольку корень" ничего не делает; даже если у Вас есть setuid набор битов, он все еще не работает


Принятие Вы на самом деле запускаете скрипт как корень, однако, можно использовать sudo. su прежде всего, для переключения пользователей, в то время как sudo для выполнения команд как другие пользователи. -u флаг позволяет Вам указать который пользователь выполнить команду как:

sudo -u hudson command
55
27.01.2020, 19:30

Теги

Похожие вопросы